diff options
author | Ulrich Drepper <drepper@redhat.com> | 2000-05-29 01:00:03 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2000-05-29 01:00:03 +0000 |
commit | 31eb0a91a52a5b67564cf38e79f1f01930a28ed5 (patch) | |
tree | bdce53e1495345eb7ee708025c3b7f82772dbf28 | |
parent | 84838b8ff3dc3f826d6c78e25f4e144adea4babe (diff) | |
download | glibc-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-- | ChangeLog | 4 | ||||
-rw-r--r-- | posix/tst-fork.c | 15 | ||||
-rw-r--r-- | sysdeps/arm/atomicity.h | 1 |
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 */ |