summaryrefslogblamecommitdiffstats
path: root/private/ntos/ndis/digi/pcimac/res.h
blob: 15bd9f5d00ab331fa3231c82c3b865c01ba59ea3 (plain) (tree)



















































                                                                                         
/*
 * 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_ */