Lines Matching full:cp

265 	repcache_client_t *cp;  in client_alloc()  local
266 cp = uu_zalloc(sizeof (*cp)); in client_alloc()
267 if (cp == NULL) in client_alloc()
270 cp->rc_entities = uu_avl_create(entity_pool, cp, 0); in client_alloc()
271 if (cp->rc_entities == NULL) in client_alloc()
274 cp->rc_iters = uu_avl_create(iter_pool, cp, 0); in client_alloc()
275 if (cp->rc_iters == NULL) in client_alloc()
278 uu_list_node_init(cp, &cp->rc_link, client_pool); in client_alloc()
280 cp->rc_doorfd = -1; in client_alloc()
281 cp->rc_doorid = INVALID_DOORID; in client_alloc()
283 (void) pthread_mutex_init(&cp->rc_lock, NULL); in client_alloc()
284 (void) pthread_mutex_init(&cp->rc_annotate_lock, NULL); in client_alloc()
286 rc_node_ptr_init(&cp->rc_notify_ptr); in client_alloc()
288 return (cp); in client_alloc()
291 if (cp->rc_iters != NULL) in client_alloc()
292 uu_avl_destroy(cp->rc_iters); in client_alloc()
293 if (cp->rc_entities != NULL) in client_alloc()
294 uu_avl_destroy(cp->rc_entities); in client_alloc()
295 uu_free(cp); in client_alloc()
300 client_free(repcache_client_t *cp) in client_free() argument
302 assert(cp->rc_insert_thr == 0); in client_free()
303 assert(cp->rc_refcnt == 0); in client_free()
304 assert(cp->rc_doorfd == -1); in client_free()
305 assert(cp->rc_doorid == INVALID_DOORID); in client_free()
306 assert(uu_avl_first(cp->rc_entities) == NULL); in client_free()
307 assert(uu_avl_first(cp->rc_iters) == NULL); in client_free()
308 uu_avl_destroy(cp->rc_entities); in client_free()
309 uu_avl_destroy(cp->rc_iters); in client_free()
310 uu_list_node_fini(cp, &cp->rc_link, client_pool); in client_free()
311 (void) pthread_mutex_destroy(&cp->rc_lock); in client_free()
312 (void) pthread_mutex_destroy(&cp->rc_annotate_lock); in client_free()
313 rc_node_ptr_free_mem(&cp->rc_notify_ptr); in client_free()
314 uu_free(cp); in client_free()
318 client_insert(repcache_client_t *cp) in client_insert() argument
320 client_bucket_t *bp = CLIENT_HASH(cp->rc_id); in client_insert()
323 assert(cp->rc_id > 0); in client_insert()
329 (void) uu_list_find(bp->cb_list, cp, NULL, &idx); in client_insert()
330 uu_list_insert(bp->cb_list, cp, idx); in client_insert()
339 repcache_client_t *cp; in client_lookup() local
343 cp = uu_list_find(bp->cb_list, &id, NULL, NULL); in client_lookup()
348 if (cp != NULL) { in client_lookup()
349 (void) pthread_mutex_lock(&cp->rc_lock); in client_lookup()
350 assert(!(cp->rc_flags & RC_CLIENT_DEAD)); in client_lookup()
351 cp->rc_refcnt++; in client_lookup()
352 (void) pthread_mutex_unlock(&cp->rc_lock); in client_lookup()
356 return (cp); in client_lookup()
360 client_release(repcache_client_t *cp) in client_release() argument
362 (void) pthread_mutex_lock(&cp->rc_lock); in client_release()
363 assert(cp->rc_refcnt > 0); in client_release()
364 assert(cp->rc_insert_thr != pthread_self()); in client_release()
366 --cp->rc_refcnt; in client_release()
367 (void) pthread_cond_broadcast(&cp->rc_cv); in client_release()
368 (void) pthread_mutex_unlock(&cp->rc_lock); in client_release()
376 client_start_insert(repcache_client_t *cp) in client_start_insert() argument
378 (void) pthread_mutex_lock(&cp->rc_lock); in client_start_insert()
379 assert(cp->rc_refcnt > 0); in client_start_insert()
381 while (cp->rc_insert_thr != 0) { in client_start_insert()
382 assert(cp->rc_insert_thr != pthread_self()); in client_start_insert()
383 (void) pthread_cond_wait(&cp->rc_cv, &cp->rc_lock); in client_start_insert()
385 cp->rc_insert_thr = pthread_self(); in client_start_insert()
386 (void) pthread_mutex_unlock(&cp->rc_lock); in client_start_insert()
390 client_end_insert(repcache_client_t *cp) in client_end_insert() argument
392 (void) pthread_mutex_lock(&cp->rc_lock); in client_end_insert()
393 assert(cp->rc_insert_thr == pthread_self()); in client_end_insert()
394 cp->rc_insert_thr = 0; in client_end_insert()
395 (void) pthread_cond_broadcast(&cp->rc_cv); in client_end_insert()
396 (void) pthread_mutex_unlock(&cp->rc_lock); in client_end_insert()
401 entity_alloc(repcache_client_t *cp) in entity_alloc() argument
411 entity_add(repcache_client_t *cp, repcache_entity_t *ep) in entity_add() argument
415 (void) pthread_mutex_lock(&cp->rc_lock); in entity_add()
416 assert(cp->rc_insert_thr == pthread_self()); in entity_add()
418 (void) uu_avl_find(cp->rc_entities, ep, NULL, &idx); in entity_add()
419 uu_avl_insert(cp->rc_entities, ep, idx); in entity_add()
421 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_add()
425 entity_find(repcache_client_t *cp, uint32_t id) in entity_find() argument
429 (void) pthread_mutex_lock(&cp->rc_lock); in entity_find()
430 ep = uu_avl_find(cp->rc_entities, &id, NULL, NULL); in entity_find()
435 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_find()
446 entity_find2(repcache_client_t *cp, uint32_t id1, repcache_entity_t **out1, in entity_find2() argument
455 (void) pthread_mutex_lock(&cp->rc_lock); in entity_find2()
456 e1 = uu_avl_find(cp->rc_entities, &id1, NULL, NULL); in entity_find2()
457 e2 = uu_avl_find(cp->rc_entities, &id2, NULL, NULL); in entity_find2()
459 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_find2()
478 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_find2()
510 entity_remove(repcache_client_t *cp, uint32_t id) in entity_remove() argument
514 (void) pthread_mutex_lock(&cp->rc_lock); in entity_remove()
515 entity = uu_avl_find(cp->rc_entities, &id, NULL, NULL); in entity_remove()
519 uu_avl_remove(cp->rc_entities, entity); in entity_remove()
521 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_remove()
528 entity_cleanup(repcache_client_t *cp) in entity_cleanup() argument
533 (void) pthread_mutex_lock(&cp->rc_lock); in entity_cleanup()
534 while ((ep = uu_avl_teardown(cp->rc_entities, &cookie)) != NULL) { in entity_cleanup()
535 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_cleanup()
537 (void) pthread_mutex_lock(&cp->rc_lock); in entity_cleanup()
539 (void) pthread_mutex_unlock(&cp->rc_lock); in entity_cleanup()
544 iter_alloc(repcache_client_t *cp) in iter_alloc() argument
554 iter_add(repcache_client_t *cp, repcache_iter_t *iter) in iter_add() argument
558 (void) pthread_mutex_lock(&cp->rc_lock); in iter_add()
559 assert(cp->rc_insert_thr == pthread_self()); in iter_add()
561 (void) uu_avl_find(cp->rc_iters, iter, NULL, &idx); in iter_add()
562 uu_avl_insert(cp->rc_iters, iter, idx); in iter_add()
564 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_add()
568 iter_find(repcache_client_t *cp, uint32_t id) in iter_find() argument
572 (void) pthread_mutex_lock(&cp->rc_lock); in iter_find()
574 iter = uu_avl_find(cp->rc_iters, &id, NULL, NULL); in iter_find()
579 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_find()
589 iter_find_w_entity(repcache_client_t *cp, uint32_t iter_id, in iter_find_w_entity() argument
596 (void) pthread_mutex_lock(&cp->rc_lock); in iter_find_w_entity()
597 iter = uu_avl_find(cp->rc_iters, &iter_id, NULL, NULL); in iter_find_w_entity()
598 ep = uu_avl_find(cp->rc_entities, &entity_id, NULL, NULL); in iter_find_w_entity()
604 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_find_w_entity()
611 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_find_w_entity()
643 iter_remove(repcache_client_t *cp, uint32_t id) in iter_remove() argument
647 (void) pthread_mutex_lock(&cp->rc_lock); in iter_remove()
648 iter = uu_avl_find(cp->rc_iters, &id, NULL, NULL); in iter_remove()
650 uu_avl_remove(cp->rc_iters, iter); in iter_remove()
651 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_remove()
658 iter_cleanup(repcache_client_t *cp) in iter_cleanup() argument
663 (void) pthread_mutex_lock(&cp->rc_lock); in iter_cleanup()
664 while ((iter = uu_avl_teardown(cp->rc_iters, &cookie)) != NULL) { in iter_cleanup()
665 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_cleanup()
667 (void) pthread_mutex_lock(&cp->rc_lock); in iter_cleanup()
669 (void) pthread_mutex_unlock(&cp->rc_lock); in iter_cleanup()
681 repcache_client_t *cp; in client_destroy() local
685 cp = uu_list_find(bp->cb_list, &id, NULL, NULL); in client_destroy()
687 if (cp == NULL) { in client_destroy()
692 uu_list_remove(bp->cb_list, cp); in client_destroy()
697 rc_notify_info_fini(&cp->rc_notify_info); in client_destroy()
699 (void) pthread_mutex_lock(&cp->rc_lock); in client_destroy()
700 assert(!(cp->rc_flags & RC_CLIENT_DEAD)); in client_destroy()
701 cp->rc_flags |= RC_CLIENT_DEAD; in client_destroy()
703 if (cp->rc_doorfd != -1) { in client_destroy()
704 if (door_revoke(cp->rc_doorfd) < 0) in client_destroy()
706 cp->rc_doorfd = -1; in client_destroy()
707 cp->rc_doorid = INVALID_DOORID; in client_destroy()
710 while (cp->rc_refcnt > 0) in client_destroy()
711 (void) pthread_cond_wait(&cp->rc_cv, &cp->rc_lock); in client_destroy()
713 assert(cp->rc_insert_thr == 0 && cp->rc_notify_thr == 0); in client_destroy()
714 (void) pthread_mutex_unlock(&cp->rc_lock); in client_destroy()
719 entity_cleanup(cp); in client_destroy()
720 iter_cleanup(cp); in client_destroy()
725 rc_pg_notify_fini(&cp->rc_pg_notify); in client_destroy()
730 if (cp->rc_operation != NULL) in client_destroy()
731 free((void *)cp->rc_operation); in client_destroy()
732 if (cp->rc_file != NULL) in client_destroy()
733 free((void *)cp->rc_file); in client_destroy()
738 (void) adt_end_session(cp->rc_adt_session); in client_destroy()
740 client_free(cp); in client_destroy()
749 entity_setup(repcache_client_t *cp, struct rep_protocol_entity_setup *rpr) in entity_setup() argument
754 client_start_insert(cp); in entity_setup()
756 if ((ep = entity_find(cp, rpr->rpr_entityid)) != NULL) { in entity_setup()
760 client_end_insert(cp); in entity_setup()
780 ep = entity_alloc(cp); in entity_setup()
782 client_end_insert(cp); in entity_setup()
792 entity_add(cp, ep); in entity_setup()
793 client_end_insert(cp); in entity_setup()
799 entity_name(repcache_client_t *cp, const void *in, size_t insz, void *out_arg, in entity_name() argument
809 ep = entity_find(cp, rpr->rpr_entityid); in entity_name()
833 entity_parent_type(repcache_client_t *cp, const void *in, size_t insz, in entity_parent_type() argument
842 ep = entity_find(cp, rpr->rpr_entityid); in entity_parent_type()
869 entity_get_child(repcache_client_t *cp, in entity_get_child() argument
878 result = entity_find2(cp, childid, &child, parentid, &parent); in entity_get_child()
905 entity_get_parent(repcache_client_t *cp, struct rep_protocol_entity_parent *rpr) in entity_get_parent() argument
913 result = entity_find2(cp, childid, &child, outid, &parent); in entity_get_parent()
927 entity_get(repcache_client_t *cp, struct rep_protocol_entity_get *rpr) in entity_get() argument
932 ep = entity_find(cp, rpr->rpr_entityid); in entity_get()
956 entity_update(repcache_client_t *cp, struct rep_protocol_entity_update *rpr) in entity_update() argument
964 ep = entity_find(cp, rpr->rpr_entityid); in entity_update()
983 entity_reset(repcache_client_t *cp, struct rep_protocol_entity_reset *rpr) in entity_reset() argument
987 ep = entity_find(cp, rpr->rpr_entityid); in entity_reset()
1017 entity_create_child(repcache_client_t *cp, in entity_create_child() argument
1031 result = entity_find2(cp, parentid, &parent, childid, &child); in entity_create_child()
1053 entity_create_pg(repcache_client_t *cp, in entity_create_pg() argument
1067 result = entity_find2(cp, parentid, &parent, childid, &child); in entity_create_pg()
1091 entity_delete(repcache_client_t *cp, in entity_delete() argument
1103 entity = entity_find(cp, entityid); in entity_delete()
1122 entity_teardown(repcache_client_t *cp, struct rep_protocol_entity_teardown *rpr) in entity_teardown() argument
1124 entity_remove(cp, rpr->rpr_entityid); in entity_teardown()
1135 iter_setup(repcache_client_t *cp, struct rep_protocol_iter_request *rpr) in iter_setup() argument
1140 client_start_insert(cp); in iter_setup()
1145 if ((iter = iter_find(cp, rpr->rpr_iterid)) != NULL) { in iter_setup()
1149 client_end_insert(cp); in iter_setup()
1156 iter = iter_alloc(cp); in iter_setup()
1158 client_end_insert(cp); in iter_setup()
1165 iter_add(cp, iter); in iter_setup()
1167 client_end_insert(cp); in iter_setup()
1185 iter_start(repcache_client_t *cp, struct rep_protocol_iter_start *rpr) in iter_start() argument
1191 result = iter_find_w_entity(cp, rpr->rpr_iterid, &iter, in iter_start()
1239 iter_read(repcache_client_t *cp, struct rep_protocol_iter_read *rpr) in iter_read() argument
1246 result = iter_find_w_entity(cp, rpr->rpr_iterid, &iter, in iter_read()
1292 iter_read_value(repcache_client_t *cp, const void *in, size_t insz, in iter_read_value() argument
1305 iter = iter_find(cp, rpr->rpr_iterid); in iter_read_value()
1348 iter_reset(repcache_client_t *cp, struct rep_protocol_iter_request *rpr) in iter_reset() argument
1350 repcache_iter_t *iter = iter_find(cp, rpr->rpr_iterid); in iter_reset()
1364 iter_teardown(repcache_client_t *cp, struct rep_protocol_iter_request *rpr) in iter_teardown() argument
1366 iter_remove(cp, rpr->rpr_iterid); in iter_teardown()
1372 tx_start(repcache_client_t *cp, struct rep_protocol_transaction_start *rpr) in tx_start() argument
1381 result = entity_find2(cp, txid, &tx, epid, &ep); in tx_start()
1409 tx_commit(repcache_client_t *cp, const void *in, size_t insz, in tx_commit() argument
1424 tx = entity_find(cp, rpr->rpr_entityid); in tx_commit()
1458 next_snaplevel(repcache_client_t *cp, struct rep_protocol_entity_pair *rpr) in next_snaplevel() argument
1468 result = entity_find2(cp, srcid, &src, destid, &dest); in next_snaplevel()
1481 snapshot_take(repcache_client_t *cp, struct rep_protocol_snapshot_take *rpr) in snapshot_take() argument
1490 result = entity_find2(cp, srcid, &src, destid, &dest); in snapshot_take()
1516 snapshot_take_named(repcache_client_t *cp, in snapshot_take_named() argument
1526 result = entity_find2(cp, srcid, &src, destid, &dest); in snapshot_take_named()
1547 snapshot_attach(repcache_client_t *cp, struct rep_protocol_snapshot_attach *rpr) in snapshot_attach() argument
1556 result = entity_find2(cp, srcid, &src, destid, &dest); in snapshot_attach()
1570 property_get_type(repcache_client_t *cp, const void *in, size_t insz, in property_get_type() argument
1580 ep = entity_find(cp, rpr->rpr_entityid); in property_get_type()
1612 property_get_value(repcache_client_t *cp, const void *in, size_t insz, in property_get_value() argument
1621 ep = entity_find(cp, rpr->rpr_entityid); in property_get_value()
1644 propertygrp_notify(repcache_client_t *cp, in propertygrp_notify() argument
1659 if ((ep = entity_find(cp, rpr->rpr_entityid)) == NULL) { in propertygrp_notify()
1669 result = rc_pg_notify_setup(&cp->rc_pg_notify, &ep->re_node, in propertygrp_notify()
1688 client_add_notify(repcache_client_t *cp, in client_add_notify() argument
1695 return (rc_notify_info_add_name(&cp->rc_notify_info, in client_add_notify()
1699 return (rc_notify_info_add_type(&cp->rc_notify_info, in client_add_notify()
1709 client_wait(repcache_client_t *cp, const void *in, size_t insz, in client_wait() argument
1719 (void) pthread_mutex_lock(&cp->rc_lock); in client_wait()
1720 if (cp->rc_notify_thr != 0) { in client_wait()
1721 (void) pthread_mutex_unlock(&cp->rc_lock); in client_wait()
1726 cp->rc_notify_thr = pthread_self(); in client_wait()
1727 (void) pthread_mutex_unlock(&cp->rc_lock); in client_wait()
1729 result = rc_notify_info_wait(&cp->rc_notify_info, &cp->rc_notify_ptr, in client_wait()
1733 if ((ep = entity_find(cp, rpr->rpr_entityid)) != NULL) { in client_wait()
1736 &cp->rc_notify_ptr); in client_wait()
1744 rc_node_clear(&cp->rc_notify_ptr, 0); in client_wait()
1747 (void) pthread_mutex_lock(&cp->rc_lock); in client_wait()
1748 assert(cp->rc_notify_thr == pthread_self()); in client_wait()
1749 cp->rc_notify_thr = 0; in client_wait()
1750 (void) pthread_mutex_unlock(&cp->rc_lock); in client_wait()
1769 backup_repository(repcache_client_t *cp, in backup_repository() argument
1782 (void) pthread_mutex_lock(&cp->rc_lock); in backup_repository()
1783 if (rpr->rpr_changeid != cp->rc_changeid) { in backup_repository()
1786 cp->rc_changeid = rpr->rpr_changeid; in backup_repository()
1790 (void) pthread_mutex_unlock(&cp->rc_lock); in backup_repository()
1807 set_annotation(repcache_client_t *cp, struct rep_protocol_annotation *rpr) in set_annotation() argument
1836 (void) pthread_mutex_lock(&cp->rc_annotate_lock); in set_annotation()
1838 old_ptrs[0] = cp->rc_operation; in set_annotation()
1839 old_ptrs[1] = cp->rc_file; in set_annotation()
1842 cp->rc_operation = operation; in set_annotation()
1843 cp->rc_file = file; in set_annotation()
1849 cp->rc_annotate = (operation != NULL) || (file != NULL); in set_annotation()
1850 (void) pthread_mutex_unlock(&cp->rc_annotate_lock); in set_annotation()
1853 * operation and file pointers are saved in cp, so don't free them in set_annotation()
1872 if (cp->rc_annotate) { in set_annotation()
1877 adt_get_auid(cp->rc_adt_session, &audit_uid); in set_annotation()
1884 sessionid = cp->rc_adt_sessionid; in set_annotation()
1886 adt_set_asid(cp->rc_adt_session, sessionid); in set_annotation()
1914 repcache_client_t *cp = ti->ti_active_client; in client_annotation_needed() local
1917 (void) pthread_mutex_lock(&cp->rc_annotate_lock); in client_annotation_needed()
1918 if (cp->rc_annotate) { in client_annotation_needed()
1920 if (cp->rc_operation == NULL) { in client_annotation_needed()
1924 if (strlcpy(operation, cp->rc_operation, oper_sz) >= in client_annotation_needed()
1930 if (cp->rc_file == NULL) { in client_annotation_needed()
1934 if (strlcpy(file, cp->rc_file, file_sz) >= file_sz) { in client_annotation_needed()
1940 (void) pthread_mutex_unlock(&cp->rc_annotate_lock); in client_annotation_needed()
1948 repcache_client_t *cp = ti->ti_active_client; in client_annotation_finished() local
1950 (void) pthread_mutex_lock(&cp->rc_annotate_lock); in client_annotation_finished()
1951 cp->rc_annotate = 0; in client_annotation_finished()
1952 (void) pthread_mutex_unlock(&cp->rc_annotate_lock); in client_annotation_finished()
1956 start_audit_session(repcache_client_t *cp) in start_audit_session() argument
1965 cp->rc_adt_session = NULL; in start_audit_session()
2006 cp->rc_adt_session = session; in start_audit_session()
2007 adt_get_asid(session, &cp->rc_adt_sessionid); in start_audit_session()
2026 repository_switch(repcache_client_t *cp, in repository_switch() argument
2037 (void) pthread_mutex_lock(&cp->rc_lock); in repository_switch()
2038 if (rpr->rpr_changeid != cp->rc_changeid) { in repository_switch()
2041 cp->rc_changeid = rpr->rpr_changeid; in repository_switch()
2045 (void) pthread_mutex_unlock(&cp->rc_lock); in repository_switch()
2050 typedef rep_protocol_responseid_t protocol_simple_f(repcache_client_t *cp,
2055 simple_handler(repcache_client_t *cp, const void *in, size_t insz, in simple_handler() argument
2064 out->rpr_response = (*f)(cp, in); in simple_handler()
2067 typedef rep_protocol_responseid_t protocol_simple_fd_f(repcache_client_t *cp,
2072 simple_fd_handler(repcache_client_t *cp, const void *in, size_t insz, in simple_fd_handler() argument
2081 out->rpr_response = (*f)(cp, in, out_fd); in simple_fd_handler()
2297 repcache_client_t *cp; in client_switcher() local
2355 cp = client_lookup(id); in client_switcher()
2357 * cp is held in client_switcher()
2360 if (cp == NULL) in client_switcher()
2364 rlp->rl_client = cp; in client_switcher()
2366 ti->ti_active_client = cp; in client_switcher()
2394 e->pt_fd_handler(cp, argp, arg_size, retval, &retsize, in client_switcher()
2397 e->pt_handler(cp, argp, arg_size, retval, &retsize, e->pt_arg); in client_switcher()
2401 client_release(cp); in client_switcher()
2440 repcache_client_t *cp; in create_client() local
2449 cp = client_alloc(); in create_client()
2450 if (cp == NULL) in create_client()
2454 cp->rc_id = ++client_maxid; in create_client()
2457 cp->rc_all_auths = privileged; in create_client()
2458 cp->rc_pid = pid; in create_client()
2459 cp->rc_debug = debugflags; in create_client()
2461 start_audit_session(cp); in create_client()
2463 cp->rc_doorfd = door_create(client_switcher, (void *)cp->rc_id, in create_client()
2466 if (cp->rc_doorfd < 0) { in create_client()
2467 client_free(cp); in create_client()
2471 (void) door_setparam(cp->rc_doorfd, DOOR_PARAM_DATA_MIN, in create_client()
2475 if ((fd = dup(cp->rc_doorfd)) < 0 || in create_client()
2476 door_info(cp->rc_doorfd, &info) < 0) { in create_client()
2479 (void) door_revoke(cp->rc_doorfd); in create_client()
2480 cp->rc_doorfd = -1; in create_client()
2481 client_free(cp); in create_client()
2485 rc_pg_notify_init(&cp->rc_pg_notify); in create_client()
2486 rc_notify_info_init(&cp->rc_notify_info); in create_client()
2488 client_insert(cp); in create_client()
2490 cp->rc_doorid = info.di_uniquifier; in create_client()