Lines Matching refs:mgr_ctx

98 svcctl_scm_pg_get_val(svcctl_manager_context_t *mgr_ctx,  in svcctl_scm_pg_get_val()  argument
107 if (scf_pg_get_property(pg, propname, mgr_ctx->mc_scf_gprop) == -1) in svcctl_scm_pg_get_val()
110 if (scf_property_is_type(mgr_ctx->mc_scf_gprop, ty) != SCF_SUCCESS) in svcctl_scm_pg_get_val()
113 if (scf_property_get_value(mgr_ctx->mc_scf_gprop, in svcctl_scm_pg_get_val()
114 mgr_ctx->mc_scf_gval) != SCF_SUCCESS) { in svcctl_scm_pg_get_val()
135 (mgr_ctx->mc_scf_gval, vp, sz) > 0 ? SCF_SUCCESS : -1; in svcctl_scm_pg_get_val()
139 r = scf_value_get_boolean(mgr_ctx->mc_scf_gval, (uint8_t *)vp); in svcctl_scm_pg_get_val()
143 r = scf_value_get_count(mgr_ctx->mc_scf_gval, (uint64_t *)vp); in svcctl_scm_pg_get_val()
147 r = scf_value_get_integer(mgr_ctx->mc_scf_gval, (int64_t *)vp); in svcctl_scm_pg_get_val()
153 r = scf_value_get_time(mgr_ctx->mc_scf_gval, &sec, &ns); in svcctl_scm_pg_get_val()
160 r = scf_value_get_ustring(mgr_ctx->mc_scf_gval, vp, sz) > 0 ? in svcctl_scm_pg_get_val()
182 svcctl_scm_get_running_snapshot(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_get_running_snapshot() argument
187 snap = scf_snapshot_create(mgr_ctx->mc_scf_hdl); in svcctl_scm_get_running_snapshot()
211 svcctl_scm_inst_get_val(svcctl_manager_context_t *mgr_ctx, scf_instance_t *inst, in svcctl_scm_inst_get_val() argument
219 snap = svcctl_scm_get_running_snapshot(mgr_ctx, inst); in svcctl_scm_inst_get_val()
222 mgr_ctx->mc_scf_gpg); in svcctl_scm_inst_get_val()
224 r = scf_instance_get_pg(inst, pgname, mgr_ctx->mc_scf_gpg); in svcctl_scm_inst_get_val()
230 r = svcctl_scm_pg_get_val(mgr_ctx, mgr_ctx->mc_scf_gpg, propname, ty, in svcctl_scm_inst_get_val()
243 svcctl_scm_get_restarter_string_prop(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_get_restarter_string_prop() argument
246 if (svcctl_scm_inst_get_val(mgr_ctx, inst, SCF_PG_RESTARTER, pname, in svcctl_scm_get_restarter_string_prop()
257 svcctl_scm_svc_transitioning(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_svc_transitioning() argument
263 svcctl_scm_get_restarter_string_prop(mgr_ctx, inst, in svcctl_scm_svc_transitioning()
275 svcctl_scm_get_svcstate(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_get_svcstate() argument
287 svcctl_scm_get_restarter_string_prop(mgr_ctx, wip->inst, in svcctl_scm_get_svcstate()
296 if (svcctl_scm_svc_transitioning(mgr_ctx, wip->inst)) in svcctl_scm_get_svcstate()
314 svcctl_scm_get_svcdesc(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_get_svcdesc() argument
322 if ((desc_buf = malloc(mgr_ctx->mc_scf_max_value_len + 1)) == NULL) in svcctl_scm_get_svcdesc()
325 bzero(desc_buf, mgr_ctx->mc_scf_max_value_len + 1); in svcctl_scm_get_svcdesc()
328 else if (svcctl_scm_inst_get_val(mgr_ctx, wip->inst, in svcctl_scm_get_svcdesc()
330 mgr_ctx->mc_scf_max_value_len, 0, 1, 1) == -1) in svcctl_scm_get_svcdesc()
359 svcctl_scm_get_svcfmri(svcctl_manager_context_t *mgr_ctx, in svcctl_scm_get_svcfmri() argument
368 if ((fmri_buf = malloc(mgr_ctx->mc_scf_max_fmri_len + 1)) == NULL) in svcctl_scm_get_svcfmri()
373 mgr_ctx->mc_scf_max_fmri_len + 1) == -1) { in svcctl_scm_get_svcfmri()
379 mgr_ctx->mc_scf_max_fmri_len + 1); in svcctl_scm_get_svcfmri()
382 fmri_size = mgr_ctx->mc_scf_max_fmri_len + 1 - \ in svcctl_scm_get_svcfmri()
385 if (svcctl_scm_pg_get_val(mgr_ctx, wip->pg, in svcctl_scm_get_svcfmri()
389 mgr_ctx->mc_scf_max_fmri_len + 1); in svcctl_scm_get_svcfmri()
442 svcctl_manager_context_t *mgr_ctx = (svcctl_manager_context_t *)context; in svcctl_scm_cb_list_svcinst() local
449 if (svcctl_scm_get_svcfmri(mgr_ctx, &node->sn_fmri, wip) != 0) in svcctl_scm_cb_list_svcinst()
457 if (svcctl_scm_get_svcdesc(mgr_ctx, &node->sn_desc, wip) != 0) in svcctl_scm_cb_list_svcinst()
461 if (svcctl_scm_get_svcstate(mgr_ctx, &node->sn_state, wip) != 0) in svcctl_scm_cb_list_svcinst()
465 uu_avl_node_init(node, &node->sn_node, mgr_ctx->mc_svcs_pool); in svcctl_scm_cb_list_svcinst()
466 (void) uu_avl_find(mgr_ctx->mc_svcs, node, in svcctl_scm_cb_list_svcinst()
467 &mgr_ctx->mc_scf_max_fmri_len, &idx); in svcctl_scm_cb_list_svcinst()
468 uu_avl_insert(mgr_ctx->mc_svcs, node, idx); in svcctl_scm_cb_list_svcinst()
550 svcctl_scm_enum_services(svcctl_manager_context_t *mgr_ctx, uint8_t *buf, in svcctl_scm_enum_services() argument
559 uint32_t numsvcs = mgr_ctx->mc_scf_numsvcs; in svcctl_scm_enum_services()
570 if (buflen < mgr_ctx->mc_bytes_needed) { in svcctl_scm_enum_services()
578 node = uu_avl_first(mgr_ctx->mc_svcs); in svcctl_scm_enum_services()
581 node = uu_avl_next(mgr_ctx->mc_svcs, node); in svcctl_scm_enum_services()
632 node = uu_avl_next(mgr_ctx->mc_svcs, node); in svcctl_scm_enum_services()
640 if (*resume_handle >= mgr_ctx->mc_scf_numsvcs) in svcctl_scm_enum_services()
670 svcctl_scm_bytes_needed(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_bytes_needed() argument
674 (void) uu_avl_walk(mgr_ctx->mc_svcs, svcctl_scm_cb_bytes_needed, in svcctl_scm_bytes_needed()
678 mgr_ctx->mc_scf_numsvcs * sizeof (svc_enum_status_t); in svcctl_scm_bytes_needed()
681 mgr_ctx->mc_bytes_needed = bytes_needed; in svcctl_scm_bytes_needed()
694 svcctl_scm_validate_service(svcctl_manager_context_t *mgr_ctx, char *svc_name) in svcctl_scm_validate_service() argument
696 if (svcctl_scm_find_service(mgr_ctx, svc_name) != NULL) in svcctl_scm_validate_service()
737 svcctl_scm_find_service(svcctl_manager_context_t *mgr_ctx, char *svc_name) in svcctl_scm_find_service() argument
748 f_node = uu_avl_find(mgr_ctx->mc_svcs, &node, in svcctl_scm_find_service()
749 &mgr_ctx->mc_scf_max_fmri_len, &idx); in svcctl_scm_find_service()
756 f_node = uu_avl_find(mgr_ctx->mc_svcs, &node, in svcctl_scm_find_service()
757 &mgr_ctx->mc_scf_max_fmri_len, &idx); in svcctl_scm_find_service()
768 svcctl_scm_refresh(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_refresh() argument
770 svcctl_scm_fini(mgr_ctx); in svcctl_scm_refresh()
773 return (svcctl_scm_ops.svcctl_op_scm_init(mgr_ctx)); in svcctl_scm_refresh()
775 return (svcctl_scm_init(mgr_ctx)); in svcctl_scm_refresh()
784 svcctl_scm_scf_handle_init(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_scf_handle_init() argument
788 svcctl_op_scf_init(mgr_ctx)); in svcctl_scm_scf_handle_init()
790 mgr_ctx->mc_scf_hdl = scf_handle_create(SCF_VERSION); in svcctl_scm_scf_handle_init()
791 if (mgr_ctx->mc_scf_hdl == NULL) in svcctl_scm_scf_handle_init()
794 if (scf_handle_bind(mgr_ctx->mc_scf_hdl) == -1) { in svcctl_scm_scf_handle_init()
795 scf_handle_destroy(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
799 mgr_ctx->mc_scf_gpg = scf_pg_create(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
800 mgr_ctx->mc_scf_gprop = scf_property_create(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
801 mgr_ctx->mc_scf_gval = scf_value_create(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
803 if ((mgr_ctx->mc_scf_gpg == NULL) || in svcctl_scm_scf_handle_init()
804 (mgr_ctx->mc_scf_gprop == NULL) || in svcctl_scm_scf_handle_init()
805 (mgr_ctx->mc_scf_gval == NULL)) { in svcctl_scm_scf_handle_init()
806 (void) scf_handle_unbind(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
807 scf_handle_destroy(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_init()
811 mgr_ctx->mc_scf_max_fmri_len = scf_limit(SCF_LIMIT_MAX_FMRI_LENGTH); in svcctl_scm_scf_handle_init()
812 mgr_ctx->mc_scf_max_value_len = scf_limit(SCF_LIMIT_MAX_VALUE_LENGTH); in svcctl_scm_scf_handle_init()
823 svcctl_scm_scf_handle_fini(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_scf_handle_fini() argument
825 scf_value_destroy(mgr_ctx->mc_scf_gval); in svcctl_scm_scf_handle_fini()
826 scf_property_destroy(mgr_ctx->mc_scf_gprop); in svcctl_scm_scf_handle_fini()
827 scf_pg_destroy(mgr_ctx->mc_scf_gpg); in svcctl_scm_scf_handle_fini()
829 if (mgr_ctx->mc_scf_hdl != NULL) { in svcctl_scm_scf_handle_fini()
830 (void) scf_handle_unbind(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_fini()
831 scf_handle_destroy(mgr_ctx->mc_scf_hdl); in svcctl_scm_scf_handle_fini()
843 svcctl_scm_init(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_init() argument
847 assert(mgr_ctx->mc_svcs_pool == NULL); in svcctl_scm_init()
848 assert(mgr_ctx->mc_svcs == NULL); in svcctl_scm_init()
851 return (svcctl_scm_ops.svcctl_op_scm_init(mgr_ctx)); in svcctl_scm_init()
853 mgr_ctx->mc_svcs_pool = uu_avl_pool_create("smf_svcs_pool", in svcctl_scm_init()
857 if (mgr_ctx->mc_svcs_pool == NULL) in svcctl_scm_init()
860 mgr_ctx->mc_svcs = uu_avl_create(mgr_ctx->mc_svcs_pool, NULL, 0); in svcctl_scm_init()
861 if (mgr_ctx->mc_svcs == NULL) { in svcctl_scm_init()
862 uu_avl_pool_destroy(mgr_ctx->mc_svcs_pool); in svcctl_scm_init()
866 if (scf_walk_fmri(mgr_ctx->mc_scf_hdl, 0, NULL, in svcctl_scm_init()
868 svcctl_scm_cb_list_svcinst, mgr_ctx, &exit_status, NULL) != 0) { in svcctl_scm_init()
869 uu_avl_destroy(mgr_ctx->mc_svcs); in svcctl_scm_init()
870 uu_avl_pool_destroy(mgr_ctx->mc_svcs_pool); in svcctl_scm_init()
874 mgr_ctx->mc_scf_numsvcs = uu_avl_numnodes(mgr_ctx->mc_svcs); in svcctl_scm_init()
875 if (mgr_ctx->mc_scf_numsvcs > 0) in svcctl_scm_init()
876 svcctl_scm_bytes_needed(mgr_ctx); in svcctl_scm_init()
887 svcctl_scm_fini(svcctl_manager_context_t *mgr_ctx) in svcctl_scm_fini() argument
892 if ((mgr_ctx == NULL) || (mgr_ctx->mc_svcs_pool == NULL) || in svcctl_scm_fini()
893 (mgr_ctx->mc_svcs == NULL)) in svcctl_scm_fini()
897 uu_avl_walk_start(mgr_ctx->mc_svcs, UU_WALK_ROBUST)) == NULL) in svcctl_scm_fini()
901 uu_avl_remove(mgr_ctx->mc_svcs, node); in svcctl_scm_fini()
909 uu_avl_destroy(mgr_ctx->mc_svcs); in svcctl_scm_fini()
910 uu_avl_pool_destroy(mgr_ctx->mc_svcs_pool); in svcctl_scm_fini()
911 mgr_ctx->mc_svcs_pool = NULL; in svcctl_scm_fini()
912 mgr_ctx->mc_svcs = NULL; in svcctl_scm_fini()