[launchd-changes] [22910] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Mon Oct 23 10:46:26 PDT 2006
Revision: 22910
http://trac.macosforge.org/projects/launchd/changeset/22910
Author: zarzycki at apple.com
Date: 2006-10-23 10:46:23 -0700 (Mon, 23 Oct 2006)
Log Message:
-----------
First stage in the activation of the vproc APIs.
Modified Paths:
--------------
trunk/launchd/src/Makefile.am
trunk/launchd/src/Makefile.in
trunk/launchd/src/launchctl.c
trunk/launchd/src/launchd.c
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/liblaunch.c
trunk/launchd/src/protocol_job.defs
trunk/launchd/src/protocol_job_reply.defs
trunk/launchd/src/vproc.h
Added Paths:
-----------
trunk/launchd/src/libbootstrap.c
trunk/launchd/src/libvproc.c
trunk/launchd/src/vproc_priv.h
Removed Paths:
-------------
trunk/launchd/src/bootstrap_private.h
trunk/launchd/src/bootstrap_public.c
trunk/launchd/src/protocol_legacy.defs
Modified: trunk/launchd/src/Makefile.am
===================================================================
--- trunk/launchd/src/Makefile.am 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/Makefile.am 2006-10-23 17:46:23 UTC (rev 22910)
@@ -1,22 +1,22 @@
AM_CFLAGS = -no-cpp-precomp -F/System/Library/PrivateFrameworks -Wall -Wextra -Waggregate-return -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror -D__MigTypeCheck=1
-CLEANFILES = bootstrap.h bootstrapServer.c bootstrapUser.c bootstrapServer.h \
+CLEANFILES = protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h \
launchd_internal.h launchd_internalServer.h launchd_internalServer.h launchd_internalUser.c \
notifyServer.c notifyServer.h job_replyUser.c job_reply.h
-bootstrap.h bootstrapServer.c bootstrapUser.c bootstrapServer.h: $(srcdir)/protocol_legacy.defs
- mig $(MIGFLAGS) -sheader bootstrapServer.h $(srcdir)/protocol_legacy.defs
+protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h: $(srcdir)/protocol_job.defs
+ mig $(MIGFLAGS) -sheader protocol_vprocServer.h $(srcdir)/protocol_job.defs
if LIBS_ONLY
noinst_LIBRARIES = liblaunch.a liblaunch_profile.a
-liblaunch_a_SOURCES = liblaunch.c bootstrap_public.c
+liblaunch_a_SOURCES = liblaunch.c libvproc.c
liblaunch_profile_a_CFLAGS = -pg $(AM_CFLAGS)
-liblaunch_profile_a_SOURCES = liblaunch.c bootstrap_public.c
+liblaunch_profile_a_SOURCES = liblaunch.c libvproc.c
-$(srcdir)/bootstrap_public.c:: bootstrap.h
+$(srcdir)/libvproc.c:: protocol_vproc.h
install-data-hook:
mkdir -p $(DESTDIR)/usr/local/lib/system
@@ -43,10 +43,10 @@
launchd_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS) -Wno-unused-parameter -fvisibility=hidden
launchd_LDFLAGS = -lbsm
-launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c init.c bootstrapServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c
+launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c init.c protocol_vprocServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c
launchd_runtime.c:: notifyServer.h launchd_internal.h
-launchd_core_logic.c:: bootstrap.h job_reply.h bootstrap.h bootstrapServer.h
+launchd_core_logic.c:: protocol_vproc.h job_reply.h protocol_vprocServer.h
launchproxy_LDFLAGS = -weak_framework Security
Modified: trunk/launchd/src/Makefile.in
===================================================================
--- trunk/launchd/src/Makefile.in 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/Makefile.in 2006-10-23 17:46:23 UTC (rev 22910)
@@ -56,16 +56,16 @@
ARFLAGS = cru
liblaunch_a_AR = $(AR) $(ARFLAGS)
liblaunch_a_LIBADD =
-am__liblaunch_a_SOURCES_DIST = liblaunch.c bootstrap_public.c
+am__liblaunch_a_SOURCES_DIST = liblaunch.c libvproc.c
@LIBS_ONLY_TRUE at am_liblaunch_a_OBJECTS = liblaunch.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ bootstrap_public.$(OBJEXT)
+ at LIBS_ONLY_TRUE@ libvproc.$(OBJEXT)
liblaunch_a_OBJECTS = $(am_liblaunch_a_OBJECTS)
liblaunch_profile_a_AR = $(AR) $(ARFLAGS)
liblaunch_profile_a_LIBADD =
-am__liblaunch_profile_a_SOURCES_DIST = liblaunch.c bootstrap_public.c
+am__liblaunch_profile_a_SOURCES_DIST = liblaunch.c libvproc.c
@LIBS_ONLY_TRUE at am_liblaunch_profile_a_OBJECTS = \
@LIBS_ONLY_TRUE@ liblaunch_profile_a-liblaunch.$(OBJEXT) \
- at LIBS_ONLY_TRUE@ liblaunch_profile_a-bootstrap_public.$(OBJEXT)
+ at LIBS_ONLY_TRUE@ liblaunch_profile_a-libvproc.$(OBJEXT)
liblaunch_profile_a_OBJECTS = $(am_liblaunch_profile_a_OBJECTS)
am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(libexecdir)" \
"$(DESTDIR)$(sbindir)" "$(DESTDIR)$(sbindir)" \
@@ -86,14 +86,14 @@
launchctl_OBJECTS = launchctl-launchctl.$(OBJEXT)
launchctl_LDADD = $(LDADD)
am__launchd_SOURCES_DIST = launchd.c launchd_core_logic.c \
- launchd_unix_ipc.c init.c bootstrapServer.c notifyServer.c \
- launchd_internalUser.c launchd_internalServer.c \
+ launchd_unix_ipc.c init.c protocol_vprocServer.c \
+ notifyServer.c launchd_internalUser.c launchd_internalServer.c \
job_replyUser.c launchd_runtime.c
@LIBS_ONLY_FALSE at am_launchd_OBJECTS = launchd-launchd.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-launchd_core_logic.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-launchd_unix_ipc.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-init.$(OBJEXT) \
- at LIBS_ONLY_FALSE@ launchd-bootstrapServer.$(OBJEXT) \
+ at LIBS_ONLY_FALSE@ launchd-protocol_vprocServer.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-notifyServer.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-launchd_internalUser.$(OBJEXT) \
@LIBS_ONLY_FALSE@ launchd-launchd_internalServer.$(OBJEXT) \
@@ -222,14 +222,14 @@
sysconfdir = @sysconfdir@
target_alias = @target_alias@
AM_CFLAGS = -no-cpp-precomp -F/System/Library/PrivateFrameworks -Wall -Wextra -Waggregate-return -Wshadow -Wmissing-prototypes -Wmissing-declarations -Werror -D__MigTypeCheck=1
-CLEANFILES = bootstrap.h bootstrapServer.c bootstrapUser.c bootstrapServer.h \
+CLEANFILES = protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h \
launchd_internal.h launchd_internalServer.h launchd_internalServer.h launchd_internalUser.c \
notifyServer.c notifyServer.h job_replyUser.c job_reply.h
@LIBS_ONLY_TRUE at noinst_LIBRARIES = liblaunch.a liblaunch_profile.a
- at LIBS_ONLY_TRUE@liblaunch_a_SOURCES = liblaunch.c bootstrap_public.c
+ at LIBS_ONLY_TRUE@liblaunch_a_SOURCES = liblaunch.c libvproc.c
@LIBS_ONLY_TRUE at liblaunch_profile_a_CFLAGS = -pg $(AM_CFLAGS)
- at LIBS_ONLY_TRUE@liblaunch_profile_a_SOURCES = liblaunch.c bootstrap_public.c
+ at LIBS_ONLY_TRUE@liblaunch_profile_a_SOURCES = liblaunch.c libvproc.c
@LIBS_ONLY_FALSE at sbin_SCRIPTS = service
@LIBS_ONLY_FALSE at sysconf_DATA = hostconfig rc.common rc.netboot rc.shutdown
@LIBS_ONLY_FALSE at launchctl_CFLAGS = $(AM_CFLAGS) -fvisibility=hidden -I/System/Library/Frameworks/System.framework/PrivateHeaders
@@ -239,7 +239,7 @@
@LIBS_ONLY_FALSE at SystemStarter_SOURCES = StartupItems.c IPC.c SystemStarter.c
@LIBS_ONLY_FALSE at launchd_CFLAGS = -mdynamic-no-pic $(AM_CFLAGS) -Wno-unused-parameter -fvisibility=hidden
@LIBS_ONLY_FALSE at launchd_LDFLAGS = -lbsm
- at LIBS_ONLY_FALSE@launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c init.c bootstrapServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c
+ at LIBS_ONLY_FALSE@launchd_SOURCES = launchd.c launchd_core_logic.c launchd_unix_ipc.c init.c protocol_vprocServer.c notifyServer.c launchd_internalUser.c launchd_internalServer.c job_replyUser.c launchd_runtime.c
@LIBS_ONLY_FALSE at launchproxy_LDFLAGS = -weak_framework Security
@LIBS_ONLY_FALSE at man1_MANS = wait4path.1 launchctl.1
@LIBS_ONLY_FALSE at man5_MANS = launchd.plist.5 launchd.conf.5
@@ -420,9 +420,7 @@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-IPC.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-StartupItems.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/SystemStarter-SystemStarter.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/bootstrap_public.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchctl-launchctl.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-bootstrapServer.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-init.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-job_replyUser.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd.Po at am__quote@
@@ -432,10 +430,12 @@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_runtime.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-launchd_unix_ipc.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-notifyServer.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchd-protocol_vprocServer.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/launchproxy.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch.Po at am__quote@
- at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-liblaunch.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/liblaunch_profile_a-libvproc.Po at am__quote@
+ at AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/libvproc.Po at am__quote@
@AMDEP_TRUE@@am__include@ @am__quote at ./$(DEPDIR)/wait4path.Po at am__quote@
.c.o:
@@ -466,19 +466,19 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-liblaunch.obj `if test -f 'liblaunch.c'; then $(CYGPATH_W) 'liblaunch.c'; else $(CYGPATH_W) '$(srcdir)/liblaunch.c'; fi`
-liblaunch_profile_a-bootstrap_public.o: bootstrap_public.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-bootstrap_public.o -MD -MP -MF "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo" -c -o liblaunch_profile_a-bootstrap_public.o `test -f 'bootstrap_public.c' || echo '$(srcdir)/'`bootstrap_public.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo" "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Po"; else rm -f "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bootstrap_public.c' object='liblaunch_profile_a-bootstrap_public.o' libtool=no @AMDEPBACKSLASH@
+liblaunch_profile_a-libvproc.o: libvproc.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libvproc.o -MD -MP -MF "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo" -c -o liblaunch_profile_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo" "$(DEPDIR)/liblaunch_profile_a-libvproc.Po"; else rm -f "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_profile_a-libvproc.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-bootstrap_public.o `test -f 'bootstrap_public.c' || echo '$(srcdir)/'`bootstrap_public.c
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libvproc.o `test -f 'libvproc.c' || echo '$(srcdir)/'`libvproc.c
-liblaunch_profile_a-bootstrap_public.obj: bootstrap_public.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-bootstrap_public.obj -MD -MP -MF "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo" -c -o liblaunch_profile_a-bootstrap_public.obj `if test -f 'bootstrap_public.c'; then $(CYGPATH_W) 'bootstrap_public.c'; else $(CYGPATH_W) '$(srcdir)/bootstrap_public.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo" "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Po"; else rm -f "$(DEPDIR)/liblaunch_profile_a-bootstrap_public.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bootstrap_public.c' object='liblaunch_profile_a-bootstrap_public.obj' libtool=no @AMDEPBACKSLASH@
+liblaunch_profile_a-libvproc.obj: libvproc.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -MT liblaunch_profile_a-libvproc.obj -MD -MP -MF "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo" -c -o liblaunch_profile_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo" "$(DEPDIR)/liblaunch_profile_a-libvproc.Po"; else rm -f "$(DEPDIR)/liblaunch_profile_a-libvproc.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='libvproc.c' object='liblaunch_profile_a-libvproc.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-bootstrap_public.obj `if test -f 'bootstrap_public.c'; then $(CYGPATH_W) 'bootstrap_public.c'; else $(CYGPATH_W) '$(srcdir)/bootstrap_public.c'; fi`
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(liblaunch_profile_a_CFLAGS) $(CFLAGS) -c -o liblaunch_profile_a-libvproc.obj `if test -f 'libvproc.c'; then $(CYGPATH_W) 'libvproc.c'; else $(CYGPATH_W) '$(srcdir)/libvproc.c'; fi`
SystemStarter-StartupItems.o: StartupItems.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(SystemStarter_CFLAGS) $(CFLAGS) -MT SystemStarter-StartupItems.o -MD -MP -MF "$(DEPDIR)/SystemStarter-StartupItems.Tpo" -c -o SystemStarter-StartupItems.o `test -f 'StartupItems.c' || echo '$(srcdir)/'`StartupItems.c; \
@@ -592,19 +592,19 @@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-init.obj `if test -f 'init.c'; then $(CYGPATH_W) 'init.c'; else $(CYGPATH_W) '$(srcdir)/init.c'; fi`
-launchd-bootstrapServer.o: bootstrapServer.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-bootstrapServer.o -MD -MP -MF "$(DEPDIR)/launchd-bootstrapServer.Tpo" -c -o launchd-bootstrapServer.o `test -f 'bootstrapServer.c' || echo '$(srcdir)/'`bootstrapServer.c; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/launchd-bootstrapServer.Tpo" "$(DEPDIR)/launchd-bootstrapServer.Po"; else rm -f "$(DEPDIR)/launchd-bootstrapServer.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bootstrapServer.c' object='launchd-bootstrapServer.o' libtool=no @AMDEPBACKSLASH@
+launchd-protocol_vprocServer.o: protocol_vprocServer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-protocol_vprocServer.o -MD -MP -MF "$(DEPDIR)/launchd-protocol_vprocServer.Tpo" -c -o launchd-protocol_vprocServer.o `test -f 'protocol_vprocServer.c' || echo '$(srcdir)/'`protocol_vprocServer.c; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/launchd-protocol_vprocServer.Tpo" "$(DEPDIR)/launchd-protocol_vprocServer.Po"; else rm -f "$(DEPDIR)/launchd-protocol_vprocServer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocServer.c' object='launchd-protocol_vprocServer.o' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-bootstrapServer.o `test -f 'bootstrapServer.c' || echo '$(srcdir)/'`bootstrapServer.c
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-protocol_vprocServer.o `test -f 'protocol_vprocServer.c' || echo '$(srcdir)/'`protocol_vprocServer.c
-launchd-bootstrapServer.obj: bootstrapServer.c
- at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-bootstrapServer.obj -MD -MP -MF "$(DEPDIR)/launchd-bootstrapServer.Tpo" -c -o launchd-bootstrapServer.obj `if test -f 'bootstrapServer.c'; then $(CYGPATH_W) 'bootstrapServer.c'; else $(CYGPATH_W) '$(srcdir)/bootstrapServer.c'; fi`; \
- at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/launchd-bootstrapServer.Tpo" "$(DEPDIR)/launchd-bootstrapServer.Po"; else rm -f "$(DEPDIR)/launchd-bootstrapServer.Tpo"; exit 1; fi
- at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='bootstrapServer.c' object='launchd-bootstrapServer.obj' libtool=no @AMDEPBACKSLASH@
+launchd-protocol_vprocServer.obj: protocol_vprocServer.c
+ at am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-protocol_vprocServer.obj -MD -MP -MF "$(DEPDIR)/launchd-protocol_vprocServer.Tpo" -c -o launchd-protocol_vprocServer.obj `if test -f 'protocol_vprocServer.c'; then $(CYGPATH_W) 'protocol_vprocServer.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocServer.c'; fi`; \
+ at am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/launchd-protocol_vprocServer.Tpo" "$(DEPDIR)/launchd-protocol_vprocServer.Po"; else rm -f "$(DEPDIR)/launchd-protocol_vprocServer.Tpo"; exit 1; fi
+ at AMDEP_TRUE@@am__fastdepCC_FALSE@ source='protocol_vprocServer.c' object='launchd-protocol_vprocServer.obj' libtool=no @AMDEPBACKSLASH@
@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
- at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-bootstrapServer.obj `if test -f 'bootstrapServer.c'; then $(CYGPATH_W) 'bootstrapServer.c'; else $(CYGPATH_W) '$(srcdir)/bootstrapServer.c'; fi`
+ at am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -c -o launchd-protocol_vprocServer.obj `if test -f 'protocol_vprocServer.c'; then $(CYGPATH_W) 'protocol_vprocServer.c'; else $(CYGPATH_W) '$(srcdir)/protocol_vprocServer.c'; fi`
launchd-notifyServer.o: notifyServer.c
@am__fastdepCC_TRUE@ if $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(launchd_CFLAGS) $(CFLAGS) -MT launchd-notifyServer.o -MD -MP -MF "$(DEPDIR)/launchd-notifyServer.Tpo" -c -o launchd-notifyServer.o `test -f 'notifyServer.c' || echo '$(srcdir)/'`notifyServer.c; \
@@ -1013,10 +1013,10 @@
uninstall-sbinSCRIPTS uninstall-sysconfDATA
-bootstrap.h bootstrapServer.c bootstrapUser.c bootstrapServer.h: $(srcdir)/protocol_legacy.defs
- mig $(MIGFLAGS) -sheader bootstrapServer.h $(srcdir)/protocol_legacy.defs
+protocol_vproc.h protocol_vprocServer.c protocol_vprocUser.c protocol_vprocServer.h: $(srcdir)/protocol_job.defs
+ mig $(MIGFLAGS) -sheader protocol_vprocServer.h $(srcdir)/protocol_job.defs
- at LIBS_ONLY_TRUE@$(srcdir)/bootstrap_public.c:: bootstrap.h
+ at LIBS_ONLY_TRUE@$(srcdir)/libvproc.c:: protocol_vproc.h
@LIBS_ONLY_TRUE at install-data-hook:
@LIBS_ONLY_TRUE@ mkdir -p $(DESTDIR)/usr/local/lib/system
@@ -1025,7 +1025,7 @@
@LIBS_ONLY_TRUE@ cp liblaunch_profile.a $(DESTDIR)/usr/local/lib/system/liblaunch_profile.a
@LIBS_ONLY_FALSE at launchd_runtime.c:: notifyServer.h launchd_internal.h
- at LIBS_ONLY_FALSE@launchd_core_logic.c:: bootstrap.h job_reply.h bootstrap.h bootstrapServer.h
+ at LIBS_ONLY_FALSE@launchd_core_logic.c:: protocol_vproc.h job_reply.h protocol_vprocServer.h
@LIBS_ONLY_FALSE at notifyServer.c notifyServer.h: /usr/include/mach/notify.defs
@LIBS_ONLY_FALSE@ mig $(MIGFLAGS) -header /dev/null -user /dev/null -sheader notifyServer.h /usr/include/mach/notify.defs
Deleted: trunk/launchd/src/bootstrap_private.h
===================================================================
--- trunk/launchd/src/bootstrap_private.h 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/bootstrap_private.h 2006-10-23 17:46:23 UTC (rev 22910)
@@ -1,62 +0,0 @@
-#ifndef _BOOTSTRAP_PRIVATE_H_
-#define _BOOTSTRAP_PRIVATE_H_
-/*
- * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-typedef char * _internal_string_t;
-typedef mach_port_t vproc_mig_t;
-
-#ifdef bootstrap_MSG_COUNT
-/* HACK */
-#include "launchd_core_logic.h"
-#endif
-
-#define SPAWN_HAS_PATH 0x0001
-#define SPAWN_HAS_WDIR 0x0002
-#define SPAWN_HAS_UMASK 0x0004
-#define SPAWN_WANTS_WAIT4DEBUGGER 0x0008
-#define SPAWN_WANTS_FORCE_PPC 0x0010
-
-kern_return_t
-_launchd_to_launchd(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright,
- name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
- mach_port_array_t *ports, mach_msg_type_number_t *portCnt);
-
-kern_return_t bootstrap_getsocket(mach_port_t bp, name_t);
-
-
-kern_return_t
-bootstrap_look_up_array(
- mach_port_t bp,
- name_array_t service_names,
- mach_msg_type_number_t service_namesCnt,
- mach_port_array_t *sps,
- mach_msg_type_number_t *service_portsCnt,
- boolean_t *all_services_known);
-
-kern_return_t
-bootstrap_info(
- mach_port_t bp,
- name_array_t *service_names,
- mach_msg_type_number_t *service_namesCnt,
- bootstrap_status_array_t *service_active,
- mach_msg_type_number_t *service_activeCnt);
-
-#endif
Deleted: trunk/launchd/src/bootstrap_public.c
===================================================================
--- trunk/launchd/src/bootstrap_public.c 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/bootstrap_public.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -1,291 +0,0 @@
-/*
- * Copyright (c) 1999-2005 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-
-#include <mach/mach.h>
-#include <mach/vm_map.h>
-
-#include "bootstrap_public.h"
-#include "bootstrap_private.h"
-#include "launch.h"
-#include "launch_priv.h"
-
-#define mig_external static
-#include "bootstrap.h"
-#include "bootstrapUser.c"
-
-#include <sys/param.h>
-#include <stdlib.h>
-#include <errno.h>
-
-kern_return_t
-_launchd_to_launchd(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright,
- name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
- mach_port_array_t *ports, mach_msg_type_number_t *portCnt)
-{
- return vproc_mig_transfer_subset(bp, reqport, rcvright, service_names, service_namesCnt, ports, portCnt);
-}
-
-pid_t
-_spawn_via_launchd(const char *label, const char *const *argv, const struct spawn_via_launchd_attr *spawn_attrs, int struct_version)
-{
- kern_return_t kr;
- const char *const *tmpp;
- size_t len, buf_len = strlen(label) + 1;
- char *buf = strdup(label);
- uint64_t flags = 0;
- uint32_t argc = 0;
- uint32_t envc = 0;
- pid_t p = -1;
- mode_t u_mask = CMASK;
- mach_port_t obsvr_port = MACH_PORT_NULL;
-
- for (tmpp = argv; *tmpp; tmpp++) {
- argc++;
- len = strlen(*tmpp) + 1;
- buf = reallocf(buf, buf_len + len);
- strcpy(buf + buf_len, *tmpp);
- buf_len += len;
- }
-
- if (spawn_attrs) switch (struct_version) {
- case 0:
- if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_STOPPED) {
- flags |= SPAWN_WANTS_WAIT4DEBUGGER;
- }
- if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_FORCE_PPC) {
- flags |= SPAWN_WANTS_FORCE_PPC;
- }
-
- if (spawn_attrs->spawn_env) {
- for (tmpp = spawn_attrs->spawn_env; *tmpp; tmpp++) {
- envc++;
- len = strlen(*tmpp) + 1;
- buf = reallocf(buf, buf_len + len);
- strcpy(buf + buf_len, *tmpp);
- buf_len += len;
- }
- }
-
- if (spawn_attrs->spawn_path) {
- flags |= SPAWN_HAS_PATH;
- len = strlen(spawn_attrs->spawn_path) + 1;
- buf = reallocf(buf, buf_len + len);
- strcpy(buf + buf_len, spawn_attrs->spawn_path);
- buf_len += len;
- }
-
- if (spawn_attrs->spawn_chdir) {
- flags |= SPAWN_HAS_WDIR;
- len = strlen(spawn_attrs->spawn_chdir) + 1;
- buf = reallocf(buf, buf_len + len);
- strcpy(buf + buf_len, spawn_attrs->spawn_chdir);
- buf_len += len;
- }
-
- if (spawn_attrs->spawn_umask) {
- flags |= SPAWN_HAS_UMASK;
- u_mask = *spawn_attrs->spawn_umask;
- }
-
- break;
- default:
- break;
- }
-
- kr = vproc_mig_spawn(bootstrap_port, buf, buf_len, argc, envc, flags, u_mask, &p, &obsvr_port);
-
- free(buf);
-
- if (kr == BOOTSTRAP_SUCCESS) {
- if (spawn_attrs && spawn_attrs->spawn_observer_port) {
- *spawn_attrs->spawn_observer_port = obsvr_port;
- } else {
- mach_port_deallocate(mach_task_self(), obsvr_port);
- }
- return p;
- }
-
- switch (kr) {
- case BOOTSTRAP_NOT_PRIVILEGED:
- errno = EPERM; break;
- case BOOTSTRAP_NO_MEMORY:
- errno = ENOMEM; break;
- default:
- errno = EINVAL; break;
- }
- return -1;
-}
-
-kern_return_t
-mpm_wait(mach_port_t ajob, int *wstatus)
-{
- return vproc_mig_wait(ajob, wstatus);
-}
-
-kern_return_t
-mpm_uncork_fork(mach_port_t ajob)
-{
- return vproc_mig_uncork_fork(ajob);
-}
-
-kern_return_t
-bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand, mach_port_t *server_port)
-{
- return vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port);
-}
-
-kern_return_t
-bootstrap_subset(mach_port_t bp, mach_port_t requestor_port, mach_port_t *subset_port)
-{
- return vproc_mig_subset(bp, requestor_port, subset_port);
-}
-
-kern_return_t
-bootstrap_unprivileged(mach_port_t bp, mach_port_t *unpriv_port)
-{
- kern_return_t kr;
-
- *unpriv_port = MACH_PORT_NULL;
-
- kr = mach_port_mod_refs(mach_task_self(), bp, MACH_PORT_RIGHT_SEND, 1);
-
- if (kr == KERN_SUCCESS) {
- *unpriv_port = bp;
- }
-
- return kr;
-}
-
-kern_return_t
-bootstrap_getsocket(mach_port_t bp, name_t sockpath)
-{
- return vproc_mig_getsocket(bp, sockpath);
-}
-
-kern_return_t
-bootstrap_parent(mach_port_t bp, mach_port_t *parent_port)
-{
- return vproc_mig_parent(bp, parent_port);
-}
-
-kern_return_t
-bootstrap_register(mach_port_t bp, name_t service_name, mach_port_t sp)
-{
- return vproc_mig_register(bp, service_name, sp);
-}
-
-kern_return_t
-bootstrap_create_service(mach_port_t bp, name_t service_name, mach_port_t *sp)
-{
- return vproc_mig_create_service(bp, service_name, sp);
-}
-
-kern_return_t
-bootstrap_check_in(mach_port_t bp, name_t service_name, mach_port_t *sp)
-{
- return vproc_mig_check_in(bp, service_name, sp);
-}
-
-kern_return_t
-bootstrap_look_up(mach_port_t bp, name_t service_name, mach_port_t *sp)
-{
- return vproc_mig_look_up(bp, service_name, sp);
-}
-
-kern_return_t
-bootstrap_look_up_array(mach_port_t bp,
- name_array_t names, mach_msg_type_number_t name_cnt,
- mach_port_array_t *ports, mach_msg_type_number_t *port_cnt,
- boolean_t *all)
-{
- unsigned int i;
- kern_return_t r;
-
- if (name_cnt > BOOTSTRAP_MAX_LOOKUP_COUNT)
- return BOOTSTRAP_BAD_COUNT;
-
- *port_cnt = name_cnt;
-
- r = vm_allocate(mach_task_self(), (vm_address_t *)&ports, name_cnt * sizeof(mach_port_t), true);
-
- if (r != KERN_SUCCESS)
- return r;
-
- *all = true;
-
- for (i = 0; i < name_cnt; i++) {
- if (bootstrap_look_up(bp, names[i], &((*ports)[i])) == BOOTSTRAP_SUCCESS)
- continue;
- *all = false;
- ports[i] = MACH_PORT_NULL;
- }
-
- return BOOTSTRAP_SUCCESS;
-}
-
-kern_return_t
-bootstrap_status(mach_port_t bp, name_t service_name, bootstrap_status_t *service_active)
-{
- mach_port_t p;
-
- if (bootstrap_check_in(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
- mach_port_mod_refs(mach_task_self(), p, MACH_PORT_RIGHT_RECEIVE, -1);
- *service_active = BOOTSTRAP_STATUS_ON_DEMAND;
- return BOOTSTRAP_SUCCESS;
- } else if (bootstrap_look_up(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
- mach_port_deallocate(mach_task_self(), p);
- *service_active = BOOTSTRAP_STATUS_ACTIVE;
- return BOOTSTRAP_SUCCESS;
- }
-
- return BOOTSTRAP_UNKNOWN_SERVICE;
-}
-
-kern_return_t
-bootstrap_info(mach_port_t bp,
- name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
- bootstrap_status_array_t *service_active, mach_msg_type_number_t *service_activeCnt)
-{
- return vproc_mig_info(bp, service_names, service_namesCnt,
- service_active, service_activeCnt);
-}
-
-
-const char *
-bootstrap_strerror(kern_return_t r)
-{
- switch (r) {
- case BOOTSTRAP_SUCCESS:
- return "Success";
- case BOOTSTRAP_NOT_PRIVILEGED:
- return "Permission denied";
- case BOOTSTRAP_NAME_IN_USE:
- case BOOTSTRAP_SERVICE_ACTIVE:
- return "Service name already exists";
- case BOOTSTRAP_UNKNOWN_SERVICE:
- return "Unknown service name";
- case BOOTSTRAP_BAD_COUNT:
- return "Too many lookups were requested in one request";
- case BOOTSTRAP_NO_MEMORY:
- return "Out of memory";
- default:
- return mach_error_string(r);
- }
-}
Modified: trunk/launchd/src/launchctl.c
===================================================================
--- trunk/launchd/src/launchctl.c 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/launchctl.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -60,7 +60,7 @@
#include <utmpx.h>
#include "bootstrap_public.h"
-#include "bootstrap_private.h"
+#include "vproc_priv.h"
#include "launch.h"
#include "launch_priv.h"
Modified: trunk/launchd/src/launchd.c
===================================================================
--- trunk/launchd/src/launchd.c 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/launchd.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -62,7 +62,7 @@
#include <setjmp.h>
#include "bootstrap_public.h"
-#include "bootstrap_private.h"
+#include "vproc_priv.h"
#include "launch.h"
#include "launch_priv.h"
#include "launchd.h"
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/launchd_core_logic.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -77,9 +77,9 @@
#include "launchd_core_logic.h"
#include "launchd_unix_ipc.h"
#include "bootstrap_public.h"
-#include "bootstrap_private.h"
-#include "bootstrap.h"
-#include "bootstrapServer.h"
+#include "vproc_priv.h"
+#include "protocol_vproc.h"
+#include "protocol_vprocServer.h"
#include "job_reply.h"
#define LAUNCHD_MIN_JOB_RUN_TIME 10
@@ -661,12 +661,12 @@
}
/* Sigh... at the moment, MIG has maxsize == sizeof(reply union) */
- mxmsgsz = sizeof(union __RequestUnion__job_mig_bootstrap_subsystem);
- if (job_mig_bootstrap_subsystem.maxsize > mxmsgsz) {
- mxmsgsz = job_mig_bootstrap_subsystem.maxsize;
+ mxmsgsz = sizeof(union __RequestUnion__job_mig_protocol_vproc_subsystem);
+ if (job_mig_protocol_vproc_subsystem.maxsize > mxmsgsz) {
+ mxmsgsz = job_mig_protocol_vproc_subsystem.maxsize;
}
- if (!job_assumes(j, runtime_add_mport(j->bs_port, bootstrap_server, mxmsgsz) == KERN_SUCCESS)) {
+ if (!job_assumes(j, runtime_add_mport(j->bs_port, protocol_vproc_server, mxmsgsz) == KERN_SUCCESS)) {
goto out_bad2;
}
@@ -2914,12 +2914,12 @@
sprintf(j->label, "%d", MACH_PORT_INDEX(j->bs_port));
/* Sigh... at the moment, MIG has maxsize == sizeof(reply union) */
- mxmsgsz = sizeof(union __RequestUnion__job_mig_bootstrap_subsystem);
- if (job_mig_bootstrap_subsystem.maxsize > mxmsgsz) {
- mxmsgsz = job_mig_bootstrap_subsystem.maxsize;
+ mxmsgsz = sizeof(union __RequestUnion__job_mig_protocol_vproc_subsystem);
+ if (job_mig_protocol_vproc_subsystem.maxsize > mxmsgsz) {
+ mxmsgsz = job_mig_protocol_vproc_subsystem.maxsize;
}
- if (!job_assumes(j, runtime_add_mport(j->bs_port, bootstrap_server, mxmsgsz) == KERN_SUCCESS)) {
+ if (!job_assumes(j, runtime_add_mport(j->bs_port, protocol_vproc_server, mxmsgsz) == KERN_SUCCESS)) {
goto out_bad;
}
@@ -3842,6 +3842,11 @@
return BOOTSTRAP_NOT_PRIVILEGED;
}
+ if (!j->legacy_mach_job) {
+ job_log(j, LOG_ERR, "bootstrap_create_service() is only allowed against legacy Mach jobs: %s", servicename);
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
ms = job_lookup_service(j, servicename, false);
if (ms) {
job_log(j, LOG_DEBUG, "Mach service creation attempt for failed. Already exists: %s", servicename);
Copied: trunk/launchd/src/libbootstrap.c (from rev 22901, trunk/launchd/src/bootstrap_public.c)
===================================================================
--- trunk/launchd/src/libbootstrap.c (rev 0)
+++ trunk/launchd/src/libbootstrap.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 1999-2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#include <mach/mach.h>
+#include <mach/vm_map.h>
+
+#include "bootstrap_public.h"
+#include "bootstrap_private.h"
+#include "launch.h"
+#include "launch_priv.h"
+
+#define mig_external static
+#include "bootstrap.h"
+#include "bootstrapUser.c"
+
+#include <sys/param.h>
+#include <stdlib.h>
+#include <errno.h>
+
+kern_return_t
+_launchd_to_launchd(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright,
+ name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
+ mach_port_array_t *ports, mach_msg_type_number_t *portCnt)
+{
+ return vproc_mig_transfer_subset(bp, reqport, rcvright, service_names, service_namesCnt, ports, portCnt);
+}
+
+pid_t
+_spawn_via_launchd(const char *label, const char *const *argv, const struct spawn_via_launchd_attr *spawn_attrs, int struct_version)
+{
+ kern_return_t kr;
+ const char *const *tmpp;
+ size_t len, buf_len = strlen(label) + 1;
+ char *buf = strdup(label);
+ uint64_t flags = 0;
+ uint32_t argc = 0;
+ uint32_t envc = 0;
+ pid_t p = -1;
+ mode_t u_mask = CMASK;
+ mach_port_t obsvr_port = MACH_PORT_NULL;
+
+ for (tmpp = argv; *tmpp; tmpp++) {
+ argc++;
+ len = strlen(*tmpp) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, *tmpp);
+ buf_len += len;
+ }
+
+ if (spawn_attrs) switch (struct_version) {
+ case 0:
+ if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_STOPPED) {
+ flags |= SPAWN_WANTS_WAIT4DEBUGGER;
+ }
+ if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_FORCE_PPC) {
+ flags |= SPAWN_WANTS_FORCE_PPC;
+ }
+
+ if (spawn_attrs->spawn_env) {
+ for (tmpp = spawn_attrs->spawn_env; *tmpp; tmpp++) {
+ envc++;
+ len = strlen(*tmpp) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, *tmpp);
+ buf_len += len;
+ }
+ }
+
+ if (spawn_attrs->spawn_path) {
+ flags |= SPAWN_HAS_PATH;
+ len = strlen(spawn_attrs->spawn_path) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, spawn_attrs->spawn_path);
+ buf_len += len;
+ }
+
+ if (spawn_attrs->spawn_chdir) {
+ flags |= SPAWN_HAS_WDIR;
+ len = strlen(spawn_attrs->spawn_chdir) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, spawn_attrs->spawn_chdir);
+ buf_len += len;
+ }
+
+ if (spawn_attrs->spawn_umask) {
+ flags |= SPAWN_HAS_UMASK;
+ u_mask = *spawn_attrs->spawn_umask;
+ }
+
+ break;
+ default:
+ break;
+ }
+
+ kr = vproc_mig_spawn(bootstrap_port, buf, buf_len, argc, envc, flags, u_mask, &p, &obsvr_port);
+
+ free(buf);
+
+ if (kr == BOOTSTRAP_SUCCESS) {
+ if (spawn_attrs && spawn_attrs->spawn_observer_port) {
+ *spawn_attrs->spawn_observer_port = obsvr_port;
+ } else {
+ mach_port_deallocate(mach_task_self(), obsvr_port);
+ }
+ return p;
+ }
+
+ switch (kr) {
+ case BOOTSTRAP_NOT_PRIVILEGED:
+ errno = EPERM; break;
+ case BOOTSTRAP_NO_MEMORY:
+ errno = ENOMEM; break;
+ default:
+ errno = EINVAL; break;
+ }
+ return -1;
+}
+
+kern_return_t
+mpm_wait(mach_port_t ajob, int *wstatus)
+{
+ return vproc_mig_wait(ajob, wstatus);
+}
+
+kern_return_t
+mpm_uncork_fork(mach_port_t ajob)
+{
+ return vproc_mig_uncork_fork(ajob);
+}
+
+kern_return_t
+bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand, mach_port_t *server_port)
+{
+ return vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port);
+}
+
+kern_return_t
+bootstrap_subset(mach_port_t bp, mach_port_t requestor_port, mach_port_t *subset_port)
+{
+ return vproc_mig_subset(bp, requestor_port, subset_port);
+}
+
+kern_return_t
+bootstrap_unprivileged(mach_port_t bp, mach_port_t *unpriv_port)
+{
+ kern_return_t kr;
+
+ *unpriv_port = MACH_PORT_NULL;
+
+ kr = mach_port_mod_refs(mach_task_self(), bp, MACH_PORT_RIGHT_SEND, 1);
+
+ if (kr == KERN_SUCCESS) {
+ *unpriv_port = bp;
+ }
+
+ return kr;
+}
+
+kern_return_t
+bootstrap_getsocket(mach_port_t bp, name_t sockpath)
+{
+ return vproc_mig_getsocket(bp, sockpath);
+}
+
+kern_return_t
+bootstrap_parent(mach_port_t bp, mach_port_t *parent_port)
+{
+ return vproc_mig_parent(bp, parent_port);
+}
+
+kern_return_t
+bootstrap_register(mach_port_t bp, name_t service_name, mach_port_t sp)
+{
+ return vproc_mig_register(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_create_service(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_create_service(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_check_in(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_check_in(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_look_up(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_look_up(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_look_up_array(mach_port_t bp,
+ name_array_t names, mach_msg_type_number_t name_cnt,
+ mach_port_array_t *ports, mach_msg_type_number_t *port_cnt,
+ boolean_t *all)
+{
+ unsigned int i;
+ kern_return_t r;
+
+ if (name_cnt > BOOTSTRAP_MAX_LOOKUP_COUNT)
+ return BOOTSTRAP_BAD_COUNT;
+
+ *port_cnt = name_cnt;
+
+ r = vm_allocate(mach_task_self(), (vm_address_t *)&ports, name_cnt * sizeof(mach_port_t), true);
+
+ if (r != KERN_SUCCESS)
+ return r;
+
+ *all = true;
+
+ for (i = 0; i < name_cnt; i++) {
+ if (bootstrap_look_up(bp, names[i], &((*ports)[i])) == BOOTSTRAP_SUCCESS)
+ continue;
+ *all = false;
+ ports[i] = MACH_PORT_NULL;
+ }
+
+ return BOOTSTRAP_SUCCESS;
+}
+
+kern_return_t
+bootstrap_status(mach_port_t bp, name_t service_name, bootstrap_status_t *service_active)
+{
+ mach_port_t p;
+
+ if (bootstrap_check_in(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
+ mach_port_mod_refs(mach_task_self(), p, MACH_PORT_RIGHT_RECEIVE, -1);
+ *service_active = BOOTSTRAP_STATUS_ON_DEMAND;
+ return BOOTSTRAP_SUCCESS;
+ } else if (bootstrap_look_up(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
+ mach_port_deallocate(mach_task_self(), p);
+ *service_active = BOOTSTRAP_STATUS_ACTIVE;
+ return BOOTSTRAP_SUCCESS;
+ }
+
+ return BOOTSTRAP_UNKNOWN_SERVICE;
+}
+
+kern_return_t
+bootstrap_info(mach_port_t bp,
+ name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
+ bootstrap_status_array_t *service_active, mach_msg_type_number_t *service_activeCnt)
+{
+ return vproc_mig_info(bp, service_names, service_namesCnt,
+ service_active, service_activeCnt);
+}
+
+
+const char *
+bootstrap_strerror(kern_return_t r)
+{
+ switch (r) {
+ case BOOTSTRAP_SUCCESS:
+ return "Success";
+ case BOOTSTRAP_NOT_PRIVILEGED:
+ return "Permission denied";
+ case BOOTSTRAP_NAME_IN_USE:
+ case BOOTSTRAP_SERVICE_ACTIVE:
+ return "Service name already exists";
+ case BOOTSTRAP_UNKNOWN_SERVICE:
+ return "Unknown service name";
+ case BOOTSTRAP_BAD_COUNT:
+ return "Too many lookups were requested in one request";
+ case BOOTSTRAP_NO_MEMORY:
+ return "Out of memory";
+ default:
+ return mach_error_string(r);
+ }
+}
Modified: trunk/launchd/src/liblaunch.c
===================================================================
--- trunk/launchd/src/liblaunch.c 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/liblaunch.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -36,7 +36,7 @@
#include "launch.h"
#include "launch_priv.h"
#include "bootstrap_public.h"
-#include "bootstrap_private.h"
+#include "vproc_priv.h"
/* __OSBogusByteSwap__() must not really exist in the symbol namespace
* in order for the following to generate an error at build time.
@@ -133,8 +133,8 @@
int fd;
};
-static void make_msg_and_cmsg(launch_data_t, void **, size_t *, int **, size_t *);
-static launch_data_t make_data(launch_t, size_t *, size_t *);
+static void launch_data_pack(launch_data_t, void **, size_t *, int **, size_t *);
+static launch_data_t launch_data_unpack(launch_t, size_t *, size_t *);
static launch_data_t launch_data_array_pop_first(launch_data_t where);
static int _fd(int fd);
static void launch_client_init(void);
@@ -565,7 +565,7 @@
}
void
-make_msg_and_cmsg(launch_data_t d, void **where, size_t *len, int **fd_where, size_t *fdcnt)
+launch_data_pack(launch_data_t d, void **where, size_t *len, int **fd_where, size_t *fdcnt)
{
launch_data_t o_in_w;
size_t i;
@@ -619,14 +619,15 @@
*len += d->_array_cnt * sizeof(launch_data_t);
for (i = 0; i < d->_array_cnt; i++)
- make_msg_and_cmsg(d->_array[i], where, len, fd_where, fdcnt);
+ launch_data_pack(d->_array[i], where, len, fd_where, fdcnt);
break;
default:
break;
}
}
-static launch_data_t make_data(launch_t conn, size_t *data_offset, size_t *fdoffset)
+launch_data_t
+launch_data_unpack(launch_t conn, size_t *data_offset, size_t *fdoffset)
{
launch_data_t r = conn->recvbuf + *data_offset;
size_t i, tmpcnt;
@@ -646,7 +647,7 @@
r->_array = conn->recvbuf + *data_offset;
*data_offset += tmpcnt * sizeof(launch_data_t);
for (i = 0; i < tmpcnt; i++) {
- r->_array[i] = make_data(conn, data_offset, fdoffset);
+ r->_array[i] = launch_data_unpack(conn, data_offset, fdoffset);
if (r->_array[i] == NULL)
return NULL;
}
@@ -716,7 +717,7 @@
if (d) {
uint64_t msglen = lh->sendlen;
- make_msg_and_cmsg(d, &lh->sendbuf, &lh->sendlen, &lh->sendfds, &lh->sendfdcnt);
+ launch_data_pack(d, &lh->sendbuf, &lh->sendlen, &lh->sendfds, &lh->sendfdcnt);
msglen = (lh->sendlen - msglen) + sizeof(struct launch_msg_header);
lmh.len = host2big(msglen);
@@ -953,7 +954,7 @@
goto need_more_data;
}
- if ((rmsg = make_data(lh, &data_offset, &fd_offset)) == NULL) {
+ if ((rmsg = launch_data_unpack(lh, &data_offset, &fd_offset)) == NULL) {
errno = EBADRPC;
goto out_bad;
}
Copied: trunk/launchd/src/libvproc.c (from rev 22901, trunk/launchd/src/bootstrap_public.c)
===================================================================
--- trunk/launchd/src/libvproc.c (rev 0)
+++ trunk/launchd/src/libvproc.c 2006-10-23 17:46:23 UTC (rev 22910)
@@ -0,0 +1,291 @@
+/*
+ * Copyright (c) 1999-2005 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+#include <mach/mach.h>
+#include <mach/vm_map.h>
+
+#include "bootstrap_public.h"
+#include "vproc_priv.h"
+#include "launch.h"
+#include "launch_priv.h"
+
+#define mig_external static
+#include "protocol_vproc.h"
+#include "protocol_vprocUser.c"
+
+#include <sys/param.h>
+#include <stdlib.h>
+#include <errno.h>
+
+kern_return_t
+_launchd_to_launchd(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright,
+ name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
+ mach_port_array_t *ports, mach_msg_type_number_t *portCnt)
+{
+ return vproc_mig_transfer_subset(bp, reqport, rcvright, service_names, service_namesCnt, ports, portCnt);
+}
+
+pid_t
+_spawn_via_launchd(const char *label, const char *const *argv, const struct spawn_via_launchd_attr *spawn_attrs, int struct_version)
+{
+ kern_return_t kr;
+ const char *const *tmpp;
+ size_t len, buf_len = strlen(label) + 1;
+ char *buf = strdup(label);
+ uint64_t flags = 0;
+ uint32_t argc = 0;
+ uint32_t envc = 0;
+ pid_t p = -1;
+ mode_t u_mask = CMASK;
+ mach_port_t obsvr_port = MACH_PORT_NULL;
+
+ for (tmpp = argv; *tmpp; tmpp++) {
+ argc++;
+ len = strlen(*tmpp) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, *tmpp);
+ buf_len += len;
+ }
+
+ if (spawn_attrs) switch (struct_version) {
+ case 0:
+ if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_STOPPED) {
+ flags |= SPAWN_WANTS_WAIT4DEBUGGER;
+ }
+ if (spawn_attrs->spawn_flags & SPAWN_VIA_LAUNCHD_FORCE_PPC) {
+ flags |= SPAWN_WANTS_FORCE_PPC;
+ }
+
+ if (spawn_attrs->spawn_env) {
+ for (tmpp = spawn_attrs->spawn_env; *tmpp; tmpp++) {
+ envc++;
+ len = strlen(*tmpp) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, *tmpp);
+ buf_len += len;
+ }
+ }
+
+ if (spawn_attrs->spawn_path) {
+ flags |= SPAWN_HAS_PATH;
+ len = strlen(spawn_attrs->spawn_path) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, spawn_attrs->spawn_path);
+ buf_len += len;
+ }
+
+ if (spawn_attrs->spawn_chdir) {
+ flags |= SPAWN_HAS_WDIR;
+ len = strlen(spawn_attrs->spawn_chdir) + 1;
+ buf = reallocf(buf, buf_len + len);
+ strcpy(buf + buf_len, spawn_attrs->spawn_chdir);
+ buf_len += len;
+ }
+
+ if (spawn_attrs->spawn_umask) {
+ flags |= SPAWN_HAS_UMASK;
+ u_mask = *spawn_attrs->spawn_umask;
+ }
+
+ break;
+ default:
+ break;
+ }
+
+ kr = vproc_mig_spawn(bootstrap_port, buf, buf_len, argc, envc, flags, u_mask, &p, &obsvr_port);
+
+ free(buf);
+
+ if (kr == BOOTSTRAP_SUCCESS) {
+ if (spawn_attrs && spawn_attrs->spawn_observer_port) {
+ *spawn_attrs->spawn_observer_port = obsvr_port;
+ } else {
+ mach_port_deallocate(mach_task_self(), obsvr_port);
+ }
+ return p;
+ }
+
+ switch (kr) {
+ case BOOTSTRAP_NOT_PRIVILEGED:
+ errno = EPERM; break;
+ case BOOTSTRAP_NO_MEMORY:
+ errno = ENOMEM; break;
+ default:
+ errno = EINVAL; break;
+ }
+ return -1;
+}
+
+kern_return_t
+mpm_wait(mach_port_t ajob, int *wstatus)
+{
+ return vproc_mig_wait(ajob, wstatus);
+}
+
+kern_return_t
+mpm_uncork_fork(mach_port_t ajob)
+{
+ return vproc_mig_uncork_fork(ajob);
+}
+
+kern_return_t
+bootstrap_create_server(mach_port_t bp, cmd_t server_cmd, uid_t server_uid, boolean_t on_demand, mach_port_t *server_port)
+{
+ return vproc_mig_create_server(bp, server_cmd, server_uid, on_demand, server_port);
+}
+
+kern_return_t
+bootstrap_subset(mach_port_t bp, mach_port_t requestor_port, mach_port_t *subset_port)
+{
+ return vproc_mig_subset(bp, requestor_port, subset_port);
+}
+
+kern_return_t
+bootstrap_unprivileged(mach_port_t bp, mach_port_t *unpriv_port)
+{
+ kern_return_t kr;
+
+ *unpriv_port = MACH_PORT_NULL;
+
+ kr = mach_port_mod_refs(mach_task_self(), bp, MACH_PORT_RIGHT_SEND, 1);
+
+ if (kr == KERN_SUCCESS) {
+ *unpriv_port = bp;
+ }
+
+ return kr;
+}
+
+kern_return_t
+bootstrap_getsocket(mach_port_t bp, name_t sockpath)
+{
+ return vproc_mig_getsocket(bp, sockpath);
+}
+
+kern_return_t
+bootstrap_parent(mach_port_t bp, mach_port_t *parent_port)
+{
+ return vproc_mig_parent(bp, parent_port);
+}
+
+kern_return_t
+bootstrap_register(mach_port_t bp, name_t service_name, mach_port_t sp)
+{
+ return vproc_mig_register(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_create_service(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_create_service(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_check_in(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_check_in(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_look_up(mach_port_t bp, name_t service_name, mach_port_t *sp)
+{
+ return vproc_mig_look_up(bp, service_name, sp);
+}
+
+kern_return_t
+bootstrap_look_up_array(mach_port_t bp,
+ name_array_t names, mach_msg_type_number_t name_cnt,
+ mach_port_array_t *ports, mach_msg_type_number_t *port_cnt,
+ boolean_t *all)
+{
+ unsigned int i;
+ kern_return_t r;
+
+ if (name_cnt > BOOTSTRAP_MAX_LOOKUP_COUNT)
+ return BOOTSTRAP_BAD_COUNT;
+
+ *port_cnt = name_cnt;
+
+ r = vm_allocate(mach_task_self(), (vm_address_t *)&ports, name_cnt * sizeof(mach_port_t), true);
+
+ if (r != KERN_SUCCESS)
+ return r;
+
+ *all = true;
+
+ for (i = 0; i < name_cnt; i++) {
+ if (bootstrap_look_up(bp, names[i], &((*ports)[i])) == BOOTSTRAP_SUCCESS)
+ continue;
+ *all = false;
+ ports[i] = MACH_PORT_NULL;
+ }
+
+ return BOOTSTRAP_SUCCESS;
+}
+
+kern_return_t
+bootstrap_status(mach_port_t bp, name_t service_name, bootstrap_status_t *service_active)
+{
+ mach_port_t p;
+
+ if (bootstrap_check_in(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
+ mach_port_mod_refs(mach_task_self(), p, MACH_PORT_RIGHT_RECEIVE, -1);
+ *service_active = BOOTSTRAP_STATUS_ON_DEMAND;
+ return BOOTSTRAP_SUCCESS;
+ } else if (bootstrap_look_up(bp, service_name, &p) == BOOTSTRAP_SUCCESS) {
+ mach_port_deallocate(mach_task_self(), p);
+ *service_active = BOOTSTRAP_STATUS_ACTIVE;
+ return BOOTSTRAP_SUCCESS;
+ }
+
+ return BOOTSTRAP_UNKNOWN_SERVICE;
+}
+
+kern_return_t
+bootstrap_info(mach_port_t bp,
+ name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
+ bootstrap_status_array_t *service_active, mach_msg_type_number_t *service_activeCnt)
+{
+ return vproc_mig_info(bp, service_names, service_namesCnt,
+ service_active, service_activeCnt);
+}
+
+
+const char *
+bootstrap_strerror(kern_return_t r)
+{
+ switch (r) {
+ case BOOTSTRAP_SUCCESS:
+ return "Success";
+ case BOOTSTRAP_NOT_PRIVILEGED:
+ return "Permission denied";
+ case BOOTSTRAP_NAME_IN_USE:
+ case BOOTSTRAP_SERVICE_ACTIVE:
+ return "Service name already exists";
+ case BOOTSTRAP_UNKNOWN_SERVICE:
+ return "Unknown service name";
+ case BOOTSTRAP_BAD_COUNT:
+ return "Too many lookups were requested in one request";
+ case BOOTSTRAP_NO_MEMORY:
+ return "Out of memory";
+ default:
+ return mach_error_string(r);
+ }
+}
Modified: trunk/launchd/src/protocol_job.defs
===================================================================
--- trunk/launchd/src/protocol_job.defs 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/protocol_job.defs 2006-10-23 17:46:23 UTC (rev 22910)
@@ -23,13 +23,13 @@
* Copyright, 1990. All rights reserved.
*/
-subsystem bootstrap 400;
+subsystem protocol_vproc 400;
#include <mach/std_types.defs>
#include <mach/mach_types.defs>
#include "launchd_mig_types.defs"
-import "bootstrap_public.h";
-import "bootstrap_private.h";
+import "vproc.h";
+import "vproc_priv.h";
userprefix vproc_mig_;
serverprefix job_mig_;
@@ -39,7 +39,6 @@
__server_cmd : cmd_t;
__server_uid : natural_t;
__on_demand : boolean_t;
- ServerAuditToken __token : audit_token_t;
out __server_port : mach_port_make_send_t);
skip; /* Last used in 10.4. Was bootstrap_unprivileged() */
@@ -47,18 +46,15 @@
routine check_in(
__bs_port : job_t;
__service_name : name_t;
- ServerAuditToken __token : audit_token_t;
out __service_port : mach_port_move_receive_t);
routine register(
__bs_port : job_t;
- ServerAuditToken __token : audit_token_t;
__service_name : name_t;
__service_port : mach_port_t);
routine look_up(
__bs_port : job_t;
- ServerAuditToken __token : audit_token_t;
__service_name : name_t;
out __service_port : mach_port_send_t);
@@ -90,7 +86,6 @@
out __bs_reqport : mach_port_t;
out __bs_rcvright : mach_port_move_receive_t;
out __service_names : name_array_t, dealloc;
- out __service_pids : pointer_t, dealloc;
out __service_ports : mach_port_array_t, dealloc);
routine getsocket(
@@ -99,7 +94,6 @@
routine spawn(
__bs_port : job_t;
- ServerAuditToken __token : audit_token_t;
__chars : _internal_string_t;
__argc : uint32_t;
__envc : uint32_t;
@@ -111,15 +105,7 @@
routine wait(
__bs_port : job_t;
sreplyport __rport : mach_port_make_send_once_t;
- ServerAuditToken __token : audit_token_t;
out __waitval : integer_t);
routine uncork_fork(
- __bs_port : job_t;
- ServerAuditToken __token : audit_token_t);
-
-/* Essentially the inverse of bootstrap_unprivileged() */
-routine get_self(
- __bs_port : job_t;
- ServerAuditToken __token : audit_token_t;
- out __job_port : mach_port_make_send_t);
+ __bs_port : job_t);
Modified: trunk/launchd/src/protocol_job_reply.defs
===================================================================
--- trunk/launchd/src/protocol_job_reply.defs 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/protocol_job_reply.defs 2006-10-23 17:46:23 UTC (rev 22910)
@@ -24,7 +24,7 @@
#include <mach/mach_types.defs>
#include "launchd_mig_types.defs"
import "bootstrap_public.h";
-import "bootstrap_private.h";
+import "vproc_priv.h";
skip; /* create_server */
Deleted: trunk/launchd/src/protocol_legacy.defs
===================================================================
--- trunk/launchd/src/protocol_legacy.defs 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/protocol_legacy.defs 2006-10-23 17:46:23 UTC (rev 22910)
@@ -1,111 +0,0 @@
-/*
- * Copyright (c) 1999-2004 Apple Computer, Inc. All rights reserved.
- *
- * @APPLE_APACHE_LICENSE_HEADER_START@
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- * @APPLE_APACHE_LICENSE_HEADER_END@
- */
-/*
- * bootstrap -- fundamental service initiator and port server
- * Mike DeMoney, NeXT, Inc.
- * Copyright, 1990. All rights reserved.
- */
-
-subsystem bootstrap 400;
-
-#include <mach/std_types.defs>
-#include <mach/mach_types.defs>
-#include "launchd_mig_types.defs"
-import "bootstrap_public.h";
-import "bootstrap_private.h";
-
-userprefix vproc_mig_;
-serverprefix job_mig_;
-
-routine create_server(
- __bs_port : job_t;
- __server_cmd : cmd_t;
- __server_uid : natural_t;
- __on_demand : boolean_t;
- out __server_port : mach_port_make_send_t);
-
-skip; /* Last used in 10.4. Was bootstrap_unprivileged() */
-
-routine check_in(
- __bs_port : job_t;
- __service_name : name_t;
- out __service_port : mach_port_move_receive_t);
-
-routine register(
- __bs_port : job_t;
- __service_name : name_t;
- __service_port : mach_port_t);
-
-routine look_up(
- __bs_port : job_t;
- __service_name : name_t;
- out __service_port : mach_port_send_t);
-
-skip; /* last used in 10.4 */
-
-routine parent(
- __bs_port : job_t;
- out __parent_port : mach_port_send_t);
-
-skip; /* last used in 10.4 */
-
-routine info(
- __bs_port : job_t;
- out __service_names : name_array_t, dealloc;
- out __service_active : bootstrap_status_array_t, dealloc);
-
-routine subset(
- __bs_port : job_t;
- __requestor_port: mach_port_t;
- out __subset_port : mach_port_make_send_t);
-
-routine create_service(
- __bs_port : job_t;
- __service_name : name_t;
- out __service_port : mach_port_t);
-
-routine transfer_subset(
- __bs_port : job_t;
- out __bs_reqport : mach_port_t;
- out __bs_rcvright : mach_port_move_receive_t;
- out __service_names : name_array_t, dealloc;
- out __service_ports : mach_port_array_t, dealloc);
-
-routine getsocket(
- __bs_port : job_t;
- out __sockpath : name_t);
-
-routine spawn(
- __bs_port : job_t;
- __chars : _internal_string_t;
- __argc : uint32_t;
- __envc : uint32_t;
- __flags : uint64_t;
- __umask : uint16_t;
- out __pid : pid_t;
- out __obsvr_port : mach_port_make_send_t);
-
-routine wait(
- __bs_port : job_t;
- sreplyport __rport : mach_port_make_send_once_t;
- out __waitval : integer_t);
-
-routine uncork_fork(
- __bs_port : job_t);
Modified: trunk/launchd/src/vproc.h
===================================================================
--- trunk/launchd/src/vproc.h 2006-10-20 23:24:08 UTC (rev 22909)
+++ trunk/launchd/src/vproc.h 2006-10-23 17:46:23 UTC (rev 22910)
@@ -20,8 +20,12 @@
* @APPLE_APACHE_LICENSE_HEADER_END@
*/
+#include <sys/cdefs.h>
+
__BEGIN_DECLS
+#if 0
+
typedef void * vproc_t;
typedef void * vprocmgr_t;
typedef void * vproc_err_t;
@@ -42,7 +46,7 @@
vproc_err_t vprocmgr_lookup_vproc(vprocmgr_t vpm, const char *label, vproc_t *vp);
-vproc_err_t vprocmgr_lookup_vprocmgr_for_user(vprocmgr_t vpm, const char *user, vprocmgr_t *vpm);
+vproc_err_t vprocmgr_lookup_vprocmgr_for_user(vprocmgr_t vpm, const char *user, vprocmgr_t *vpm_out);
vproc_err_t vprocmgr_lookup_mach_service(vprocmgr_t vpm, const char *service, mach_port_t *service_port);
@@ -73,6 +77,8 @@
const char *vproc_strerror(vproc_err_t r);
+#endif
+
__END_DECLS
#endif
Copied: trunk/launchd/src/vproc_priv.h (from rev 22901, trunk/launchd/src/bootstrap_private.h)
===================================================================
--- trunk/launchd/src/vproc_priv.h (rev 0)
+++ trunk/launchd/src/vproc_priv.h 2006-10-23 17:46:23 UTC (rev 22910)
@@ -0,0 +1,62 @@
+#ifndef _BOOTSTRAP_PRIVATE_H_
+#define _BOOTSTRAP_PRIVATE_H_
+/*
+ * Copyright (c) 2006 Apple Computer, Inc. All rights reserved.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_START@
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ * @APPLE_APACHE_LICENSE_HEADER_END@
+ */
+
+typedef char * _internal_string_t;
+typedef mach_port_t vproc_mig_t;
+
+#ifdef protocol_vproc_MSG_COUNT
+/* HACK */
+#include "launchd_core_logic.h"
+#endif
+
+#define SPAWN_HAS_PATH 0x0001
+#define SPAWN_HAS_WDIR 0x0002
+#define SPAWN_HAS_UMASK 0x0004
+#define SPAWN_WANTS_WAIT4DEBUGGER 0x0008
+#define SPAWN_WANTS_FORCE_PPC 0x0010
+
+kern_return_t
+_launchd_to_launchd(mach_port_t bp, mach_port_t *reqport, mach_port_t *rcvright,
+ name_array_t *service_names, mach_msg_type_number_t *service_namesCnt,
+ mach_port_array_t *ports, mach_msg_type_number_t *portCnt);
+
+kern_return_t bootstrap_getsocket(mach_port_t bp, name_t);
+
+
+kern_return_t
+bootstrap_look_up_array(
+ mach_port_t bp,
+ name_array_t service_names,
+ mach_msg_type_number_t service_namesCnt,
+ mach_port_array_t *sps,
+ mach_msg_type_number_t *service_portsCnt,
+ boolean_t *all_services_known);
+
+kern_return_t
+bootstrap_info(
+ mach_port_t bp,
+ name_array_t *service_names,
+ mach_msg_type_number_t *service_namesCnt,
+ bootstrap_status_array_t *service_active,
+ mach_msg_type_number_t *service_activeCnt);
+
+#endif
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20061023/85658ce2/attachment.html
More information about the launchd-changes
mailing list