// If >0, hWait got signaled. If ==0, timeout. If < 0, error
extern int WaitEventWaitEx(HANDLE hWait, u32 TimeoutInMs);
-extern HANDLE SpinlockCreate(void);
-extern void SpinlockClose(HANDLE hSpin);
-extern void SpinlockAcquire(HANDLE hSpin);
-extern void SpinlockRelease(HANDLE hSpin);
-
#define GetVirtualAddress Physical2LogicalAddr
void* Physical2LogicalAddr(unsigned long PhysAddr);
wait_queue_head_t event;
} WAITEVENT;
-typedef struct _SPINLOCK {
- spinlock_t lock;
- unsigned long flags;
-} SPINLOCK;
-
typedef struct _WORKQUEUE {
struct workqueue_struct *queue;
} WORKQUEUE;
return ret;
}
-HANDLE SpinlockCreate(void)
-{
- SPINLOCK* spin = kmalloc(sizeof(SPINLOCK), GFP_KERNEL);
- if (!spin)
- {
- return NULL;
- }
- spin_lock_init(&spin->lock);
-
- return spin;
-}
-
-void SpinlockAcquire(HANDLE hSpin)
-{
- SPINLOCK* spin = (SPINLOCK* )hSpin;
-
- spin_lock_irqsave(&spin->lock, spin->flags);
-}
-
-void SpinlockRelease(HANDLE hSpin)
-{
- SPINLOCK* spin = (SPINLOCK* )hSpin;
-
- spin_unlock_irqrestore(&spin->lock, spin->flags);
-}
-
-void SpinlockClose(HANDLE hSpin)
-{
- SPINLOCK* spin = (SPINLOCK* )hSpin;
- kfree(spin);
-}
-
void* Physical2LogicalAddr(unsigned long PhysAddr)
{
void* logicalAddr = phys_to_virt(PhysAddr);