mirror of
https://github.com/xen-project/xen.git
synced 2026-10-29 02:30:03 +01:00
and optionally running in user-space. Signed-off-by: Mike Wray <mike.wray@hp.com>
48 lines
1.2 KiB
C
48 lines
1.2 KiB
C
#ifndef _VNET_SPINLOCK_H_
|
|
#define _VNET_SPINLOCK_H_
|
|
|
|
typedef struct atomic_t {
|
|
unsigned val;
|
|
} atomic_t;
|
|
|
|
int atomic_read(const atomic_t *v);
|
|
int atomic_dec_and_test(atomic_t *v);
|
|
void atomic_inc(atomic_t *v);
|
|
void atomic_set(atomic_t *v, int x);
|
|
|
|
typedef struct spinlock_t {
|
|
unsigned val;
|
|
} spinlock_t;
|
|
|
|
#define SPIN_LOCK_UNLOCKED ((struct spinlock_t){})
|
|
|
|
void spin_lock_init(spinlock_t *lock);
|
|
|
|
unsigned long _spin_lock_irqsave(spinlock_t *lock);
|
|
#define spin_lock_irqsave(lock, flags) flags = _spin_lock_irqsave(lock)
|
|
void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags);
|
|
|
|
typedef struct rwlock_t{
|
|
unsigned val;
|
|
} rwlock_t;
|
|
|
|
#define RW_LOCK_UNLOCKED ((struct rwlock_t){})
|
|
|
|
unsigned long _read_lock_irqsave(rwlock_t *lock);
|
|
#define read_lock_irqsave(lock, flags) flags = _read_lock_irqsave(lock)
|
|
void read_unlock_irqrestore(rwlock_t *lock, unsigned long flags);
|
|
|
|
unsigned long _write_lock_irqsave(rwlock_t *lock);
|
|
#define write_lock_irqsave(lock, flags) flags = _write_lock_irqsave(lock)
|
|
void write_unlock_irqrestore(rwlock_t *lock, unsigned long flags);
|
|
|
|
struct semaphore {
|
|
int count;
|
|
};
|
|
|
|
void init_MUTEX(struct semaphore *sem);
|
|
void down(struct semaphore *sem);
|
|
void up(struct semaphore *sem);
|
|
|
|
#endif /* ! _VNET_SPINLOCK_H_ */
|