/* Number of ranges that can be allocated */
long nr_ranges;
- spinlock_t lock;
+ rwlock_t lock;
/* Pretty-printing name. */
char name[32];
ASSERT(s <= e);
- spin_lock(&r->lock);
+ write_lock(&r->lock);
x = find_range(r, s);
y = find_range(r, e);
}
out:
- spin_unlock(&r->lock);
+ write_unlock(&r->lock);
return rc;
}
ASSERT(s <= e);
- spin_lock(&r->lock);
+ write_lock(&r->lock);
x = find_range(r, s);
y = find_range(r, e);
}
out:
- spin_unlock(&r->lock);
+ write_unlock(&r->lock);
return rc;
}
ASSERT(s <= e);
- spin_lock(&r->lock);
+ read_lock(&r->lock);
x = find_range(r, s);
contains = (x && (x->e >= e));
- spin_unlock(&r->lock);
+ read_unlock(&r->lock);
return contains;
}
ASSERT(s <= e);
- spin_lock(&r->lock);
+ read_lock(&r->lock);
x = find_range(r, e);
overlaps = (x && (s <= x->e));
- spin_unlock(&r->lock);
+ read_unlock(&r->lock);
return overlaps;
}
struct range *x;
int rc = 0;
- spin_lock(&r->lock);
+ read_lock(&r->lock);
for ( x = find_range(r, s); x && (x->s <= e) && !rc; x = next_range(r, x) )
if ( x->e >= s )
rc = cb(max(x->s, s), min(x->e, e), ctxt);
- spin_unlock(&r->lock);
+ read_unlock(&r->lock);
return rc;
}
if ( r == NULL )
return NULL;
- spin_lock_init(&r->lock);
+ rwlock_init(&r->lock);
INIT_LIST_HEAD(&r->range_list);
r->nr_ranges = -1;
if ( a < b )
{
- spin_lock(&a->lock);
- spin_lock(&b->lock);
+ write_lock(&a->lock);
+ write_lock(&b->lock);
}
else
{
- spin_lock(&b->lock);
- spin_lock(&a->lock);
+ write_lock(&b->lock);
+ write_lock(&a->lock);
}
list_splice_init(&a->range_list, &tmp);
list_splice_init(&b->range_list, &a->range_list);
list_splice(&tmp, &b->range_list);
- spin_unlock(&a->lock);
- spin_unlock(&b->lock);
+ write_unlock(&a->lock);
+ write_unlock(&b->lock);
}
/*****************************
int nr_printed = 0;
struct range *x;
- spin_lock(&r->lock);
+ read_lock(&r->lock);
printk("%-10s {", r->name);
printk(" }");
- spin_unlock(&r->lock);
+ read_unlock(&r->lock);
}
void rangeset_domain_printk(