Lines Matching refs:uo_tbl

67  *	uo_tbl	- A pointer to the user object resource management table
77 sol_ofs_uobj_tbl_init(sol_ofs_uobj_table_t *uo_tbl, size_t uobj_sz)
79 ASSERT(uo_tbl != NULL);
81 rw_init(&uo_tbl->uobj_tbl_lock, NULL, RW_DRIVER, NULL);
82 uo_tbl->uobj_tbl_used_blks = 0;
83 uo_tbl->uobj_tbl_num_blks = 0;
84 uo_tbl->uobj_tbl_uo_cnt = 0;
85 uo_tbl->uobj_tbl_uo_sz = uobj_sz;
86 uo_tbl->uobj_tbl_uo_root = NULL;
93 * uo_tbl - A pointer to the user object resource management table
106 sol_ofs_uobj_tbl_fini(sol_ofs_uobj_table_t *uo_tbl)
112 ASSERT(uo_tbl != NULL);
114 rw_enter(&uo_tbl->uobj_tbl_lock, RW_WRITER);
116 if (uo_tbl->uobj_tbl_uo_cnt > 0) {
119 uo_tbl->uobj_tbl_uo_cnt);
126 for (i = 0; i < uo_tbl->uobj_tbl_used_blks; i++) {
127 blk = uo_tbl->uobj_tbl_uo_root[i];
146 if (uo_tbl->uobj_tbl_uo_root) {
148 size = uo_tbl->uobj_tbl_num_blks *
150 kmem_free(uo_tbl->uobj_tbl_uo_root, size);
153 rw_exit(&uo_tbl->uobj_tbl_lock);
154 rw_destroy(&uo_tbl->uobj_tbl_lock);
267 * uo_tbl - A pointer to the user object resource management table
284 sol_ofs_uobj_add(sol_ofs_uobj_table_t *uo_tbl, sol_ofs_uobj_t *uobj)
289 rw_enter(&uo_tbl->uobj_tbl_lock, RW_WRITER);
294 for (i = 0; i < uo_tbl->uobj_tbl_used_blks; i++) {
295 blk = uo_tbl->uobj_tbl_uo_root[i];
299 uo_tbl, blk->ofs_uo_blk_avail);
306 uo_tbl->uobj_tbl_uo_sz;
308 uo_tbl->uobj_tbl_uo_cnt++;
326 if (uo_tbl->uobj_tbl_used_blks == uo_tbl->uobj_tbl_num_blks) {
330 newsz = uo_tbl->uobj_tbl_num_blks + SOL_OFS_UO_BLKSZ;
339 rw_exit(&uo_tbl->uobj_tbl_lock);
343 if (uo_tbl->uobj_tbl_uo_root) {
346 oldsz = (uint_t)uo_tbl->uobj_tbl_num_blks *
348 bcopy(uo_tbl->uobj_tbl_uo_root, p, oldsz);
349 kmem_free(uo_tbl->uobj_tbl_uo_root, oldsz);
351 uo_tbl->uobj_tbl_uo_root = p;
352 uo_tbl->uobj_tbl_num_blks = newsz;
354 empty = uo_tbl->uobj_tbl_used_blks;
355 uo_tbl->uobj_tbl_used_blks++;
366 rw_exit(&uo_tbl->uobj_tbl_lock);
369 ASSERT(uo_tbl->uobj_tbl_uo_root[empty] == NULL);
370 uo_tbl->uobj_tbl_uo_root[empty] = blk;
378 uobj->uo_uobj_sz = uo_tbl->uobj_tbl_uo_sz;
379 uo_tbl->uobj_tbl_uo_cnt++;
382 rw_exit(&uo_tbl->uobj_tbl_lock);
390 * uo_tbl - A pointer to the user object resource management table
405 sol_ofs_uobj_remove(sol_ofs_uobj_table_t *uo_tbl, sol_ofs_uobj_t *uobj)
411 ASSERT(uo_tbl != NULL);
415 rw_enter(&uo_tbl->uobj_tbl_lock, RW_WRITER);
423 if ((uo_tbl->uobj_tbl_uo_cnt == 0) || !(uo_tbl->uobj_tbl_uo_root)) {
430 "UOBJ REMOVE: table 0x%P empty", (void *)uo_tbl);
437 if (i >= uo_tbl->uobj_tbl_used_blks) {
444 ASSERT(i < uo_tbl->uobj_tbl_num_blks);
446 blk = uo_tbl->uobj_tbl_uo_root[i];
471 uo_tbl->uobj_tbl_uo_root[i] = NULL;
473 uo_tbl->uobj_tbl_uo_cnt--;
476 rw_exit(&uo_tbl->uobj_tbl_lock);
484 * uo_tbl - A pointer to the user object resource management table
501 ofs_uobj_find(sol_ofs_uobj_table_t *uo_tbl, uint32_t uo_id, int add_ref)
507 ASSERT(uo_tbl != NULL);
510 rw_enter(&uo_tbl->uobj_tbl_lock, RW_READER);
512 if ((uo_tbl->uobj_tbl_uo_cnt == 0) || !(uo_tbl->uobj_tbl_uo_root)) {
520 (void *)uo_tbl);
527 if (i >= uo_tbl->uobj_tbl_used_blks) {
538 blk = uo_tbl->uobj_tbl_uo_root[i];
540 ASSERT(i < uo_tbl->uobj_tbl_num_blks);
558 rw_exit(&uo_tbl->uobj_tbl_lock);