about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2000-05-29 01:00:03 +0000
committerUlrich Drepper <drepper@redhat.com>2000-05-29 01:00:03 +0000
commit31eb0a91a52a5b67564cf38e79f1f01930a28ed5 (patch)
treebdce53e1495345eb7ee708025c3b7f82772dbf28
parent84838b8ff3dc3f826d6c78e25f4e144adea4babe (diff)
downloadglibc-31eb0a91a52a5b67564cf38e79f1f01930a28ed5.tar.gz
glibc-31eb0a91a52a5b67564cf38e79f1f01930a28ed5.tar.xz
glibc-31eb0a91a52a5b67564cf38e79f1f01930a28ed5.zip
Update.
2000-05-28  Ulrich Drepper  <drepper@redhat.com>

	* sysdeps/arm/atomicity.h (compare_and_swap): Return result.
-rw-r--r--ChangeLog4
-rw-r--r--posix/tst-fork.c15
-rw-r--r--sysdeps/arm/atomicity.h1
3 files changed, 20 insertions, 0 deletions
diff --git a/ChangeLog b/ChangeLog
index 44b2dff02b..9a80bd835a 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2000-05-28  Ulrich Drepper  <drepper@redhat.com>
+
+	* sysdeps/arm/atomicity.h (compare_and_swap): Return result.
+
 2000-05-04  Andreas Jaeger  <aj@suse.de>
 
 	* string/string.h: Remove __strdup prototype, it's not needed in
diff --git a/posix/tst-fork.c b/posix/tst-fork.c
index 287fa5ffb5..0bee14fabe 100644
--- a/posix/tst-fork.c
+++ b/posix/tst-fork.c
@@ -38,6 +38,7 @@ main (void)
   char *name;
   int fd;
   pid_t pid;
+  pid_t ppid;
   off_t off;
   int status;
 
@@ -69,10 +70,24 @@ main (void)
   if (off == (off_t) -1 || off != strlen (testdata))
     error (EXIT_FAILURE, errno, "wrong file position");
 
+  /* Get the parent PID.  */
+  ppid = getpid ();
+
   /* Now fork of the process.  */
   pid = fork ();
   if (pid == 0)
     {
+      /* One little test first: the PID must have changed.  */
+      if (getpid () == ppid)
+	error (EXIT_FAILURE, 0, "child and parent have same PID");
+
+      /* Test the `getppid' function.  */
+      pid = getppid ();
+      if (pid == (pid_t) -1 ? errno != ENOSYS : pid != ppid)
+	error (EXIT_FAILURE, 0,
+	       "getppid returned wrong PID (%ld, should be %ld)",
+	       (long int) pid, (long int) ppid);
+
       /* This is the child.  First get the position of the descriptor.  */
       off = lseek (fd, 0, SEEK_CUR);
       if (off == (off_t) -1 || off != strlen (testdata))
diff --git a/sysdeps/arm/atomicity.h b/sysdeps/arm/atomicity.h
index 01bd64e465..c1f3b038ef 100644
--- a/sysdeps/arm/atomicity.h
+++ b/sysdeps/arm/atomicity.h
@@ -81,6 +81,7 @@ compare_and_swap (volatile long int *p, long int oldval, long int newval)
 	   : "=&r" (result), "=&r" (tmp)
 	   : "r" (p), "r" (newval), "r" (oldval)
 	   : "cc", "memory");
+  return result;
 }
 
 #endif /* atomicity.h */