Messages in this thread | | | Date | Tue, 21 Nov 2006 23:38:25 -0800 | From | Ulrich Drepper <> | Subject | Re: [take24 0/6] kevent: Generic event handling mechanism. |
| |
Evgeniy Polyakov wrote: > I've checked the code. > Since it will be a union, it is impossible to use _sigev_thread and it > becomes just SIGEV_SIGNAL case with different delivery mechanism. > Is it what you want?
struct sigevent is defined like this:
typedef struct sigevent { sigval_t sigev_value; int sigev_signo; int sigev_notify; union { int _pad[SIGEV_PAD_SIZE]; int _tid;
struct { void (*_function)(sigval_t); void *_attribute; /* really pthread_attr_t */ } _sigev_thread; } _sigev_un; } sigevent_t;
For the SIGEV_KEVENT case:
sigev_notify is set to SIGEV_KEVENT (obviously)
sigev_value can be used for the void* data passed along with the signal, just like in the case of a signal delivery
Now you need a way to specify the kevent descriptor. Just add
int _kevent;
inside the union and if you want
#define sigev_kevent_descr _sigev_un._kevent
That should be all.
-- ➧ Ulrich Drepper ➧ Red Hat, Inc. ➧ 444 Castro St ➧ Mountain View, CA ❖ - 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/
| |