Provided by: libixp-dev_0.6~20121202+hg148-2_amd64 bug

NAME

       IxpThread, IxpMutex, IxpRWLock, IxpRendez, ixp_thread

SYNOPSIS

       #include <ixp.h>

       typedef struct IxpThread IxpThread;
       struct IxpThread {
               /* Read/write lock */
               int     (*initrwlock)(IxpRWLock*);
               void    (*rlock)(IxpRWLock*);
               int     (*canrlock)(IxpRWLock*);
               void    (*runlock)(IxpRWLock*);
               void    (*wlock)(IxpRWLock*);
               int     (*canwlock)(IxpRWLock*);
               void    (*wunlock)(IxpRWLock*);
               void    (*rwdestroy)(IxpRWLock*);
               /* Mutex */
               int     (*initmutex)(IxpMutex*);
               void    (*lock)(IxpMutex*);
               int     (*canlock)(IxpMutex*);
               void    (*unlock)(IxpMutex*);
               void    (*mdestroy)(IxpMutex*);
               /* Rendezvous point */
               int     (*initrendez)(IxpRendez*);
               void    (*sleep)(IxpRendez*);
               int     (*wake)(IxpRendez*);
               int     (*wakeall)(IxpRendez*);
               void    (*rdestroy)(IxpRendez*);
               /* Other */
               char*   (*errbuf)(void);
               ssize_t (*read)(int, void*, size_t);
               ssize_t (*write)(int, const void*, size_t);
               int     (*select)(int, fd_set*, fd_set*, fd_set*, struct timeval*);
       }

       typedef struct IxpMutex IxpMutex;
       struct IxpMutex {
               void*   aux;
       }

       typedef struct IxpRWLock IxpRWLock;
       struct IxpRWLock {
               void*   aux;
       }

       typedef struct IxpRendez IxpRendez;
       struct IxpRendez {
               IxpMutex*       mutex;
               void*   aux;
       }

       IxpThread*       ixp_thread;

DESCRIPTION

       The  IxpThread structure is used to adapt libixp to any of the myriad threading systems it
       may be used with. Before any other of libixp's functions is called, ixp_thread may be  set
       to  a  structure  filled  with  implementations  of various locking primitives, along with
       primitive IO functions which may perform context switches until data is available.

       The names of the functions should be fairly  self-explanitory.   Read/write  locks  should
       allow  multiple readers and a single writer of a shared resource, but should not allow new
       readers while a writer is waitng for a lock. Mutexes should allow only one accessor  at  a
       time.  Rendezvous  points  are  similar to pthread condition types. errbuf should return a
       thread-local buffer or the size IXP_ERRMAX.

SEE ALSO

       ixp_pthread_init(3), ixp_taskinit(3), ixp_rubyinit(3)