source: trunk/packages/xen-3.1/xen-3.1/tools/vnet/vnetd/spinlock.h @ 34

Last change on this file since 34 was 34, checked in by hartmans, 18 years ago

Add xen and xen-common

File size: 1.2 KB
Line 
1#ifndef _VNET_SPINLOCK_H_
2#define _VNET_SPINLOCK_H_
3
4typedef struct atomic_t {
5    unsigned val;
6} atomic_t;
7
8int atomic_read(const atomic_t *v);
9int atomic_dec_and_test(atomic_t *v);
10void atomic_inc(atomic_t *v);
11void atomic_set(atomic_t *v, int x);
12
13typedef struct spinlock_t {
14    unsigned val;
15} spinlock_t;
16
17#define SPIN_LOCK_UNLOCKED ((struct spinlock_t){})
18
19void spin_lock_init(spinlock_t *lock);
20
21unsigned long _spin_lock_irqsave(spinlock_t *lock);
22#define spin_lock_irqsave(lock, flags)  flags = _spin_lock_irqsave(lock)
23void spin_unlock_irqrestore(spinlock_t *lock, unsigned long flags);
24
25typedef struct rwlock_t{
26    unsigned val;
27} rwlock_t;
28
29#define RW_LOCK_UNLOCKED ((struct rwlock_t){})
30
31unsigned long _read_lock_irqsave(rwlock_t *lock);
32#define read_lock_irqsave(lock, flags)  flags = _read_lock_irqsave(lock)
33void read_unlock_irqrestore(rwlock_t *lock, unsigned long flags);
34
35unsigned long _write_lock_irqsave(rwlock_t *lock);
36#define write_lock_irqsave(lock, flags) flags = _write_lock_irqsave(lock)
37void write_unlock_irqrestore(rwlock_t *lock, unsigned long flags);
38
39struct semaphore {
40    int count;
41};
42
43void init_MUTEX(struct semaphore *sem);
44void down(struct semaphore *sem);
45void up(struct semaphore *sem);
46
47#endif /* ! _VNET_SPINLOCK_H_ */
Note: See TracBrowser for help on using the repository browser.