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