Lines Matching refs:ksi

53 static void tavor_kstat_perfcntr64_thread_exit(tavor_ks_info_t *ksi);
118 tavor_ks_info_t *ksi;
125 ksi = (tavor_ks_info_t *)kmem_zalloc(sizeof (tavor_ks_info_t),
127 if (ksi == NULL) {
132 state->ts_ks_info = ksi;
141 ksi->tki_picN_ksp[i] = tavor_kstat_picN_create(state, i,
143 if (ksi->tki_picN_ksp[i] == NULL) {
150 if (ksi->tki_perfcntr64[i].tki64_ksp == NULL) {
156 ksi->tki_cntr_ksp = tavor_kstat_cntr_create(state, numports,
158 if (ksi->tki_cntr_ksp == NULL) {
164 ksi->tki_pcr = 0;
165 ksi->tki_pic0 = 0;
166 ksi->tki_pic1 = 0;
173 ksi->tki_ib_perfcnt[i] = tavor_ib_perfcnt_list[i];
176 mutex_init(&ksi->tki_perfcntr64_lock, NULL, MUTEX_DRIVER, NULL);
177 cv_init(&ksi->tki_perfcntr64_cv, NULL, CV_DRIVER, NULL);
186 if (ksi->tki_cntr_ksp != NULL) {
187 kstat_delete(ksi->tki_cntr_ksp);
190 if (ksi->tki_picN_ksp[i] != NULL) {
191 kstat_delete(ksi->tki_picN_ksp[i]);
193 if (ksi->tki_perfcntr64[i].tki64_ksp != NULL) {
194 kstat_delete(ksi->tki_perfcntr64[i].tki64_ksp);
199 kmem_free(ksi, sizeof (tavor_ks_info_t));
213 tavor_ks_info_t *ksi;
220 ksi = state->ts_ks_info;
226 mutex_enter(&ksi->tki_perfcntr64_lock);
227 tavor_kstat_perfcntr64_thread_exit(ksi);
228 mutex_exit(&ksi->tki_perfcntr64_lock);
233 if (ksi->tki_picN_ksp[i] != NULL) {
234 kstat_delete(ksi->tki_picN_ksp[i]);
236 if (ksi->tki_perfcntr64[i].tki64_ksp != NULL) {
237 kstat_delete(ksi->tki_perfcntr64[i].tki64_ksp);
242 kstat_delete(ksi->tki_cntr_ksp);
244 cv_destroy(&ksi->tki_perfcntr64_cv);
245 mutex_destroy(&ksi->tki_perfcntr64_lock);
248 kmem_free(ksi, sizeof (tavor_ks_info_t));
381 tavor_ks_info_t *ksi;
399 ksi = state->ts_ks_info;
400 ib_perf = &ksi->tki_ib_perfcnt[0];
401 _NOTE(NOW_INVISIBLE_TO_OTHER_THREADS(*ksi))
422 ksi->tki_pcr = data[0].value.ui64;
430 pcr = ksi->tki_pcr;
455 ksi->tki_pic0 += tmp;
456 data[1].value.ui64 = ksi->tki_pic0;
478 ksi->tki_pic1 += tmp;
479 data[2].value.ui64 = ksi->tki_pic1;
525 tavor_ks_info_t *ksi = state->ts_ks_info;
557 ksi->tki_perfcntr64[port_num - 1].tki64_ksp = cntr_ksp;
558 ksi->tki_perfcntr64[port_num - 1].tki64_port_num = port_num;
559 ksi->tki_perfcntr64[port_num - 1].tki64_state = state;
561 cntr_ksp->ks_private = &ksi->tki_perfcntr64[port_num - 1];
585 tavor_ks_info_t *ksi = state->ts_ks_info;
586 tavor_perfcntr64_ks_info_t *ksi64 = &ksi->tki_perfcntr64[port - 1];
591 ASSERT(MUTEX_HELD(&ksi->tki_perfcntr64_lock));
666 tavor_ks_info_t *ksi = state->ts_ks_info;
669 mutex_enter(&ksi->tki_perfcntr64_lock);
674 while (!(ksi->tki_perfcntr64_flags & TAVOR_PERFCNTR64_THREAD_EXIT)) {
676 if (ksi->tki_perfcntr64[i].tki64_enabled) {
682 (void) cv_timedwait(&ksi->tki_perfcntr64_cv,
683 &ksi->tki_perfcntr64_lock,
686 ksi->tki_perfcntr64_flags = 0;
687 mutex_exit(&ksi->tki_perfcntr64_lock);
699 tavor_ks_info_t *ksi = state->ts_ks_info;
702 ASSERT(MUTEX_HELD(&ksi->tki_perfcntr64_lock));
708 if (!(ksi->tki_perfcntr64_flags & TAVOR_PERFCNTR64_THREAD_CREATED)) {
712 ksi->tki_perfcntr64_thread_id = thr->t_did;
713 ksi->tki_perfcntr64_flags |= TAVOR_PERFCNTR64_THREAD_CREATED;
722 tavor_kstat_perfcntr64_thread_exit(tavor_ks_info_t *ksi)
726 ASSERT(MUTEX_HELD(&ksi->tki_perfcntr64_lock));
728 if (ksi->tki_perfcntr64_flags & TAVOR_PERFCNTR64_THREAD_CREATED) {
732 ksi->tki_perfcntr64_flags |= TAVOR_PERFCNTR64_THREAD_EXIT;
733 tid = ksi->tki_perfcntr64_thread_id;
734 cv_signal(&ksi->tki_perfcntr64_cv);
736 mutex_exit(&ksi->tki_perfcntr64_lock);
738 mutex_enter(&ksi->tki_perfcntr64_lock);
753 tavor_ks_info_t *ksi;
759 ksi = state->ts_ks_info;
762 mutex_enter(&ksi->tki_perfcntr64_lock);
784 mutex_exit(&ksi->tki_perfcntr64_lock);
804 if (ksi->tki_perfcntr64[i].tki64_enabled) {
810 tavor_kstat_perfcntr64_thread_exit(ksi);
818 mutex_exit(&ksi->tki_perfcntr64_lock);
847 mutex_exit(&ksi->tki_perfcntr64_lock);