Reference

sigevent(3)

asynchronous event notification

NAME

sigevent – asynchronous event notification

SYNOPSIS

#include <signal.h>

DESCRIPTION

Some operations permit threads to request asynchronous notification of events via a struct sigevent structure. This structure contains several fields that describe the requested notification:

TypeMemberDescription
intsigev_notifynotification method
intsigev_signosignal number
union sigvalsigev_valuesignal value
intsigev_notify_kqueue
unsigned shortsigev_notify_kevent_flagskevent flags
lwpid_tsigev_notify_thread_idLWP ID
void (*)(union sigval)sigev_notify_function
pthread_attr_t *sigev_notify_attributes

The sigev_notify field specifies the notification method used when the event triggers:

SIGEV_NONE

No notification is sent.

SIGEV_SIGNAL

The signal sigev_signo is queued as a real-time signal to the calling process. The value stored in sigev_value will be present in the si_value of the siginfo_t structure of the queued signal.

SIGEV_THREAD

The notification function in sigev_notify_function is called in a separate thread context. The thread is created with the attributes specified in *sigev_notify_attributes. The value stored in sigev_value is passed as the sole argument to sigev_notify_function. If sigev_notify_attributes is NULL, the thread is created with default attributes.

SIGEV_KEVENT

A new kevent is posted to the kqueue sigev_notify_kqueue. The udata member of the kevent structure contains the value stored in sigev_value. The meaning of other fields in the kevent are specific to the type of triggered event.

SIGEV_THREAD_ID

The signal sigev_signo is queued to the thread whose LWP ID is sigev_notify_thread_id. The value stored in sigev_value will be present in the si_value of the siginfo_t structure of the queued signal.

NOTES

Note that programs wishing to use SIGEV_THREAD notifications must link against the library “librt”.

SEE ALSO

aio_read(2), mq_notify(2), timer_create(2), siginfo(3)

STANDARDS

The struct sigevent type conforms to IEEE Std 1003.1-2004 (“POSIX.1”).

HISTORY

The sigevent structure first appeared in FreeBSD 3.3.

History