xref: /illumos-gate/usr/src/lib/mergeq/workq.h (revision ed093b41a93e8563e6e1e5dae0768dda2a7bcc27)
1 /*
2  * This file and its contents are supplied under the terms of the
3  * Common Development and Distribution License ("CDDL"), version 1.0.
4  * You may only use this file in accordance with the terms of version
5  * 1.0 of the CDDL.
6  *
7  * A full copy of the text of the CDDL should have accompanied this
8  * source.  A copy of the CDDL is also available via the Internet at
9  * http://www.illumos.org/license/CDDL.
10  */
11 
12 /*
13  * Copyright 2015 Joyent, Inc.
14  */
15 
16 #ifndef _WORKQ_H
17 #define	_WORKQ_H
18 
19 /*
20  * workq library routines
21  */
22 
23 #include <sys/types.h>
24 #include <stdint.h>
25 
26 #ifdef __cplusplus
27 extern "C" {
28 #endif
29 
30 typedef struct workq workq_t;
31 typedef int (workq_proc_f)(void *, void *);
32 
33 extern int workq_init(workq_t **, uint_t);
34 extern void workq_fini(workq_t *);
35 
36 extern int workq_add(workq_t *, void *);
37 
38 #define	WORKQ_ERROR	(-1)
39 #define	WORKQ_UERROR	(-2)
40 extern int workq_work(workq_t *, workq_proc_f *, void *, int *);
41 
42 /*
43  * Routines consumers need to implement
44  */
45 extern void *workq_alloc(size_t);
46 extern void workq_free(void *, size_t);
47 
48 #ifdef __cplusplus
49 }
50 #endif
51 
52 #endif /* _WORKQ_H */
53