24ddc71998-03-28Henrik Grubbström (Grubba) /*
a850e32000-08-14Henrik Grubbström (Grubba)  * $Id: cyclic.h,v 1.4 2000/08/14 20:18:29 grubba Exp $
24ddc71998-03-28Henrik Grubbström (Grubba)  */
fc33451997-10-02Fredrik Hübinette (Hubbe) #ifndef CYCLIC_H #define CYCLIC_H #include "error.h" #include "threads.h" typedef struct CYCLIC { ONERROR onerr; void *th; void *id,*a,*b; void *ret; struct CYCLIC *next; } CYCLIC; #define DECLARE_CYCLIC() \ static char cyclic_identifier__; \ CYCLIC cyclic_struct__ #define BEGIN_CYCLIC(A,B) \
a850e32000-08-14Henrik Grubbström (Grubba)  begin_cyclic(&cyclic_struct__, &cyclic_identifier__, \ (void *)(ptrdiff_t)th_self(), (void *)(A), (void *)(B))
fc33451997-10-02Fredrik Hübinette (Hubbe)  #define SET_CYCLIC_RET(RET) \ cyclic_struct__.ret=(void *)(RET) #define END_CYCLIC() unlink_cyclic(&cyclic_struct__) /* Prototypes begin here */ void unlink_cyclic(CYCLIC *c); void *begin_cyclic(CYCLIC *c, void *id, void *thread, void *a, void *b); /* Prototypes end here */ #endif /* CYCLIC_H */