Lines Matching refs:table

63 __nis_init_hash_table(__nis_hash_table_mt *table,  in __nis_init_hash_table()  argument
68 if (table != 0) { in __nis_init_hash_table()
69 errorcode = pthread_mutex_init(&table->lock, 0); in __nis_init_hash_table()
76 errorcode = pthread_cond_init(&table->cond, 0); in __nis_init_hash_table()
83 errorcode = pthread_mutex_init(&table->traverser_id_lock, 0); in __nis_init_hash_table()
91 table->traversed = 0; in __nis_init_hash_table()
92 table->locked_items = 0; in __nis_init_hash_table()
93 (void) memset(table->keys, 0, sizeof (table->keys)); in __nis_init_hash_table()
94 table->first = 0; in __nis_init_hash_table()
95 table->destroyItem = itemDestructor; in __nis_init_hash_table()
100 __nis_lock_hash_table(__nis_hash_table_mt *table, int traverse, char *msg) { in __nis_lock_hash_table() argument
104 if (table != 0) { in __nis_lock_hash_table()
113 (void) pthread_mutex_lock(&table->lock); in __nis_lock_hash_table()
115 while ((table->traversed != 0 && in __nis_lock_hash_table()
116 table->traverser_id != myself) || in __nis_lock_hash_table()
117 table->locked_items != 0) { in __nis_lock_hash_table()
121 myself, table)); in __nis_lock_hash_table()
122 (void) pthread_cond_wait(&table->cond, in __nis_lock_hash_table()
123 &table->lock); in __nis_lock_hash_table()
126 (void) pthread_mutex_lock(&table->traverser_id_lock); in __nis_lock_hash_table()
128 table->traversed = 1; in __nis_lock_hash_table()
129 table->traverser_id = myself; in __nis_lock_hash_table()
130 (void) pthread_mutex_unlock(&table->traverser_id_lock); in __nis_lock_hash_table()
140 if (pthread_mutex_trylock(&table->lock) == EBUSY) { in __nis_lock_hash_table()
145 &table->traverser_id_lock); in __nis_lock_hash_table()
146 if (table->traversed != 0 && in __nis_lock_hash_table()
147 table->traverser_id == myself) { in __nis_lock_hash_table()
152 &table->traverser_id_lock); in __nis_lock_hash_table()
158 myself, table)); in __nis_lock_hash_table()
160 (void) pthread_mutex_lock(&table->lock); in __nis_lock_hash_table()
166 myself, traverse?"traverse":"non-traverse", table)); in __nis_lock_hash_table()
174 __nis_ulock_hash_table(__nis_hash_table_mt *table, int traverse, char *msg) { in __nis_ulock_hash_table() argument
178 if (table != 0) { in __nis_ulock_hash_table()
187 (void) pthread_mutex_lock(&table->traverser_id_lock); in __nis_ulock_hash_table()
189 if (table->traversed != 0 && in __nis_ulock_hash_table()
190 table->traverser_id == pthread_self()) { in __nis_ulock_hash_table()
191 table->traversed = 0; in __nis_ulock_hash_table()
200 (void) pthread_cond_signal(&table->cond); in __nis_ulock_hash_table()
202 (void) pthread_mutex_unlock(&table->traverser_id_lock); in __nis_ulock_hash_table()
210 (void) pthread_mutex_lock(&table->traverser_id_lock); in __nis_ulock_hash_table()
212 if (table->traversed == 0) { in __nis_ulock_hash_table()
215 (void) pthread_mutex_unlock(&table->traverser_id_lock); in __nis_ulock_hash_table()
219 (void) pthread_mutex_unlock(&table->lock); in __nis_ulock_hash_table()
223 pthread_self(), traverse?"traverse":"non-traverse", table, in __nis_ulock_hash_table()
232 __find_item_mt(nis_name name, __nis_hash_table_mt *table, int *keyp) { in __find_item_mt() argument
243 key %= (sizeof (table->keys) / sizeof (table->keys[0])); in __find_item_mt()
248 for (pp = &table->keys[key]; (it = *pp) != 0; pp = &it->next) { in __find_item_mt()
269 __nis_insert_item_mt(void *arg, __nis_hash_table_mt *table, int readwrite) { in __nis_insert_item_mt() argument
275 if (item == 0 || __nis_lock_hash_table(table, 0, "nitmt") == 0) in __nis_insert_item_mt()
278 if ((*(pp = __find_item_mt(item->name, table, &key))) != 0) { in __nis_insert_item_mt()
279 (void) __nis_ulock_hash_table(table, 0, "nitmt"); in __nis_insert_item_mt()
289 table->locked_items++; in __nis_insert_item_mt()
293 table->locked_items++; in __nis_insert_item_mt()
299 if (table->first) in __nis_insert_item_mt()
300 table->first->prv_item = item; in __nis_insert_item_mt()
302 item->nxt_item = table->first; in __nis_insert_item_mt()
304 table->first = item; in __nis_insert_item_mt()
306 (void) __nis_ulock_hash_table(table, 0, "nitmt"); in __nis_insert_item_mt()
312 __nis_insert_name_mt(nis_name name, __nis_hash_table_mt *table) { in __nis_insert_name_mt() argument
316 if (name == 0 || table == 0) in __nis_insert_name_mt()
330 if (! __nis_insert_item_mt(item, table, 0)) { in __nis_insert_name_mt()
347 __nis_find_item_mt(nis_name name, __nis_hash_table_mt *table, int readwrite, in __nis_find_item_mt() argument
353 if (name == 0 || __nis_lock_hash_table(table, 0, "nfimt") == 0) in __nis_find_item_mt()
369 while ((item = *__find_item_mt(name, table, 0)) != 0) { in __nis_find_item_mt()
379 (void) __nis_ulock_hash_table(table, 0, "nfimt"); in __nis_find_item_mt()
382 (void) pthread_cond_wait(&item->lock, &table->lock); in __nis_find_item_mt()
389 table->locked_items++; in __nis_find_item_mt()
394 table->locked_items++; in __nis_find_item_mt()
401 (void) __nis_ulock_hash_table(table, 0, "nfimt"); in __nis_find_item_mt()
407 __nis_pop_item_mt(__nis_hash_table_mt *table) { in __nis_pop_item_mt() argument
412 if (__nis_lock_hash_table(table, 0, "npimt") == 0) in __nis_pop_item_mt()
417 while ((item = table->first) != 0) { in __nis_pop_item_mt()
418 if (table->destroyItem != 0) in __nis_pop_item_mt()
424 (void) pthread_cond_wait(&item->lock, &table->lock); in __nis_pop_item_mt()
429 __nis_ulock_hash_table(table, 0, "npimt"); in __nis_pop_item_mt()
434 for (cur = table->keys[item->keychain]; cur; in __nis_pop_item_mt()
440 table->keys[cur->keychain] = cur->next; in __nis_pop_item_mt()
444 table->first = cur->nxt_item; in __nis_pop_item_mt()
458 if (table->locked_items != 0 && in __nis_pop_item_mt()
460 table->locked_items--; in __nis_pop_item_mt()
461 if (table->locked_items == 0) { in __nis_pop_item_mt()
463 (void) pthread_cond_signal(&table->cond); in __nis_pop_item_mt()
479 table->destroyItem != 0) { in __nis_pop_item_mt()
480 (*table->destroyItem)(item); in __nis_pop_item_mt()
488 (void) __nis_ulock_hash_table(table, 0, "npimt"); in __nis_pop_item_mt()
496 return ((item != 0) ? item : __nis_pop_item_mt(table)); in __nis_pop_item_mt()
500 __nis_remove_item_mt(nis_name name, __nis_hash_table_mt *table) { in __nis_remove_item_mt() argument
505 if (__nis_lock_hash_table(table, 0, "nrimt") == 0) in __nis_remove_item_mt()
510 while ((nl = *(pp = __find_item_mt(name, table, (int *)0))) != 0) { in __nis_remove_item_mt()
511 if (table->destroyItem != 0) in __nis_remove_item_mt()
517 (void) pthread_cond_wait(&nl->lock, &table->lock); in __nis_remove_item_mt()
521 (void) __nis_ulock_hash_table(table, 0, "nrimt"); in __nis_remove_item_mt()
533 table->first = nl->nxt_item; in __nis_remove_item_mt()
547 if (table->locked_items != 0 && in __nis_remove_item_mt()
549 table->locked_items--; in __nis_remove_item_mt()
550 if (table->locked_items == 0) { in __nis_remove_item_mt()
552 (void) pthread_cond_signal(&table->cond); in __nis_remove_item_mt()
564 if (nl->readers == 0 && nl->writer == 0 && table->destroyItem != 0) { in __nis_remove_item_mt()
565 (*table->destroyItem)(nl); in __nis_remove_item_mt()
569 (void) __nis_ulock_hash_table(table, 0, "nrimt"); in __nis_remove_item_mt()
581 __nis_release_item(void *arg, __nis_hash_table_mt *table, int readwrite) { in __nis_release_item() argument
586 if (item == 0 || __nis_lock_hash_table(table, 0, "nreli") == 0) in __nis_release_item()
594 (void) __nis_ulock_hash_table(table, 0, "nreli"); in __nis_release_item()
601 if (table->locked_items != 0) in __nis_release_item()
602 table->locked_items--; in __nis_release_item()
609 if (table->locked_items != 0) in __nis_release_item()
610 table->locked_items--; in __nis_release_item()
615 if (table->locked_items == 0) { in __nis_release_item()
617 (void) pthread_cond_signal(&table->cond); in __nis_release_item()
632 table->destroyItem != 0) in __nis_release_item()
633 (*table->destroyItem)(item); in __nis_release_item()
635 (void) __nis_ulock_hash_table(table, 0, "nreli"); in __nis_release_item()
674 __nis_hash_table_mt *table, in __nis_scan_table_mt() argument
680 if (table == 0) { in __nis_scan_table_mt()
684 if (__nis_lock_hash_table(table, 1, "nstmt") == 0) { in __nis_scan_table_mt()
690 slot < sizeof (table->keys) / sizeof (table->keys[0]); in __nis_scan_table_mt()
694 for (it = table->keys[slot]; it != 0; it = it->next) { in __nis_scan_table_mt()
700 if (__nis_ulock_hash_table(table, 1, "nstmt") == 0) in __nis_scan_table_mt()