Lines Matching +full:open +full:- +full:pic

124 			"open /dev/kstat\n"), pgmname);  in main()
140 (void) print_dev(argc, argv[argc-1]); in main()
242 int inst_num = -1; in print_evt()
253 * use a default value of -1 for the kstat_lookup which causes in print_evt()
290 cnt_data = (kstat_named_t *)cnt_ksp->ks_data; in print_evt()
298 if (cnt_ksp->ks_ndata <= 1) { in print_evt()
304 for (i = 1; i < cnt_ksp->ks_ndata; i++) { in print_evt()
309 "pic kstat data structure for %s\n"), in print_evt()
310 pgmname, cnt_ksp->ks_module); in print_evt()
317 "pic kstat.\n"), pgmname); in print_evt()
322 pic_data = (kstat_named_t *)pic_ksp->ks_data; in print_evt()
324 (void) printf(gettext("pic%-8d\n"), i-1); in print_evt()
326 for (j = 0; j < pic_ksp->ks_ndata-1; j++) { in print_evt()
327 (void) printf("%-30s\n", pic_data[j].name); in print_evt()
347 if ((argc > 2) || (strcmp(str, "-l") != 0)) { in print_dev()
349 "permitted with -l option.\n"), in print_dev()
359 for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) { in print_dev()
360 if ((strcmp(ksp->ks_class, "bus") == 0) && in print_dev()
361 (strcmp(ksp->ks_name, "counters") == 0)) { in print_dev()
367 (void) printf("%s%d ", ksp->ks_module, in print_dev()
368 ksp->ks_instance); in print_dev()
400 "event names or pic values not " in parse_cmd()
401 "permitted with -r option.\n"), in parse_cmd()
407 * Now dealing with pic values. in parse_cmd()
471 curr_inst_num = -1; in parse_dev_inst()
497 * instances call, but *not* vice-versa.
522 (void) fprintf(stderr, gettext("%s: no pic number " in parse_pic_evt()
527 if (strncmp(value, "pic", PIC_STR_LEN) != 0) { in parse_pic_evt()
528 (void) fprintf(stderr, gettext("%s: missing pic " in parse_pic_evt()
534 * Step over the 'pic' part of the string to in parse_pic_evt()
535 * get the pic number. in parse_pic_evt()
540 if ((pic_num == -1) || (pic_num > max_pic_num -1)) { in parse_pic_evt()
541 (void) fprintf(stderr, gettext("%s: invalid pic " in parse_pic_evt()
564 if (dev_node->r_w == EVT_READ) { in parse_pic_evt()
566 dev_node->r_w = EVT_WRITE; in parse_pic_evt()
567 dev_node->state = STATE_INST; in parse_pic_evt()
569 } else if ((dev_node->r_w == EVT_WRITE) && in parse_pic_evt()
570 (dev_node->state == STATE_ALL)) { in parse_pic_evt()
574 dev_node->state = STATE_INST; in parse_pic_evt()
576 } else if ((dev_node->r_w == EVT_WRITE) && in parse_pic_evt()
577 (dev_node->state == STATE_INST)) { in parse_pic_evt()
591 if ((strcmp(dev_node->name, curr_dev_name) == 0) && in parse_pic_evt()
592 (dev_node->pic_num == pic_num)) { in parse_pic_evt()
594 if (dev_node->r_w == EVT_READ) { in parse_pic_evt()
598 dev_node->r_w = EVT_WRITE; in parse_pic_evt()
599 dev_node->state = STATE_ALL; in parse_pic_evt()
601 } else if ((dev_node->r_w == EVT_WRITE) && in parse_pic_evt()
602 (dev_node->state == STATE_ALL)) { in parse_pic_evt()
609 dev_node = dev_node->next; in parse_pic_evt()
642 cnt_data = (kstat_named_t *)cnt_ksp->ks_data; in add_dev_node()
644 if (cnt_ksp->ks_ndata <= 1) { in add_dev_node()
654 if (cnt_ksp->ks_ndata-1 > max_pic_num) in add_dev_node()
655 max_pic_num = cnt_ksp->ks_ndata-1; in add_dev_node()
657 /* for each pic... */ in add_dev_node()
658 for (pic_num = 0; pic_num < cnt_ksp->ks_ndata-1; pic_num++) { in add_dev_node()
667 (void) strcpy(new_dev_node->name, dev_name); in add_dev_node()
668 new_dev_node->dev_inst = inst_num; in add_dev_node()
669 new_dev_node->pic_num = pic_num; in add_dev_node()
671 new_dev_node->cnt_ksp = cnt_ksp; in add_dev_node()
677 "pic kstat structure for %s.\n"), in add_dev_node()
678 pgmname, cnt_ksp->ks_module); in add_dev_node()
682 new_dev_node->pic_ksp = pic_ksp; in add_dev_node()
686 new_dev_node->state = STATE_INIT; in add_dev_node()
687 new_dev_node->r_w = EVT_READ; in add_dev_node()
694 dev_list_tail->next = new_dev_node; in add_dev_node()
710 for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) { in add_all_dev_node()
711 if ((strcmp(ksp->ks_class, "bus") == 0) && in add_all_dev_node()
712 (strcmp(ksp->ks_name, "counters") == 0) && in add_all_dev_node()
713 (strcmp(ksp->ks_module, dev_name) == 0)) { in add_all_dev_node()
715 add_dev_node(dev_name, ksp->ks_instance); in add_all_dev_node()
740 (void) strcpy(new_evt_node->evt_name, ""); in add_evt_node()
742 if (dev_node->evt_node == NULL) { in add_evt_node()
743 dev_node->evt_node = new_evt_node; in add_evt_node()
744 new_evt_node->next = new_evt_node; in add_evt_node()
747 curr_evt_node = dev_node->evt_node; in add_evt_node()
748 while (curr_evt_node->next != dev_node->evt_node) in add_evt_node()
749 curr_evt_node = curr_evt_node->next; in add_evt_node()
751 curr_evt_node->next = new_evt_node; in add_evt_node()
752 new_evt_node->next = dev_node->evt_node; in add_evt_node()
770 evt_node = dev_node->evt_node; in modify_evt_node()
775 if (evt_node->next != evt_node) { in modify_evt_node()
776 while (evt_node->next != dev_node->evt_node) { in modify_evt_node()
777 evt_node = evt_node->next; in modify_evt_node()
781 evt_node->prev_count = 0; in modify_evt_node()
782 evt_node->total = 0; in modify_evt_node()
784 pic_ksp = dev_node->pic_ksp; in modify_evt_node()
788 "pic kstat.\n"), pgmname); in modify_evt_node()
792 pic_data = (kstat_named_t *)dev_node->pic_ksp->ks_data; in modify_evt_node()
801 (void) strcpy(evt_node->evt_name, evt_name); in modify_evt_node()
803 for (i = 0; i < dev_node->pic_ksp->ks_ndata; i++) { in modify_evt_node()
805 evt_node->evt_pcr_mask = pic_data[i].value.ui64; in modify_evt_node()
820 for (i = 0; i < dev_node->pic_ksp->ks_ndata; i++) { in modify_evt_node()
822 (void) strcpy(evt_node->evt_name, in modify_evt_node()
830 (void) sprintf(evt_node->evt_name, "%llx", evt_num); in modify_evt_node()
832 evt_node->evt_pcr_mask = evt_num; in modify_evt_node()
850 if (dev_node->evt_node->next == dev_node->evt_node) { in prune_evt_nodes()
854 curr_evt_node = dev_node->evt_node->next; in prune_evt_nodes()
855 dev_node->evt_node->next = dev_node->evt_node; in prune_evt_nodes()
857 while (curr_evt_node != dev_node->evt_node) { in prune_evt_nodes()
858 next_evt_node = curr_evt_node->next; in prune_evt_nodes()
866 * Set the events for each pic on each device instance.
876 if (dev_node->r_w == EVT_WRITE) in setup_evts()
879 dev_node = dev_node->next; in setup_evts()
900 cnt_ksp = dev_node->cnt_ksp; in set_evt()
901 pic_ksp = dev_node->pic_ksp; in set_evt()
902 pic_num = dev_node->pic_num; in set_evt()
903 evt_node = dev_node->evt_node; in set_evt()
912 cnt_data = (kstat_named_t *)cnt_ksp->ks_data; in set_evt()
920 pic_data = (kstat_named_t *)pic_ksp->ks_data; in set_evt()
921 clear_pcr_mask = pic_data[pic_ksp->ks_ndata-1].value.ui64; in set_evt()
923 if ((pic_num < 0) || (pic_num > cnt_ksp->ks_ndata-1)) { in set_evt()
925 gettext("%s: invalid pic #%d.\n"), in set_evt()
931 * Store the previous value that is on the pic in set_evt()
935 evt_node->prev_count = cnt_data[pic_num+1].value.ui64; in set_evt()
945 * pic we are setting events on. Also clear the pcr value in set_evt()
954 pcr = pcr | evt_node->evt_pcr_mask; in set_evt()
995 dev_node->name, dev_node->dev_inst); in read_evts()
996 (void) printf("%-7s", tmp_str); in read_evts()
999 cnt_ksp = (kstat_t *)dev_node->cnt_ksp; in read_evts()
1003 "(pic %d) no longer valid.\n"), in read_evts()
1004 pgmname, dev_node->name, in read_evts()
1005 dev_node->dev_inst, in read_evts()
1006 dev_node->pic_num); in read_evts()
1012 cnt_data = (kstat_named_t *)cnt_ksp->ks_data; in read_evts()
1014 if (dev_node->r_w == EVT_READ) { in read_evts()
1015 read_r_evt_node(dev_node, dev_node->pic_num, cnt_data); in read_evts()
1018 read_w_evt_node(dev_node, dev_node->pic_num, cnt_data); in read_evts()
1029 * per-pic then we are multiplexing. in read_evts()
1031 if ((dev_node->evt_node->next != dev_node->evt_node) && in read_evts()
1033 dev_node->evt_node = dev_node->evt_node->next; in read_evts()
1036 dev_node = dev_node->next; in read_evts()
1058 evt_node = dev_node->evt_node; in read_r_evt_node()
1060 pic_ksp = (kstat_t *)dev_node->pic_ksp; in read_r_evt_node()
1064 "(pic %d) no longer valid.\n"), pgmname, in read_r_evt_node()
1065 dev_node->name, dev_node->dev_inst, in read_r_evt_node()
1066 dev_node->pic_num); in read_r_evt_node()
1071 pic_data = (kstat_named_t *)pic_ksp->ks_data; in read_r_evt_node()
1072 clear_pcr_mask = pic_data[pic_ksp->ks_ndata-1].value.ui64; in read_r_evt_node()
1076 * of the PCR relating to the pic we are interested by in read_r_evt_node()
1077 * AND'ing the inverse of the clear mask for this pic. in read_r_evt_node()
1094 * changed from its previous value, so we need to re-read in read_r_evt_node()
1097 if ((strcmp(evt_node->evt_name, "") == 0) || in read_r_evt_node()
1098 (pcr_read != evt_node->evt_pcr_mask)) { in read_r_evt_node()
1100 for (i = 0; i < pic_ksp->ks_ndata-1; i++) { in read_r_evt_node()
1111 (void) strcpy(evt_node->evt_name, pic_data[i].name); in read_r_evt_node()
1112 evt_node->evt_pcr_mask = pcr_read; in read_r_evt_node()
1113 evt_node->total = 0; in read_r_evt_node()
1114 evt_node->prev_count = in read_r_evt_node()
1118 (void) printf("%s\t%-8d\t", in read_r_evt_node()
1119 evt_node->evt_name, 0); in read_r_evt_node()
1124 (void) sprintf(evt_node->evt_name, "0x%llx", pcr_read); in read_r_evt_node()
1125 evt_node->evt_pcr_mask = pcr_read; in read_r_evt_node()
1126 evt_node->total = 0; in read_r_evt_node()
1127 evt_node->prev_count = in read_r_evt_node()
1131 (void) printf("%s\t%-8d\t", in read_r_evt_node()
1132 evt_node->evt_name, 0); in read_r_evt_node()
1139 if (cnt_data[pic_num+1].value.ui64 < evt_node->prev_count) { in read_r_evt_node()
1141 delta_count = (UINT32_MAX-evt_node->prev_count) + in read_r_evt_node()
1146 - evt_node->prev_count; in read_r_evt_node()
1154 evt_node->prev_count = cnt_data[pic_num+1].value.ui64; in read_r_evt_node()
1157 evt_node->total += delta_count; in read_r_evt_node()
1160 (void) printf("%-20s %-9lld ", in read_r_evt_node()
1161 evt_node->evt_name, delta_count); in read_r_evt_node()
1164 (void) printf("%-20s %-9lld ", in read_r_evt_node()
1165 evt_node->evt_name, evt_node->total); in read_r_evt_node()
1184 evt_node = dev_node->evt_node; in read_w_evt_node()
1186 pic_ksp = (kstat_t *)dev_node->pic_ksp; in read_w_evt_node()
1190 "%s%d\n"), pgmname, dev_node->name, in read_w_evt_node()
1191 dev_node->dev_inst); in read_w_evt_node()
1196 pic_data = (kstat_named_t *)pic_ksp->ks_data; in read_w_evt_node()
1197 clear_pcr_mask = pic_data[pic_ksp->ks_ndata-1].value.ui64; in read_w_evt_node()
1201 * of the PCR relating to the pic we are interested by in read_w_evt_node()
1202 * AND'ing the inverse of the clear mask for this pic. in read_w_evt_node()
1219 if (pcr_read != evt_node->evt_pcr_mask) { in read_w_evt_node()
1230 if (cnt_data[pic_num+1].value.ui64 < evt_node->prev_count) { in read_w_evt_node()
1232 delta_count = (UINT32_MAX-evt_node->prev_count) + in read_w_evt_node()
1237 - evt_node->prev_count; in read_w_evt_node()
1240 evt_node->prev_count = cnt_data[pic_num+1].value.ui64; in read_w_evt_node()
1243 evt_node->total = 0; in read_w_evt_node()
1247 evt_node->total += delta_count; in read_w_evt_node()
1250 (void) printf("%-20s %-9lld ", in read_w_evt_node()
1251 evt_node->evt_name, delta_count); in read_w_evt_node()
1253 (void) printf("%-20s %-9lld ", in read_w_evt_node()
1254 evt_node->evt_name, evt_node->total); in read_w_evt_node()
1295 for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) { in check_dr_ops()
1296 if ((strcmp("bus", ksp->ks_class) == 0) && in check_dr_ops()
1297 (strcmp("counters", ksp->ks_name) == 0) && in check_dr_ops()
1298 (strcmp(dev_node->name, ksp->ks_module) == 0) && in check_dr_ops()
1299 (ksp->ks_instance == dev_node->dev_inst)) { in check_dr_ops()
1306 " (pic %d) no longer valid.\n"), pgmname, in check_dr_ops()
1307 dev_node->name, dev_node->dev_inst, in check_dr_ops()
1308 dev_node->pic_num); in check_dr_ops()
1312 dev_node = dev_node->next; in check_dr_ops()
1333 dev_list_head = dev_node->next; in remove_dev_node()
1343 start_pos = dev_node->evt_node; in remove_dev_node()
1344 curr_evt_node = start_pos->next; in remove_dev_node()
1347 next_evt_node = curr_evt_node->next; in remove_dev_node()
1360 curr_node = prev_node->next; in remove_dev_node()
1364 prev_node->next = curr_node->next; in remove_dev_node()
1367 start_pos = dev_node->evt_node; in remove_dev_node()
1368 curr_evt_node = start_pos->next; in remove_dev_node()
1371 next_evt_node = curr_evt_node->next; in remove_dev_node()
1382 curr_node = curr_node->next; in remove_dev_node()
1399 if ((strcmp(curr_node->name, name) == 0) && in find_dev_node()
1400 (curr_node->dev_inst == inst_num) && in find_dev_node()
1401 (curr_node->pic_num == pic_num)) { in find_dev_node()
1405 curr_node = curr_node->next; in find_dev_node()
1439 find_pic_kstat(char *dev_name, int inst_num, char *pic) in find_pic_kstat() argument
1445 if ((p_ksp = kstat_lookup(kc, dev_name, inst_num, pic)) == NULL) { in find_pic_kstat()
1447 for (ksp = kc->kc_chain; ksp; ksp = ksp->ks_next) { in find_pic_kstat()
1448 if ((strcmp(ksp->ks_class, "bus") == 0) && in find_pic_kstat()
1449 (strcmp(ksp->ks_name, pic) == 0) && in find_pic_kstat()
1450 (strcmp(ksp->ks_module, dev_name) == 0)) { in find_pic_kstat()
1462 * Can be turned off by -n option.
1473 "pic%d ", i, i); in print_banner()
1500 elapsed = (new_time - curr_time)/NANO; in print_timestamp()
1503 rem = (new_time - curr_time)%NANO; in print_timestamp()
1509 (void) printf("%-4llu ", total_elapsed); in print_timestamp()
1518 (void) printf(gettext("Usage : busstat [-a] [-h] [-l] [-n]\n" in usage()
1519 " [-e device-inst]\n" in usage()
1520 " [-w device-inst " in usage()
1522 " [-r device-inst]\n" in usage()