Yes,
The current interface is
(A)
async wait:
sys_futex (uaddr, FUTEX_AWAIT, value, (struct timespec*) sig);
upon signal handling
sys_futex(uaddrs[], FUTEX_WAIT, size, NULL);
to retrieve the uaddrs that got woken up...
If you simply want a notification with SIGIO (or whatever you desire)
We can change that to
(A)
sys_futex(uaddr, FUTEX_WAIT, value, (truct timespec*) fd);
I send a SIGIO and you can request via ioctl or read the pending
notifications from fd.
(B) { struct futex *notarray[N]
int n = read( futex_fd, (void**)notarray,
N*sizeof(struct futex));
}
I am mainly concerned that SIGIO can be overloaded in a thread package ?
How would you know whether a SIGIO came from the futex or from other file
handle.
That is your call to make. Let me know !!!
-- -- Hubertus Franke (frankeh@watson.ibm.com) - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/