sigevent(7)


NAME

   sigevent - structure for notification from asynchronous routines

SYNOPSIS

   union sigval {          /* Data passed with notification */
       int     sival_int;         /* Integer value */
       void   *sival_ptr;         /* Pointer value */
   };

   struct sigevent {
       int          sigev_notify; /* Notification method */
       int          sigev_signo;  /* Notification signal */
       union sigval sigev_value;  /* Data passed with
                                     notification */
       void       (*sigev_notify_function) (union sigval);
                        /* Function used for thread
                           notification (SIGEV_THREAD) */
       void        *sigev_notify_attributes;
                        /* Attributes for notification thread
                           (SIGEV_THREAD) */
       pid_t        sigev_notify_thread_id;
                        /* ID of thread to signal (SIGEV_THREAD_ID) */
   };

DESCRIPTION

   The  sigevent  structure  is used by various APIs to describe the way a
   process is to be notified  about  an  event  (e.g.,  completion  of  an
   asynchronous  request,  expiration  of  a  timer,  or  the arrival of a
   message).

   The definition shown in the SYNOPSIS is approximate: some of the fields
   in  the sigevent structure may be defined as part of a union.  Programs
   should employ only those fields relevant  to  the  value  specified  in
   sigev_notify.

   The  sigev_notify  field specifies how notification is to be performed.
   This field can have one of the following values:

   SIGEV_NONE
           A "null" notification: don't do anything when the event occurs.

   SIGEV_SIGNAL
           Notify  the  process  by  sending  the  signal   specified   in
           sigev_signo.

           If  the  signal  is  caught  with  a  signal  handler  that was
           registered using the sigaction(2)  SA_SIGINFO  flag,  then  the
           following  fields  are  set  in the siginfo_t structure that is
           passed as the second argument of the handler:

           si_code   This field is set to a value that depends on the  API
                     delivering the notification.

           si_signo  This  field  is  set  to the signal number (i.e., the
                     same value as in sigev_signo).

           si_value  This  field  is  set  to  the  value   specified   in
                     sigev_value.

           Depending  on  the  API,  other  fields  may also be set in the
           siginfo_t structure.

           The same  information  is  also  available  if  the  signal  is
           accepted using sigwaitinfo(2).

   SIGEV_THREAD
           Notify the process by invoking sigev_notify_function "as if" it
           were  the  start  function  of  a  new  thread.    (Among   the
           implementation   possibilities   here   are   that  each  timer
           notification could result in the creation of a new  thread,  or
           that  a single thread is created to receive all notifications.)
           The function is invoked with sigev_value as its sole  argument.
           If  sigev_notify_attributes  is  not NULL, it should point to a
           pthread_attr_t structure that defines attributes  for  the  new
           thread (see pthread_attr_init(3)).

   SIGEV_THREAD_ID (Linux-specific)
           Currently used only by POSIX timers; see timer_create(2).

SEE ALSO

   timer_create(2),      aio_fsync(3),      aio_read(3),     aio_write(3),
   getaddrinfo_a(3), lio_listio(3), mq_notify(3), aio(7), pthreads(7)

COLOPHON

   This page is part of release 4.09 of the Linux  man-pages  project.   A
   description  of  the project, information about reporting bugs, and the
   latest    version    of    this    page,    can     be     found     at
   https://www.kernel.org/doc/man-pages/.





Opportunity


Personal Opportunity - Free software gives you access to billions of dollars of software at no cost. Use this software for your business, personal use or to develop a profitable skill. Access to source code provides access to a level of capabilities/information that companies protect though copyrights. Open source is a core component of the Internet and it is available to you. Leverage the billions of dollars in resources and capabilities to build a career, establish a business or change the world. The potential is endless for those who understand the opportunity.

Business Opportunity - Goldman Sachs, IBM and countless large corporations are leveraging open source to reduce costs, develop products and increase their bottom lines. Learn what these companies know about open source and how open source can give you the advantage.





Free Software


Free Software provides computer programs and capabilities at no cost but more importantly, it provides the freedom to run, edit, contribute to, and share the software. The importance of free software is a matter of access, not price. Software at no cost is a benefit but ownership rights to the software and source code is far more significant.


Free Office Software - The Libre Office suite provides top desktop productivity tools for free. This includes, a word processor, spreadsheet, presentation engine, drawing and flowcharting, database and math applications. Libre Office is available for Linux or Windows.





Free Books


The Free Books Library is a collection of thousands of the most popular public domain books in an online readable format. The collection includes great classical literature and more recent works where the U.S. copyright has expired. These books are yours to read and use without restrictions.


Source Code - Want to change a program or know how it works? Open Source provides the source code for its programs so that anyone can use, modify or learn how to write those programs themselves. Visit the GNU source code repositories to download the source.





Education


Study at Harvard, Stanford or MIT - Open edX provides free online courses from Harvard, MIT, Columbia, UC Berkeley and other top Universities. Hundreds of courses for almost all major subjects and course levels. Open edx also offers some paid courses and selected certifications.


Linux Manual Pages - A man or manual page is a form of software documentation found on Linux/Unix operating systems. Topics covered include computer programs (including library and system calls), formal standards and conventions, and even abstract concepts.