diff options
author | Ulrich Drepper <drepper@redhat.com> | 1999-08-15 18:14:36 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1999-08-15 18:14:36 +0000 |
commit | 3a9eb648bb714d69623bf0344ae3e6c69b6237f1 (patch) | |
tree | e0eef1f13257d67e2402a228f6f5cae0a773bbd2 /rt/aio_misc.h | |
parent | 0cc70fcf82fefca2d186af4de0b6625a62dd31a0 (diff) | |
download | glibc-3a9eb648bb714d69623bf0344ae3e6c69b6237f1.tar glibc-3a9eb648bb714d69623bf0344ae3e6c69b6237f1.tar.gz glibc-3a9eb648bb714d69623bf0344ae3e6c69b6237f1.tar.bz2 glibc-3a9eb648bb714d69623bf0344ae3e6c69b6237f1.zip |
Update.
1999-08-15 Ulrich Drepper <drepper@cygnus.com>
* sysdeps/unix/sysv/linux/aio_sigqueue.c: Take extra parameter and
initialize si_pid from it.
* sysdeps/generic/aio_sigqueue.c (__aio_sigqueue): Take extra
parameter.
* rt/aio_misc.c (__aio_enqueue_request): Initialize caller_pid.
* rt/aio_misc.h (struct waitlist): Add caller_pid element.
(struct requestlist): Likewise.
Adjust prototypes of __aio_notify_only and __aio_sigqueue.
* rt/notify.c (__aio_notify_only): Take extra parameter. Pass it
to __aio_sigqueue.
(__aio_notify): Pass caller PID to __aio_notify_only.
* rt/aio_suspend.c: Initialize caller_pid.
* rt/lio_listio.c: Likewise.
* rt/lio_listio64.c: Likewise.
* rt/lio_listio.c: If nothing has to be done free mutex before
signalling.
* rt/lio_listio64.c: Likewise.
Diffstat (limited to 'rt/aio_misc.h')
-rw-r--r-- | rt/aio_misc.h | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/rt/aio_misc.h b/rt/aio_misc.h index af8e2479ba..e3c93bef36 100644 --- a/rt/aio_misc.h +++ b/rt/aio_misc.h @@ -1,4 +1,4 @@ -/* Copyright (C) 1997 Free Software Foundation, Inc. +/* Copyright (C) 1997, 1999 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -50,6 +50,9 @@ struct waitlist volatile int *counterp; /* The next field is used in asynchronous `lio_listio' operations. */ struct sigevent *sigevp; + /* XXX See requestlist, it's used to work around the broken signal + handling in Linux. */ + pid_t caller_pid; }; @@ -76,6 +79,10 @@ struct requestlist /* Pointer to the actual data. */ aiocb_union *aiocbp; + /* PID of the initiator thread. + XXX This is only necessary for the broken signal handling on Linux. */ + pid_t caller_pid; + /* List of waiting processes. */ struct waitlist *waiting; }; @@ -104,9 +111,11 @@ extern void __aio_free_request (struct requestlist *req) internal_function; extern void __aio_notify (struct requestlist *req) internal_function; /* Notify initiator of request. */ -extern int __aio_notify_only (struct sigevent *sigev) internal_function; +extern int __aio_notify_only (struct sigevent *sigev, pid_t caller_pid) + internal_function; /* Send the signal. */ -extern int __aio_sigqueue (int sig, const union sigval val) internal_function; +extern int __aio_sigqueue (int sig, const union sigval val, pid_t caller_pid) + internal_function; #endif /* aio_misc.h */ |