netwib doc_html (version 5.39.0)

## main index

## section index

    /*-------------------------------------------------------------*/
    typedef struct {
      netwib_wait *pwait;
      netwib_uint32 waitident; /* because waitid exists */
    } netwib_waitringitem;

    /*-------------------------------------------------------------*/
    /* Name : netwib_waitlist_init
       Description :
         Initialize a list of events. It can be use to wait for more
         than 5 event (otherwise use netwib_wait_wait5) which is
         easier.
       Input parameter(s) :
       Input/output parameter(s) :
         **ppring : ring initialized
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_waitlist_init(netwib_ring **ppring);

    /*-------------------------------------------------------------*/
    /* Name : netwib_waitlist_add
       Description :
         Add an event to the waiting ring.
       Input parameter(s) :
         waitident : id of the item to add (any value chosen by user)
         *pwait : netwib_wait to add
       Input/output parameter(s) :
         *pring : ring where to add items
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_waitlist_add(netwib_ring *pring,
                                   netwib_wait *pwait,
                                   netwib_uint32 waitident);

    /*-------------------------------------------------------------*/
    /* Name : netwib_waitlist_del
       Description :
         Remove an event to the waiting ring.
       Input parameter(s) :
         waitident : id of the item to remove
       Input/output parameter(s) :
         *pring : ring where to remove items
       Output parameter(s) :
       Normal return values :
         NETWIB_ERR_OK : ok
    */
    netwib_err netwib_waitlist_del(netwib_ring *pring,
                                   netwib_uint32 waitident);

    /*-------------------------------------------------------------*/
    /* Name : netwib_waitlist_wait
       Description :
         Wait for an event in the waiting ring. The netwib_wait
         is never closed by this function (different behavior
         compared to netwib_threadlist_wait).
       Input parameter(s) :
         *pabstime : end time
       Input/output parameter(s) :
         *pring : ring where to wait for
       Output parameter(s) :
         *pevent : true if an event occurred. If *pabstime is
                   reached *pevent is set to NETWIB_FALSE.
         *pringofwaitid : ring of all events id
                          This ring contains netwib_uintptr
                          cast-ed to netwib_ptr. This ring is
                          initialized only when there is an event.
                          It's user's job to close this ring with :
                      netwib_ring_close(ppringofwaitid, NETWIB_FALSE)
       Normal return values :
         NETWIB_ERR_OK : ok
         NETWIB_ERR_DATAEND: ring is empty
    */
    netwib_err netwib_waitlist_wait(netwib_ring *pring,
                                    netwib_consttime *pabstime,
                                    netwib_bool *pevent,
                                    netwib_ring **ppringofwaitid);
    #define netwib_waitlist_waitident_init_ptr(p) ((netwib_uint32)(netwib_uintptr)(p))

    /*-------------------------------------------------------------*/
    /***************************************************************
     * For other functions, you can directly use functions of      *
     * ring.h.                                                     *
     * To do so, booleans "eraseitems" and "duplicateitems" have   *
     * be set to NETWIB_TRUE. See netwib_waitlist_close for        *
     * example.                                                    *
     ***************************************************************/

    #define netwib_waitlist_close(ppring) netwib_ring_close(ppring,NETWIB_TRUE)

## main index

## section index