Lines Matching defs:rcm

217 	rcmd_t			*rcm = NULL;
233 (rcm = calloc(1, sizeof (*rcm))) == NULL ||
254 if (rcm_init(rcm, apd_tbl, n_apids, flags) != 0) {
264 (void) ecache_info_init(&rcm->ecache_info);
287 (*cm_info)(ap_hdl, cfga_ldata, flags, rcm);
308 if ((flags & RI_INCLUDE_QUERY) && cap_request(ri_hdl, rcm) != 0)
314 if (rcm != NULL)
315 rcm_fini(rcm);
348 * Initialize rcm handle, memory stats. Cache query result if necessary.
351 rcm_init(rcmd_t *rcm, apd_t apd_tbl[], int napds, int flags)
356 rcm->offline_query_info = NULL;
357 rcm->rlist = NULL;
358 rcm->cpus = NULL;
360 if (rcm_alloc_handle(NULL, RCM_NOPID, NULL, &rcm->hdl) != RCM_SUCCESS) {
365 if ((rcm->ms_pagesize = sysconf(_SC_PAGE_SIZE)) == -1 ||
366 (rcm->ms_syspages = sysconf(_SC_PHYS_PAGES)) == -1) {
370 ii = (longlong_t)rcm->ms_pagesize * rcm->ms_syspages;
371 rcm->ms_sysmb = (int)((ii+MBYTE-1) / MBYTE);
374 rv = rcm_query_init(rcm, apd_tbl, napds);
380 rcm_fini(rcmd_t *rcm)
384 assert(rcm != NULL);
386 if (rcm->offline_query_info != NULL)
387 rcm_free_info(rcm->offline_query_info);
388 if (rcm->hdl != NULL)
389 rcm_free_handle(rcm->hdl);
391 if (rcm->rlist != NULL) {
392 for (cpp = rcm->rlist; *cpp != NULL; cpp++)
394 free(rcm->rlist);
397 s_free(rcm->cpus);
398 free(rcm);
578 rcm_query_init(rcmd_t *rcm, apd_t apd_tbl[], int napds)
595 rcm->ndevs = 0;
602 rcm->ndevs += SBD_MAX_CORES_PER_CMP;
607 if (rcm->ndevs > 0 &&
608 ((rcm->cpus = calloc(rcm->ndevs, sizeof (cpuid_t))) == NULL ||
609 (rcm->rlist = calloc(rcm->ndevs + 1, sizeof (char *))) == NULL)) {
625 (*cm_rcm_qpass)(cfga_ldata, rcm) != 0) {
631 if (rcm->nrlist == 0)
639 (void) rcm_request_offline_list(rcm->hdl, rcm->rlist,
640 RCM_QUERY|RCM_SCOPE, &rcm->offline_query_info);
643 dprintf((stderr, "RCM rlist: nrlist=%d\n", rcm->nrlist));
644 for (cpp = rcm->rlist, i = 0; *cpp != NULL; cpp++, i++) {
653 cap_request(ri_hdl_t *ri_hdl, rcmd_t *rcm)
655 return (((rcm->ncpus > 0 && cpu_cap_request(ri_hdl, rcm) != 0) ||
656 (rcm->query_pages > 0 && mem_cap_request(ri_hdl, rcm) != 0)) ?
664 cpu_cap_request(ri_hdl_t *ri_hdl, rcmd_t *rcm)
677 newncpus = sysncpus - rcm->ncpus;
694 for (k = 0; k < rcm->ncpus; k++) {
695 if (rcm->cpus[k] == syscpuids[i]) {
699 if (k == rcm->ncpus) {
726 (void) rcm_request_capacity_change(rcm->hdl, RCM_CPU_ALL,
729 rv = add_rcm_clients(&ri_hdl->cpu_cap_clients, rcm, rcm_info, 0, NULL);
781 mem_cap_request(ri_hdl_t *ri_hdl, rcmd_t *rcm)
793 newpages = rcm->ms_syspages - rcm->query_pages;
794 if (nvlist_add_int32(nvl, "page_size", rcm->ms_pagesize) != 0 ||
795 nvlist_add_int32(nvl, "old_pages", rcm->ms_syspages) != 0 ||
804 rcm->ms_pagesize, rcm->ms_syspages, newpages));
806 (void) rcm_request_capacity_change(rcm->hdl, RCM_MEM_ALL,
809 rv = add_rcm_clients(&ri_hdl->mem_cap_clients, rcm, rcm_info, 0, NULL);
837 cpu_rcm_qpass(cfga_list_data_t *cfga_ldata, rcmd_t *rcm)
857 assert(rcm->nrlist < rcm->ndevs && rcm->ncpus < rcm->ndevs);
858 rcm->rlist[rcm->nrlist++] = rsrcname;
859 rcm->cpus[rcm->ncpus++] = (cpuid_t)cpuid;
873 mem_rcm_qpass(cfga_list_data_t *cfga, rcmd_t *rcm)
886 rcm->query_pages += (uint_t)(ii / rcm->ms_pagesize);
889 (uint_t)(ii / rcm->ms_pagesize)));
898 io_rcm_qpass(cfga_list_data_t *cfga, rcmd_t *rcm)
916 assert(rcm->nrlist < rcm->ndevs);
917 rcm->rlist[rcm->nrlist++] = rsrcname;
942 cpu_cm_info(ri_ap_t *ap, cfga_list_data_t *cfga, int flags, rcmd_t *rcm)
959 if ((rv = i_cpu_cm_info(cpuid, speed, ecache, ap, rcm)) != 0) {
969 rcmd_t *rcm)
994 if (rcm->ecache_info.ecache_sizes != NULL) {
995 assert(rcm->ecache_info.cpuid_max != 0 &&
996 cpuid <= rcm->ecache_info.cpuid_max);
997 ecache_mb = rcm->ecache_info.ecache_sizes[cpuid] / MBYTE;
998 ecache_kb = rcm->ecache_info.ecache_sizes[cpuid] / KBYTE;
1034 if (rcm_get_info(rcm->hdl, buf, RCM_INCLUDE_DEPENDENT,
1055 mem_cm_info(ri_ap_t *ap, cfga_list_data_t *cfga, int flags, rcmd_t *rcm)
1147 rcm->ms_sysmb) != 0) {
1167 io_cm_info(ri_ap_t *ap, cfga_list_data_t *cfga, int flags, rcmd_t *rcm)
1248 if (rcm_get_info(rcm->hdl, pathbuf,
1349 (add_query_state(rcm, client,
1577 add_rcm_clients(ri_client_t **client_list, rcmd_t *rcm, rcm_info_t *info,
1584 assert(client_list != NULL && rcm != NULL);
1605 if ((flags & RI_INCLUDE_QUERY) && add_query_state(rcm, client,
1652 add_query_state(rcmd_t *rcm, ri_client_t *client, const char *rsrc,
1659 if ((cached_tuple = tuple_lookup(rcm, rsrc, info)) != NULL) {
1735 tuple_lookup(rcmd_t *rcm, const char *krsrc, const char *kinfo)
1740 if ((rcm == NULL) || (krsrc == NULL) || (kinfo == NULL)) {
1744 while ((tuple = rcm_info_next(rcm->offline_query_info,