53 lines
1.1 KiB
C
53 lines
1.1 KiB
C
/*
|
|
* RES.H - Resource ownership classe, master include file
|
|
*/
|
|
|
|
|
|
#ifndef _RES_
|
|
#define _RES_
|
|
|
|
/* resource classes */
|
|
#define RES_CLASS_MEM 0
|
|
#define RES_CLASS_IO 1
|
|
|
|
/* return values */
|
|
#define RES_E_SUCC 0
|
|
#define RES_E_NOMEM 1
|
|
|
|
// Return Values for GetResourceSem
|
|
#define RES_BUSY 0
|
|
#define RES_FREE 1
|
|
|
|
/* resource structure */
|
|
typedef struct _RES
|
|
{
|
|
ULONG class; /* resource class */
|
|
ULONG id; /* resource id (value) */
|
|
ULONG data; /* resource attached data */
|
|
|
|
ULONG cre_ref; /* creation refrence */
|
|
ULONG own_ref; /* ownership refrence */
|
|
|
|
VOID *owner; /* current owner, NULL == none */
|
|
|
|
NDIS_SPIN_LOCK lock; /* scheduling lock */
|
|
|
|
SEMA proc_sema; /* processing sema */
|
|
|
|
} RES;
|
|
|
|
|
|
/* operations */
|
|
INT res_init(VOID);
|
|
VOID res_term(VOID);
|
|
RES* res_create(ULONG class, ULONG id);
|
|
INT res_destroy(VOID* res_1);
|
|
VOID res_own(VOID* res_1, VOID *owner);
|
|
VOID res_unown(VOID* res_1, VOID *owner);
|
|
VOID res_get_data(VOID* res_1, ULONG* data);
|
|
VOID res_set_data(VOID* res_1, ULONG data);
|
|
INT GetResourceSem (VOID*);
|
|
VOID FreeResourceSem (VOID*);
|
|
|
|
#endif /* _RES_ */
|