#ifndef _SPINLOCK_H
#define _SPINLOCK_H
typedef struct __SPINLOCK_TYPE
{
int count; // for recursion.
int owner;
int ticket[16]; // allow up to 16 CPUs.
int choiceInProgress[16];
int deleteInProgress;
} spinlock_t;
enum spinlock_returns
{
SPINLOCK_SUCCESS,
SPINLOCK_FAIL_DELETING
};
spinlock_t * spinlockCreate();
void spinlockInit(spinlock_t *);
void spinlockDelete(spinlock_t *);
int spinlockLock(spinlock_t *, int);
int spinlockUnlock(spinlock_t *, int);
#endif