[launchd-changes] [23683] branches/PR-5898404/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Wed Aug 20 18:06:15 PDT 2008
Revision: 23683
http://trac.macosforge.org/projects/launchd/changeset/23683
Author: dsorresso at apple.com
Date: 2008-08-20 18:06:14 -0700 (Wed, 20 Aug 2008)
Log Message:
-----------
Rolled transaction SPI into vproc_swap_integer().
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
Modified: branches/PR-5898404/launchd/src/launchd_core_logic.c
===================================================================
--- branches/PR-5898404/launchd/src/launchd_core_logic.c 2008-08-20 08:31:44 UTC (rev 23682)
+++ branches/PR-5898404/launchd/src/launchd_core_logic.c 2008-08-21 01:06:14 UTC (rev 23683)
@@ -6017,6 +6017,10 @@
*outval = oldmask;
umask(oldmask);
break;
+ case VPROC_GSK_TRANSACTIONS_ENABLED:
+ job_log(j, LOG_DEBUG, "Reading transaction model status.");
+ *outval = j->kill_via_shmem;
+ break;
case 0:
*outval = 0;
break;
@@ -6081,6 +6085,15 @@
umask((mode_t) inval);
}
break;
+ case VPROC_GSK_TRANSACTIONS_ENABLED:
+ if( !job_assumes(j, inval != 0) ) {
+ job_log(j, LOG_WARNING, "Attempt to unregister from transaction model. This is not supported.");
+ kr = 1;
+ } else {
+ job_log(j, LOG_DEBUG, "Now participating in transaction model.");
+ j->kill_via_shmem = (bool)inval;
+ job_log(j, LOG_DEBUG, "j->kill_via_shmem = %s", j->kill_via_shmem ? "YES" : "NO");
+ }
case 0:
break;
default:
@@ -6424,20 +6437,6 @@
}
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 08:31:44 UTC (rev 23682)
+++ branches/PR-5898404/launchd/src/libvproc.c 2008-08-21 01:06:14 UTC (rev 23683)
@@ -56,6 +56,7 @@
static int64_t cached_pid = -1;
static struct vproc_shmem_s *vproc_shmem;
static pthread_once_t shmem_inited = PTHREAD_ONCE_INIT;
+static uint64_t s_cached_transactions_enabled = 0;
static void
vproc_shmem_init(void)
@@ -181,18 +182,6 @@
}
}
-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
vproc_standby_begin(vproc_t vp __attribute__((unused)))
{
@@ -655,6 +644,21 @@
return NULL;
}
break;
+ case VPROC_GSK_TRANSACTIONS_ENABLED:
+ /* Shared memory region is required for transactions. */
+ if (unlikely(vproc_shmem == NULL)) {
+ int po_r = pthread_once(&shmem_inited, vproc_shmem_init);
+ if (po_r != 0 || vproc_shmem == NULL) {
+ *outval = 0;
+ return NULL;
+ }
+ }
+
+ if( s_cached_transactions_enabled && outval ) {
+ *outval = s_cached_transactions_enabled;
+ return NULL;
+ }
+ break;
default:
break;
}
@@ -667,6 +671,10 @@
case VPROC_GSK_IS_MANAGED:
cached_is_managed = outval ? *outval : dummyval;
break;
+ case VPROC_GSK_TRANSACTIONS_ENABLED:
+ /* Once you're in the transaction model, you're in for good. Like the Mafia. */
+ s_cached_transactions_enabled = 1;
+ break;
default:
break;
}
Modified: branches/PR-5898404/launchd/src/libvproc_private.h
===================================================================
--- branches/PR-5898404/launchd/src/libvproc_private.h 2008-08-20 08:31:44 UTC (rev 23682)
+++ branches/PR-5898404/launchd/src/libvproc_private.h 2008-08-21 01:06:14 UTC (rev 23683)
@@ -51,6 +51,7 @@
VPROC_GSK_GLOBAL_LOG_MASK,
VPROC_GSK_GLOBAL_UMASK,
VPROC_GSK_ABANDON_PROCESS_GROUP,
+ VPROC_GSK_TRANSACTIONS_ENABLED
} vproc_gsk_t;
vproc_err_t vproc_swap_integer(vproc_t vp, vproc_gsk_t key, int64_t *inval, int64_t *outval);
@@ -87,7 +88,6 @@
void _vproc_transaction_try_exit(int status);
void _vproc_transaction_begin(void);
void _vproc_transaction_end(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 08:31:44 UTC (rev 23682)
+++ branches/PR-5898404/launchd/src/protocol_job.defs 2008-08-21 01:06:14 UTC (rev 23683)
@@ -62,10 +62,6 @@
__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;
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080820/c7f9884f/attachment.html
More information about the launchd-changes
mailing list