Revision: 23682 http://trac.macosforge.org/projects/launchd/changeset/23682 Author: dsorresso@apple.com Date: 2008-08-20 01:31:44 -0700 (Wed, 20 Aug 2008) Log Message: ----------- Added vproc_transaction_optin() SPI. buildit isn't working from home, so I don't know if these changes compile/work yet. Modified Paths: -------------- branches/PR-5898404/launchd/src/launchd_core_logic.c branches/PR-5898404/launchd/src/libvproc.c branches/PR-5898404/launchd/src/libvproc_private.h branches/PR-5898404/launchd/src/protocol_job.defs branches/PR-5898404/launchd/src/protocol_job_reply.defs Modified: branches/PR-5898404/launchd/src/launchd_core_logic.c =================================================================== --- branches/PR-5898404/launchd/src/launchd_core_logic.c 2008-08-20 02:19:07 UTC (rev 23681) +++ branches/PR-5898404/launchd/src/launchd_core_logic.c 2008-08-20 08:31:44 UTC (rev 23682) @@ -6424,6 +6424,20 @@ } kern_return_t +job_mig_transaction_register(job_t job, uint64_t flags __attribute__((unused))) +{ + job_log(job, LOG_DEBUG, "Request to be opted into transaction model."); + + if( !job->kill_via_shmem ) { + job->kill_via_shmem = 1; + } else { + job_log(job, LOG_NOTICE, "Attempt to re-register for transaction model."); + } + + return KERN_SUCCESS; +} + +kern_return_t job_mig_look_up2(job_t j, mach_port_t srp, name_t servicename, mach_port_t *serviceportp, pid_t target_pid, uint64_t flags) { struct machservice *ms; Modified: branches/PR-5898404/launchd/src/libvproc.c =================================================================== --- branches/PR-5898404/launchd/src/libvproc.c 2008-08-20 02:19:07 UTC (rev 23681) +++ branches/PR-5898404/launchd/src/libvproc.c 2008-08-20 08:31:44 UTC (rev 23682) @@ -181,9 +181,16 @@ } } -void _vproc_transaction_optin(void) +vproc_err_t _vproc_transaction_optin(void) { + if (unlikely(vproc_shmem == NULL)) { + int po_r = pthread_once(&shmem_inited, vproc_shmem_init); + if (po_r != 0 || vproc_shmem == NULL) { + return; + } + } + return vproc_mig_transaction_register(bootstrap_port, 0)); } vproc_standby_t Modified: branches/PR-5898404/launchd/src/libvproc_private.h =================================================================== --- branches/PR-5898404/launchd/src/libvproc_private.h 2008-08-20 02:19:07 UTC (rev 23681) +++ branches/PR-5898404/launchd/src/libvproc_private.h 2008-08-20 08:31:44 UTC (rev 23682) @@ -87,7 +87,7 @@ void _vproc_transaction_try_exit(int status); void _vproc_transaction_begin(void); void _vproc_transaction_end(void); -void _vproc_transaction_optin(void); +vproc_err_t _vproc_transaction_optin(void); size_t _vproc_transaction_count(void); Modified: branches/PR-5898404/launchd/src/protocol_job.defs =================================================================== --- branches/PR-5898404/launchd/src/protocol_job.defs 2008-08-20 02:19:07 UTC (rev 23681) +++ branches/PR-5898404/launchd/src/protocol_job.defs 2008-08-20 08:31:44 UTC (rev 23682) @@ -62,6 +62,10 @@ __service_port : mach_port_t; __flags : uint64_t); +routine transaction_optin( + __bs_port : job_t; + __flags : uint64_t); + routine look_up2( __bs_port : job_t; sreplyport __rport : mach_port_make_send_once_t; Modified: branches/PR-5898404/launchd/src/protocol_job_reply.defs =================================================================== --- branches/PR-5898404/launchd/src/protocol_job_reply.defs 2008-08-20 02:19:07 UTC (rev 23681) +++ branches/PR-5898404/launchd/src/protocol_job_reply.defs 2008-08-20 08:31:44 UTC (rev 23682) @@ -35,6 +35,8 @@ skip; /* register */ +skip; /* transaction_optin */ + skip; /* look_up */ simpleroutine job_mig_send_signal_reply(
participants (1)
-
source_changes@macosforge.org