示例#1
0
void interruptible_lock_acquire_readlock(VMM_READ_WRITE_LOCK* lock)
{
    (void)lock;
    interruptible_lock_acquire(&lock->lock);
    hw_interlocked_increment((INT32*)(&lock->readers));
    lock_release(&lock->lock);
}
示例#2
0
void interruptible_lock_acquire_writelock(VMM_READ_WRITE_LOCK * lock)
{
    (void)lock;
    BOOLEAN ipc_processed = FALSE;

    interruptible_lock_acquire(&lock->lock);
    //  wait until readers == 0
    while(lock->readers) {
        ipc_processed = ipc_process_one_ipc();
        if(FALSE == ipc_processed) {
            hw_pause();
        }
    }
}
示例#3
0
API void ikgt_lock_acquire(ikgt_lock_t *lock)
{
	interruptible_lock_acquire((mon_lock_t *)lock);
}