]> git.ipfire.org Git - thirdparty/valgrind.git/commitdiff
DRD tests, Darwin: check return value of sem_open().
authorBart Van Assche <bvanassche@acm.org>
Sat, 5 Mar 2011 14:49:12 +0000 (14:49 +0000)
committerBart Van Assche <bvanassche@acm.org>
Sat, 5 Mar 2011 14:49:12 +0000 (14:49 +0000)
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@11590

drd/tests/circular_buffer.c
drd/tests/pth_inconsistent_cond_wait.c
drd/tests/sem_open.c

index dcfc6115a8bf31dc341385521726850827514c3b..b7ab5641644cd9abcad01211edb1fc5612553433 100644 (file)
@@ -60,7 +60,13 @@ int fetch_and_add(int* p, int i)
 static sem_t* create_semaphore(const char* const name, const int value)
 {
 #ifdef VGO_darwin
-  sem_t* p = sem_open(name, O_CREAT, 0600, value);
+  char name_and_pid[32];
+  snprintf(name_and_pid, sizeof(name_and_pid), "%s-%d", name, getpid());
+  sem_t* p = sem_open(name_and_pid, O_CREAT | O_EXCL, 0600, value);
+  if (p == SEM_FAILED) {
+    perror("sem_open");
+    return NULL;
+  }
   return p;
 #else
   sem_t* p = malloc(sizeof(*p));
index ccfbc3a20babaeef46ef3032dba20564b4b2ef7f..fb95fd8a910f85532c447d1f382c486dee27ca12 100644 (file)
@@ -45,7 +45,13 @@ static int             s_quiet;
 static sem_t* create_semaphore(const char* const name)
 {
 #ifdef VGO_darwin
-  sem_t* p = sem_open(name, O_CREAT, 0600, 0);
+  char name_and_pid[32];
+  snprintf(name_and_pid, sizeof(name_and_pid), "%s-%d", name, getpid());
+  sem_t* p = sem_open(name_and_pid, O_CREAT | O_EXCL, 0600, 0);
+  if (p == SEM_FAILED) {
+    perror("sem_open");
+    return NULL;
+  }
   return p;
 #else
   sem_t* p = malloc(sizeof(*p));
index d45200950f6a990b68e081760f61762cf1157641..65ee28b3d6a004e910c790849876cc959a641c88 100644 (file)
@@ -58,8 +58,9 @@ int main(int argc, char** argv)
    * Use the ipcs and ipcrm commands to clean up named semaphores left by
    * aborted instances of this process.
    */
-  snprintf(semaphore_name, sizeof(semaphore_name), "drd-sem-open-test");
-  s_sem = sem_open(semaphore_name, O_CREAT, 0600, 1);
+  snprintf(semaphore_name, sizeof(semaphore_name), "drd-sem-open-test-%d",
+          getpid());
+  s_sem = sem_open(semaphore_name, O_CREAT | O_EXCL, 0600, 1);
   if (s_sem == SEM_FAILED)
   {
     fprintf(stderr, "Failed to create a semaphore with name %s\n",