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