Add some missing rw_lock symbols

git-svn-id: https://outreach.scidac.gov/svn/spl/trunk@27 7e1ea52c-4ff2-0310-8f11-9dd32ca42a1c
This commit is contained in:
behlendo 2008-03-06 23:42:37 +00:00
parent 77b1fe8fa8
commit ed61a7d05e
3 changed files with 38 additions and 29 deletions

View File

@ -21,10 +21,10 @@ typedef enum {
RW_READER
} krw_t;
#define RW_READ_HELD(x) (rw_read_held((x)))
#define RW_WRITE_HELD(x) (rw_write_held((x)))
#define RW_LOCK_HELD(x) (rw_lock_held((x)))
#define RW_ISWRITER(x) (rw_iswriter(x))
#define RW_READ_HELD(x) (__rw_read_held((x)))
#define RW_WRITE_HELD(x) (__rw_write_held((x)))
#define RW_LOCK_HELD(x) (__rw_lock_held((x)))
#define RW_ISWRITER(x) (__rw_iswriter(x))
#define RW_MAGIC 0x3423645a
#define RW_POISON 0xa6
@ -36,6 +36,10 @@ typedef struct {
struct task_struct *rw_owner; /* holder of the write lock */
} krwlock_t;
extern int __rw_read_held(krwlock_t *rwlp);
extern int __rw_write_held(krwlock_t *rwlp);
extern int __rw_lock_held(krwlock_t *rwlp);
static __inline__ void
rw_init(krwlock_t *rwlp, char *name, krw_type_t type, void *arg)
{

View File

@ -13,6 +13,8 @@ extern "C" {
/* Missing defines.
*/
#define FALSE 0
#define TRUE 1
#define INT32_MAX INT_MAX
#define UINT64_MAX (~0ULL)
#define NBBY 8

View File

@ -1,7 +1,33 @@
#include <sys/rwlock.h>
int
rw_lock_held(krwlock_t *rwlp)
__rw_read_held(krwlock_t *rwlp)
{
BUG_ON(rwlp->rw_magic != RW_MAGIC);
if (__rw_lock_held(rwlp) && rwlp->rw_owner == NULL) {
return 1;
}
return 0;
}
EXPORT_SYMBOL(__rw_read_held);
int
__rw_write_held(krwlock_t *rwlp)
{
BUG_ON(rwlp->rw_magic != RW_MAGIC);
if (rwlp->rw_owner == current) {
return 1;
}
return 0;
}
EXPORT_SYMBOL(__rw_write_held);
int
__rw_lock_held(krwlock_t *rwlp)
{
BUG_ON(rwlp->rw_magic != RW_MAGIC);
@ -15,27 +41,4 @@ rw_lock_held(krwlock_t *rwlp)
return 0;
}
int
rw_read_held(krwlock_t *rwlp)
{
BUG_ON(rwlp->rw_magic != RW_MAGIC);
if (rw_lock_held(rwlp) && rwlp->rw_owner == NULL) {
return 1;
}
return 0;
}
int
rw_write_held(krwlock_t *rwlp)
{
BUG_ON(rwlp->rw_magic != RW_MAGIC);
if (rwlp->rw_owner == current) {
return 1;
}
return 0;
}
EXPORT_SYMBOL(__rw_lock_held);