[launchd-changes] [23578] trunk/launchd/src

source_changes at macosforge.org source_changes at macosforge.org
Thu Mar 27 15:48:07 PDT 2008


Revision: 23578
          http://trac.macosforge.org/projects/launchd/changeset/23578
Author:   zarzycki at apple.com
Date:     2008-03-27 15:48:06 -0700 (Thu, 27 Mar 2008)

Log Message:
-----------
Last minute changes.

Modified Paths:
--------------
    trunk/launchd/src/libvproc.c
    trunk/launchd/src/libvproc_private.h

Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c	2008-03-27 21:57:51 UTC (rev 23577)
+++ trunk/launchd/src/libvproc.c	2008-03-27 22:48:06 UTC (rev 23578)
@@ -92,7 +92,7 @@
 void
 _basic_vproc_transaction_begin(void)
 {
-	int64_t newval;
+	typeof(vproc_shmem->vp_shmem_transaction_cnt) newval;
 
 	if (unlikely(vproc_shmem == NULL)) {
 		int po_r = pthread_once(&shmem_inited, vproc_shmem_init);
@@ -114,7 +114,31 @@
 	}
 }
 
+size_t
+_basic_vproc_transaction_count(void)
+{
+	return likely(vproc_shmem) ? vproc_shmem->vp_shmem_transaction_cnt : INT32_MAX;
+}
+
 void
+_basic_vproc_transaction_try_exit(int status)
+{
+	typeof(vproc_shmem->vp_shmem_transaction_cnt) newval;
+
+	if (unlikely(vproc_shmem == NULL)) {
+		return;
+	}
+
+	vproc_shmem->vp_shmem_flags |= VPROC_SHMEM_EXITING;
+
+	newval = __sync_sub_and_fetch(&vproc_shmem->vp_shmem_transaction_cnt, 1);
+
+	if (newval < 0) {
+		_exit(status);
+	}
+}
+
+void
 vproc_transaction_end(vproc_t vp __attribute__((unused)), vproc_transaction_t vpt)
 {
 	if (unlikely(vpt != (vproc_transaction_t)vproc_shmem_init)) {
@@ -128,8 +152,10 @@
 void
 _basic_vproc_transaction_end(void)
 {
-	int32_t newval = __sync_sub_and_fetch(&vproc_shmem->vp_shmem_transaction_cnt, 1);
+	typeof(vproc_shmem->vp_shmem_transaction_cnt) newval;
 
+	newval = __sync_sub_and_fetch(&vproc_shmem->vp_shmem_transaction_cnt, 1);
+
 	if (unlikely(newval < 0)) {
 		if (vproc_shmem->vp_shmem_flags & VPROC_SHMEM_EXITING) {
 			raise(SIGKILL);
@@ -145,7 +171,7 @@
 vproc_standby_begin(vproc_t vp __attribute__((unused)))
 {
 	vproc_standby_t vpsb = (vproc_standby_t)vproc_shmem_init; /* we need a "random" variable that is testable */
-	int64_t newval;
+	typeof(vproc_shmem->vp_shmem_standby_cnt) newval;
 
 	if (unlikely(vproc_shmem == NULL)) {
 		int po_r = pthread_once(&shmem_inited, vproc_shmem_init);
@@ -167,7 +193,7 @@
 void
 vproc_standby_end(vproc_t vp __attribute__((unused)), vproc_standby_t vpt)
 {
-	int32_t newval;
+	typeof(vproc_shmem->vp_shmem_standby_cnt) newval;
 
 	if (unlikely(vpt != (vproc_standby_t)vproc_shmem_init)) {
 		__crashreporter_info__ = "Bogus standby handle passed to vproc_standby_end() ";

Modified: trunk/launchd/src/libvproc_private.h
===================================================================
--- trunk/launchd/src/libvproc_private.h	2008-03-27 21:57:51 UTC (rev 23577)
+++ trunk/launchd/src/libvproc_private.h	2008-03-27 22:48:06 UTC (rev 23578)
@@ -78,7 +78,10 @@
 
 void _basic_vproc_transaction_begin(void);
 void _basic_vproc_transaction_end(void);
+size_t _basic_vproc_transaction_count(void);
+void _basic_vproc_transaction_try_exit(int status);
 
+
 #pragma GCC visibility pop
 
 __END_DECLS

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080327/2a4c4972/attachment-0001.html 


More information about the launchd-changes mailing list