- Forgot to commit these for MSVC build...
[reactos.git] / reactos / include / chew / chew.h
1 /*
2 * COPYRIGHT: See COPYING in the top level directory
3 * PROJECT: ReactOS kernel
4 * FILE: include/chew/chew.h
5 * PURPOSE: Common Highlevel Executive Worker
6 *
7 * PROGRAMMERS: arty (ayerkes@speakeasy.net)
8 */
9
10 #ifndef _REACTOS_CHEW_H
11 #define _REACTOS_CHEW_H
12
13 /**
14 * Initialize CHEW, given a device object (since IoAllocateWorkItem relies on
15 * it).
16 */
17 VOID ChewInit( PDEVICE_OBJECT DeviceObject );
18 /**
19 * Shutdown CHEW, including removing remaining work items.
20 */
21 VOID ChewShutdown();
22 /**
23 * Create a work item, or perform the work, based on IRQL.
24 * At passive level, Worker is called directly on UserSpace.
25 * At greater than passive level, a work item is created with Bytes
26 * context area and data copied from UserSpace.
27 * If a work item is created, Item contains the address and the function
28 * returns true.
29 * If the work is performed immediately, Item contains NULL and the
30 * function returns true.
31 * Else, the function returns false and Item is undefined.
32 */
33 BOOLEAN ChewCreate
34 ( PVOID *Item, SIZE_T Bytes, VOID (*Worker)(PVOID), PVOID UserSpace );
35 /**
36 * Remove a work item, given the pointer returned to Item in ChewCreate.
37 */
38 VOID ChewRemove( PVOID Item );
39
40 #endif/*_REACTOS_CHEW_H*/