[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