diff options
author | Ulrich Drepper <drepper@redhat.com> | 2006-01-03 23:19:03 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2006-01-03 23:19:03 +0000 |
commit | 6d3aff23e2c64b64fe68fe88360185e17b3e936a (patch) | |
tree | 47755ce70732719bd318f1203454e287f8805d5d /rt | |
parent | 1c50f6b6602a07f052249c6fe6dbab48357b68bd (diff) | |
download | glibc-6d3aff23e2c64b64fe68fe88360185e17b3e936a.tar.gz |
lio_listio should emit an event for each individual request in
addition to the global event.
* sysdeps/pthread/lio_listio.c (lio_listio): Renamed to
lio_listio_internal. Remove mode parameter check. Only set sigevent
type ti SIGEV_NONE if LIO_NO_INDIVIDUAL_EVENT is set.
(__lio_listio_21): New function. Compatiblity version which sets
LIO_NO_INDIVIDUAL_EVENT before calling lio_listio_internal.
(__lio_listio_item_notify): New function.
* sysdeps/pthread/lio_listio64.c: Define __lio_listio_21 and
__lio_listio_item_notify macros.
* sysdeps/pthread/Versions: New file.
* rt/tst-aio2.c: Adjust test for new semantics of lio_listio.
* include/aio.h: Define LIO_NO_INDIVIDUAL_EVENT.
* Versions.def: Add GLIBC_2.4 for librt.
* rt/Versions: Whitespace fix.
* sysdeps/pthread/aio_misc.c: Likewise.
Diffstat (limited to 'rt')
-rw-r--r-- | rt/Versions | 2 | ||||
-rw-r--r-- | rt/tst-aio2.c | 25 |
2 files changed, 21 insertions, 6 deletions
diff --git a/rt/Versions b/rt/Versions index a7d633d0ea..51bb033ec9 100644 --- a/rt/Versions +++ b/rt/Versions @@ -19,7 +19,7 @@ librt { } GLIBC_2.3.4 { # m* - mq_open; mq_close; mq_unlink; mq_getattr; mq_setattr; + mq_open; mq_close; mq_unlink; mq_getattr; mq_setattr; mq_notify; mq_send; mq_receive; mq_timedsend; mq_timedreceive; } } diff --git a/rt/tst-aio2.c b/rt/tst-aio2.c index 1ff92ce93b..79076396a4 100644 --- a/rt/tst-aio2.c +++ b/rt/tst-aio2.c @@ -1,5 +1,5 @@ /* Test for notification mechanism in lio_listio. - Copyright (C) 2000,02 Free Software Foundation, Inc. + Copyright (C) 2000, 2002, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper <drepper@cygnus.com>, 2000. @@ -25,13 +25,19 @@ #include <unistd.h> #include <errno.h> -int flag; + +static pthread_barrier_t b; static void thrfct (sigval_t arg) { - flag = 1; + int e = pthread_barrier_wait (&b); + if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) + { + puts ("thread: barrier_wait failed"); + exit (1); + } } @@ -53,6 +59,12 @@ do_test (int argc, char *argv[]) unlink (name); + if (pthread_barrier_init (&b, NULL, 2) != 0) + { + puts ("barrier_init failed"); + return 1; + } + arr[0] = &cb; cb.aio_fildes = fd; @@ -77,9 +89,12 @@ do_test (int argc, char *argv[]) return 1; } - if (flag != 0) + puts ("lio_listio returned"); + + int e = pthread_barrier_wait (&b); + if (e != 0 && e != PTHREAD_BARRIER_SERIAL_THREAD) { - puts ("thread created, should not have happened"); + puts ("barrier_wait failed"); return 1; } |