Lines Matching refs:cp

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