1 /* $OpenBSD: workq.h,v 1.2 2007/05/31 21:33:07 tedu Exp $ */
2
3 /*
4 * Copyright (c) 2007 David Gwynne <dlg@openbsd.org>
5 * Copyright (c) 2007 Ted Unangst <tedu@openbsd.org>
6 *
7 * Permission to use, copy, modify, and distribute this software for any
8 * purpose with or without fee is hereby granted, provided that the above
9 * copyright notice and this permission notice appear in all copies.
10 *
11 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
12 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
13 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
14 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
15 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
16 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
17 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
18 */
19
20 #ifndef _SYS_WORKQ_H_
21 #define _SYS_WORKQ_H_
22
23 struct workq;
24
25 #define WQ_WAITOK (1<<0)
26 #define WQ_MPSAFE (1<<1)
27
28 typedef void (*workq_fn)(void *, void *);
29 struct workq *workq_create(const char * /* name */, int /* nthreads */);
30 int workq_add_task(struct workq *, int /* flags */, workq_fn,
31 void *, void *);
32 void workq_destroy(struct workq *);
33
34 #endif /* _SYS_WORKQ_H_ */