1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
/* ISC license. */
#ifndef KOLBAK_H
#define KOLBAK_H
#include <skalibs/unixmessage.h>
typedef struct kolbak_closure_s kolbak_closure_t, *kolbak_closure_t_ref ;
struct kolbak_closure_s
{
unixmessage_handler_func_t_ref f ;
void *data ;
} ;
#define KOLBAK_CLOSURE_ZERO { .f = 0, .data = 0 }
typedef struct kolbak_queue_s kolbak_queue_t, *kolbak_queue_t_ref ;
struct kolbak_queue_s
{
kolbak_closure_t *x ;
unsigned int n ;
unsigned int head ;
unsigned int tail ;
} ;
#define KOLBAK_QUEUE_ZERO { .x = 0, .n = 0, .head = 0, .tail = 0 }
#define KOLBAK_QUEUE_INIT(s, len) { .x = (s), .n = (len), .head = 0, .tail = 0 }
extern int kolbak_queue_init (kolbak_queue_t *, kolbak_closure_t *, unsigned int) ;
extern int kolbak_enqueue (kolbak_queue_t *, unixmessage_handler_func_t_ref, void *) ;
extern int kolbak_unenqueue (kolbak_queue_t *) ;
extern int kolbak_call (unixmessage_t const *, kolbak_queue_t *) ;
#endif
|