Lines Matching refs:t
493 struct psi_trigger *t; in init_triggers() local
495 list_for_each_entry(t, &group->triggers, node) in init_triggers()
496 window_reset(&t->win, now, in init_triggers()
497 group->total[PSI_POLL][t->state], 0); in init_triggers()
505 struct psi_trigger *t; in update_triggers() local
513 list_for_each_entry(t, &group->triggers, node) { in update_triggers()
517 if (group->polling_total[t->state] == total[t->state]) in update_triggers()
529 growth = window_update(&t->win, now, total[t->state]); in update_triggers()
530 if (growth < t->threshold) in update_triggers()
534 if (now < t->last_event_time + t->win.size) in update_triggers()
538 if (cmpxchg(&t->event, 0, 1) == 0) in update_triggers()
539 wake_up_interruptible(&t->event_wait); in update_triggers()
540 t->last_event_time = now; in update_triggers()
676 unsigned int t, m; in psi_group_change() local
694 for (t = 0, m = clear; m; m &= ~(1 << t), t++) { in psi_group_change()
695 if (!(m & (1 << t))) in psi_group_change()
697 if (groupc->tasks[t] == 0 && !psi_bug) { in psi_group_change()
699 cpu, t, groupc->tasks[0], in psi_group_change()
704 groupc->tasks[t]--; in psi_group_change()
707 for (t = 0; set; set &= ~(1 << t), t++) in psi_group_change()
708 if (set & (1 << t)) in psi_group_change()
709 groupc->tasks[t]++; in psi_group_change()
1010 struct psi_trigger *t; in psi_trigger_create() local
1036 t = kmalloc(sizeof(*t), GFP_KERNEL); in psi_trigger_create()
1037 if (!t) in psi_trigger_create()
1040 t->group = group; in psi_trigger_create()
1041 t->state = state; in psi_trigger_create()
1042 t->threshold = threshold_us * NSEC_PER_USEC; in psi_trigger_create()
1043 t->win.size = window_us * NSEC_PER_USEC; in psi_trigger_create()
1044 window_reset(&t->win, 0, 0, 0); in psi_trigger_create()
1046 t->event = 0; in psi_trigger_create()
1047 t->last_event_time = 0; in psi_trigger_create()
1048 init_waitqueue_head(&t->event_wait); in psi_trigger_create()
1049 kref_init(&t->refcount); in psi_trigger_create()
1061 kfree(t); in psi_trigger_create()
1071 list_add(&t->node, &group->triggers); in psi_trigger_create()
1073 div_u64(t->win.size, UPDATES_PER_WINDOW)); in psi_trigger_create()
1074 group->nr_triggers[t->state]++; in psi_trigger_create()
1075 group->poll_states |= (1 << t->state); in psi_trigger_create()
1079 return t; in psi_trigger_create()
1084 struct psi_trigger *t = container_of(ref, struct psi_trigger, refcount); in psi_trigger_destroy() local
1085 struct psi_group *group = t->group; in psi_trigger_destroy()
1095 wake_up_interruptible(&t->event_wait); in psi_trigger_destroy()
1099 if (!list_empty(&t->node)) { in psi_trigger_destroy()
1103 list_del(&t->node); in psi_trigger_destroy()
1104 group->nr_triggers[t->state]--; in psi_trigger_destroy()
1105 if (!group->nr_triggers[t->state]) in psi_trigger_destroy()
1106 group->poll_states &= ~(1 << t->state); in psi_trigger_destroy()
1146 kfree(t); in psi_trigger_destroy()
1165 struct psi_trigger *t; in psi_trigger_poll() local
1172 t = rcu_dereference(*(void __rcu __force **)trigger_ptr); in psi_trigger_poll()
1173 if (!t) { in psi_trigger_poll()
1177 kref_get(&t->refcount); in psi_trigger_poll()
1181 poll_wait(file, &t->event_wait, wait); in psi_trigger_poll()
1183 if (cmpxchg(&t->event, 1, 0) == 1) in psi_trigger_poll()
1186 kref_put(&t->refcount, psi_trigger_destroy); in psi_trigger_poll()