Provided by: libixp-dev_0.6~20121202+hg148-2build1_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)