Lines 50-83
typedef struct {
Link Here
|
50 |
static inline void |
50 |
static inline void |
51 |
spl_rw_set_owner(krwlock_t *rwp) |
51 |
spl_rw_set_owner(krwlock_t *rwp) |
52 |
{ |
52 |
{ |
53 |
unsigned long flags; |
|
|
54 |
|
55 |
spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); |
56 |
rwp->rw_owner = current; |
53 |
rwp->rw_owner = current; |
57 |
spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); |
|
|
58 |
} |
54 |
} |
59 |
|
55 |
|
60 |
static inline void |
56 |
static inline void |
61 |
spl_rw_clear_owner(krwlock_t *rwp) |
57 |
spl_rw_clear_owner(krwlock_t *rwp) |
62 |
{ |
58 |
{ |
63 |
unsigned long flags; |
|
|
64 |
|
65 |
spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); |
66 |
rwp->rw_owner = NULL; |
59 |
rwp->rw_owner = NULL; |
67 |
spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); |
|
|
68 |
} |
60 |
} |
69 |
|
61 |
|
70 |
static inline kthread_t * |
62 |
static inline kthread_t * |
71 |
rw_owner(krwlock_t *rwp) |
63 |
rw_owner(krwlock_t *rwp) |
72 |
{ |
64 |
{ |
73 |
unsigned long flags; |
65 |
return rwp->rw_owner; |
74 |
kthread_t *owner; |
|
|
75 |
|
76 |
spl_rwsem_lock_irqsave(&SEM(rwp)->wait_lock, flags); |
77 |
owner = rwp->rw_owner; |
78 |
spl_rwsem_unlock_irqrestore(&SEM(rwp)->wait_lock, flags); |
79 |
|
80 |
return owner; |
81 |
} |
66 |
} |
82 |
|
67 |
|
83 |
static inline int |
68 |
static inline int |
Lines 94-100
RW_READ_HELD(krwlock_t *rwp)
Link Here
|
94 |
static inline int |
79 |
static inline int |
95 |
RW_WRITE_HELD(krwlock_t *rwp) |
80 |
RW_WRITE_HELD(krwlock_t *rwp) |
96 |
{ |
81 |
{ |
97 |
return (spl_rwsem_is_locked(SEM(rwp)) && rw_owner(rwp) == current); |
82 |
return (rw_owner(rwp) == current); |
98 |
} |
83 |
} |
99 |
|
84 |
|
100 |
static inline int |
85 |
static inline int |