Lines Matching defs:ss

69 acquire_cpus(struct snapshot *ss, kstat_ctl_t *kc)
73 ss->s_nr_cpus = sysconf(_SC_CPUID_MAX) + 1;
74 ss->s_cpus = calloc(ss->s_nr_cpus, sizeof (struct cpu_snapshot));
75 if (ss->s_cpus == NULL)
78 for (i = 0; i < ss->s_nr_cpus; i++) {
81 ss->s_cpus[i].cs_id = ID_NO_CPU;
82 ss->s_cpus[i].cs_state = p_online(i, P_STATUS);
84 if (ss->s_cpus[i].cs_state == -1)
86 ss->s_cpus[i].cs_id = i;
91 (void) pset_assign(PS_QUERY, i, &ss->s_cpus[i].cs_pset_id);
92 if (ss->s_cpus[i].cs_pset_id == PS_NONE)
93 ss->s_cpus[i].cs_pset_id = ID_NO_PSET;
95 if (!CPU_ACTIVE(&ss->s_cpus[i]))
101 if (kstat_copy(ksp, &ss->s_cpus[i].cs_vm))
107 if (kstat_copy(ksp, &ss->s_cpus[i].cs_sys))
117 acquire_psets(struct snapshot *ss)
140 ss->s_psets = calloc(pids_nr + 1, sizeof (struct pset_snapshot));
141 if (ss->s_psets == NULL)
143 ss->s_nr_psets = pids_nr + 1;
146 ps = &ss->s_psets[0];
148 ps->ps_cpus = calloc(ss->s_nr_cpus, sizeof (struct cpu_snapshot *));
153 for (i = 1; i < ss->s_nr_psets; i++) {
154 ps = &ss->s_psets[i];
158 calloc(ss->s_nr_cpus, sizeof (struct cpu_snapshot *));
163 for (i = 0; i < ss->s_nr_psets; i++) {
164 ps = &ss->s_psets[i];
166 for (j = 0; j < ss->s_nr_cpus; j++) {
167 if (!CPU_ACTIVE(&ss->s_cpus[j]))
169 if (ss->s_cpus[j].cs_pset_id != ps->ps_id)
172 ps->ps_cpus[ps->ps_nr_cpus++] = &ss->s_cpus[j];
183 acquire_intrs(struct snapshot *ss, kstat_ctl_t *kc)
191 ss->s_nr_intrs = 1;
195 ss->s_nr_intrs++;
198 ss->s_intrs = calloc(ss->s_nr_intrs, sizeof (struct intr_snapshot));
199 if (ss->s_intrs == NULL)
210 (void) strlcpy(ss->s_intrs[0].is_name, "clock", KSTAT_STRLEN);
211 ss->s_intrs[0].is_total = clock->value.ui32;
226 (void) strlcpy(ss->s_intrs[i].is_name, ksp->ks_name,
228 ss->s_intrs[i].is_total = 0;
231 ss->s_intrs[i].is_total += ki->intrs[j];
242 acquire_sys(struct snapshot *ss, kstat_ctl_t *kc)
251 if (kstat_read(kc, ksp, &ss->s_sys.ss_sysinfo) == -1)
257 if (kstat_read(kc, ksp, &ss->s_sys.ss_vminfo) == -1)
263 if (kstat_read(kc, ksp, &ss->s_sys.ss_nc) == -1)
276 ss->s_sys.ss_ticks = knp->value.l;
282 ss->s_sys.ss_deficit = knp->value.l;
284 for (i = 0; i < ss->s_nr_cpus; i++) {
285 if (!CPU_ACTIVE(&ss->s_cpus[i]))
288 if (kstat_add(&ss->s_cpus[i].cs_sys, &ss->s_sys.ss_agg_sys))
290 if (kstat_add(&ss->s_cpus[i].cs_vm, &ss->s_sys.ss_agg_vm))
300 struct snapshot *ss = NULL;
306 free_snapshot(ss);
308 ss = safe_alloc(sizeof (struct snapshot));
310 (void) memset(ss, 0, sizeof (struct snapshot));
312 ss->s_types = types;
323 err = acquire_intrs(ss, kc);
326 err = acquire_cpus(ss, kc);
329 err = acquire_psets(ss);
333 err = acquire_iodevs(ss, kc, iodev_filter);
336 err = acquire_sys(ss, kc);
352 return (ss);
356 free_snapshot(struct snapshot *ss)
360 if (ss == NULL)
363 while (ss->s_iodevs) {
364 struct iodev_snapshot *tmp = ss->s_iodevs;
365 ss->s_iodevs = ss->s_iodevs->is_next;
369 if (ss->s_cpus) {
370 for (i = 0; i < ss->s_nr_cpus; i++) {
371 free(ss->s_cpus[i].cs_vm.ks_data);
372 free(ss->s_cpus[i].cs_sys.ks_data);
374 free(ss->s_cpus);
377 if (ss->s_psets) {
378 for (i = 0; i < ss->s_nr_psets; i++)
379 free(ss->s_psets[i].ps_cpus);
380 free(ss->s_psets);
383 free(ss->s_sys.ss_agg_sys.ks_data);
384 free(ss->s_sys.ss_agg_vm.ks_data);
385 free(ss);
497 nr_active_cpus(struct snapshot *ss)
501 for (i = 0; i < ss->s_nr_cpus; i++) {
502 if (CPU_ACTIVE(&ss->s_cpus[i]))