[launchd-changes] [23577] trunk/launchd/src
source_changes at macosforge.org
source_changes at macosforge.org
Thu Mar 27 14:57:52 PDT 2008
Revision: 23577
http://trac.macosforge.org/projects/launchd/changeset/23577
Author: zarzycki at apple.com
Date: 2008-03-27 14:57:51 -0700 (Thu, 27 Mar 2008)
Log Message:
-----------
Refinements.
Modified Paths:
--------------
trunk/launchd/src/launchd_core_logic.c
trunk/launchd/src/libvproc.c
Modified: trunk/launchd/src/launchd_core_logic.c
===================================================================
--- trunk/launchd/src/launchd_core_logic.c 2008-03-27 21:42:31 UTC (rev 23576)
+++ trunk/launchd/src/launchd_core_logic.c 2008-03-27 21:57:51 UTC (rev 23577)
@@ -2231,6 +2231,7 @@
if (j->shmem) {
job_assumes(j, munmap(j->shmem, getpagesize()) == 0);
+ j->shmem = NULL;
}
if (unlikely(j->weird_bootstrap)) {
@@ -5446,6 +5447,11 @@
return BOOTSTRAP_NOT_PRIVILEGED;
}
+ if (unlikely(j->shmem)) {
+ job_log(j, LOG_ERR, "Tried to setup shared memory more than once");
+ return BOOTSTRAP_NOT_PRIVILEGED;
+ }
+
size_of_page_orig = size_of_page = getpagesize();
if (!job_assumes(j, j->shmem = mmap(NULL, size_of_page, PROT_READ|PROT_WRITE, MAP_ANON, -1, 0))) {
Modified: trunk/launchd/src/libvproc.c
===================================================================
--- trunk/launchd/src/libvproc.c 2008-03-27 21:42:31 UTC (rev 23576)
+++ trunk/launchd/src/libvproc.c 2008-03-27 21:57:51 UTC (rev 23577)
@@ -54,6 +54,7 @@
static int64_t cached_pid = -1;
static struct vproc_shmem_s *vproc_shmem;
+static pthread_once_t shmem_inited = PTHREAD_ONCE_INIT;
static void
vproc_shmem_init(void)
@@ -94,8 +95,8 @@
int64_t newval;
if (unlikely(vproc_shmem == NULL)) {
- vproc_shmem_init();
- if (vproc_shmem == NULL) {
+ int po_r = pthread_once(&shmem_inited, vproc_shmem_init);
+ if (po_r != 0 || vproc_shmem == NULL) {
return;
}
}
@@ -147,8 +148,8 @@
int64_t newval;
if (unlikely(vproc_shmem == NULL)) {
- vproc_shmem_init();
- if (vproc_shmem == NULL) {
+ int po_r = pthread_once(&shmem_inited, vproc_shmem_init);
+ if (po_r != 0 || vproc_shmem == NULL) {
return NULL;
}
}
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/launchd-changes/attachments/20080327/9ac64da2/attachment.html
More information about the launchd-changes
mailing list