Subversion Repositories HelenOS-historic

Rev

Rev 553 | Rev 625 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 553 Rev 623
Line 39... Line 39...
39
    char *name;
39
    char *name;
40
#endif
40
#endif
41
    int val;
41
    int val;
42
};
42
};
43
 
43
 
-
 
44
/*
-
 
45
 * SPINLOCK_DECLARE is to be used for dynamically allocated spinlocks,
-
 
46
 * where the lock gets initialized in run time.
-
 
47
 */
-
 
48
#define SPINLOCK_DECLARE(slname)    spinlock_t slname
-
 
49
 
-
 
50
/*
-
 
51
 * SPINLOCK_INITIALIZE is to be used for statically allocated spinlocks.
-
 
52
 * It declares and initializes the lock.
-
 
53
 */
-
 
54
#ifdef CONFIG_DEBUG_SPINLOCK
-
 
55
#define SPINLOCK_INITIALIZE(slname)     \
-
 
56
    spinlock_t slname = {       \
-
 
57
        .name = #slname,    \
-
 
58
        .val = 0        \
-
 
59
    }
-
 
60
#else
-
 
61
#define SPINLOCK_INITIALIZE(slname)     \
-
 
62
    spinlock_t slname = {       \
-
 
63
        .val = 0        \
-
 
64
    }
-
 
65
#endif
-
 
66
 
44
extern void spinlock_initialize(spinlock_t *sl, char *name);
67
extern void spinlock_initialize(spinlock_t *sl, char *name);
45
extern void spinlock_lock(spinlock_t *sl);
68
extern void spinlock_lock(spinlock_t *sl);
46
extern int spinlock_trylock(spinlock_t *sl);
69
extern int spinlock_trylock(spinlock_t *sl);
47
extern void spinlock_unlock(spinlock_t *sl);
70
extern void spinlock_unlock(spinlock_t *sl);
48
 
71
 
49
#else
72
#else
50
 
73
 
-
 
74
/* On UP systems, spinlocks are effectively left out. */
51
struct spinlock {
75
#define SPINLOCK_DECLARE(name)
52
};
-
 
-
 
76
#define SPINLOCK_INITIALIZE(name)
53
 
77
 
54
#define spinlock_initialize(x,name)
78
#define spinlock_initialize(x,name)
55
#define spinlock_lock(x)        preemption_disable()
79
#define spinlock_lock(x)        preemption_disable()
56
#define spinlock_trylock(x)         (preemption_disable(), 1)
80
#define spinlock_trylock(x)         (preemption_disable(), 1)
57
#define spinlock_unlock(x)      preemption_enable()
81
#define spinlock_unlock(x)      preemption_enable()