rsm_resource
rw_enter(&rsm_resource.rsmrc_lock, RW_WRITER);
for (i = 0; i < rsm_resource.rsmrc_len; i++) {
blk = rsm_resource.rsmrc_root[i];
rw_exit(&rsm_resource.
rw_exit(&rsm_resource.rsmrc_lock);
if (rsm_resource.rsmrc_len == rsm_resource.rsmrc_sz) {
uint_t newsz = (uint_t)rsm_resource.rsmrc_sz +
if (rsm_resource.rsmrc_len*RSMRC_BLKSZ >=
rw_exit(&rsm_resource.rsmrc_lock);
if (rsm_resource.rsmrc_root) {
oldsz = (uint_t)(rsm_resource.rsmrc_sz *
bcopy(rsm_resource.rsmrc_root, p, oldsz);
kmem_free(rsm_resource.rsmrc_root, oldsz);
rsm_resource.rsmrc_root = p;
rsm_resource.rsmrc_sz = (int)newsz;
empty = rsm_resource.rsmrc_len;
rsm_resource.rsmrc_len++;
ASSERT(rsm_resource.rsmrc_root[empty] == NULL);
rsm_resource.rsmrc_root[empty] = blk;
rw_exit(&rsm_resource.rsmrc_lock);
rw_exit(&rsm_resource.rsmrc_lock);
if (i >= rsm_resource.rsmrc_len) {
rw_enter(&rsm_resource.rsmrc_lock, RW_WRITER);
ASSERT(rsm_resource.rsmrc_root);
ASSERT(i < rsm_resource.rsmrc_len);
ASSERT(i < rsm_resource.rsmrc_sz);
blk = rsm_resource.rsmrc_root[i];
rw_exit(&rsm_resource.rsmrc_lock);
rsm_resource.rsmrc_root[i] = NULL;
rw_exit(&rsm_resource.rsmrc_lock);
if (i >= rsm_resource.rsmrc_len) {
rw_enter(&rsm_resource.rsmrc_lock, RW_READER);
blk = rsm_resource.rsmrc_root[i];
ASSERT(i < rsm_resource.rsmrc_len);
ASSERT(i < rsm_resource.rsmrc_sz);
rw_exit(&rsm_resource.rsmrc_lock);
rw_enter(&rsm_resource.rsmrc_lock, RW_READER);
ASSERT(rsm_resource.rsmrc_root);
ASSERT(i < rsm_resource.rsmrc_len);
ASSERT(i < rsm_resource.rsmrc_sz);
blk = rsm_resource.rsmrc_root[i];
rw_exit(&rsm_resource.rsmrc_lock);
rw_enter(&rsm_resource.rsmrc_lock, RW_WRITER);
for (i = 0; i < rsm_resource.rsmrc_len; i++) {
blk = rsm_resource.rsmrc_root[i];
rsm_resource.rsmrc_root[i] = NULL;
if (rsm_resource.rsmrc_root) {
i = rsm_resource.rsmrc_sz * (int)sizeof (rsmresource_blk_t *);
kmem_free(rsm_resource.rsmrc_root, (uint_t)i);
rsm_resource.rsmrc_root = NULL;
rsm_resource.rsmrc_len = 0;
rsm_resource.rsmrc_sz = 0;
rw_exit(&rsm_resource.rsmrc_lock);
rw_enter(&rsm_resource.rsmrc_lock, RW_READER);
for (i = 0; i < rsm_resource.rsmrc_len; i++) {
blk = rsm_resource.rsmrc_root[i];
rw_exit(&rsm_resource.rsmrc_lock);
static struct rsmresource_table rsm_resource;
rw_init(&rsm_resource.rsmrc_lock, NULL, RW_DRIVER, NULL);
rw_destroy(&rsm_resource.rsmrc_lock);
rw_enter(&rsm_resource.rsmrc_lock, RW_READER);
for (i = 0; i < rsm_resource.rsmrc_len; i++) {
blk = rsm_resource.rsmrc_root[i];
rw_exit(&rsm_resource.rsmrc_lock);
struct rsm_resource *rsmrc_next;