Lines Matching refs:prio

44 	int (*item_add)(struct parman *parman, struct parman_prio *prio,
46 void (*item_remove)(struct parman *parman, struct parman_prio *prio,
87 static bool parman_prio_used(struct parman_prio *prio) in parman_prio_used() argument
90 return !list_empty(&prio->item_list); in parman_prio_used()
93 static struct parman_item *parman_prio_first_item(struct parman_prio *prio) in parman_prio_first_item() argument
95 return list_first_entry(&prio->item_list, in parman_prio_first_item()
99 static unsigned long parman_prio_first_index(struct parman_prio *prio) in parman_prio_first_index() argument
101 return parman_prio_first_item(prio)->index; in parman_prio_first_index()
104 static struct parman_item *parman_prio_last_item(struct parman_prio *prio) in parman_prio_last_item() argument
106 return list_last_entry(&prio->item_list, in parman_prio_last_item()
110 static unsigned long parman_prio_last_index(struct parman_prio *prio) in parman_prio_last_index() argument
112 return parman_prio_last_item(prio)->index; in parman_prio_last_index()
116 struct parman_prio *prio) in parman_lsort_new_index_find() argument
118 list_for_each_entry_from_reverse(prio, &parman->prio_list, list) { in parman_lsort_new_index_find()
119 if (!parman_prio_used(prio)) in parman_lsort_new_index_find()
121 return parman_prio_last_index(prio) + 1; in parman_lsort_new_index_find()
126 static void __parman_prio_move(struct parman *parman, struct parman_prio *prio, in __parman_prio_move() argument
134 struct parman_prio *prio) in parman_prio_shift_down() argument
139 if (!parman_prio_used(prio)) in parman_prio_shift_down()
141 item = parman_prio_first_item(prio); in parman_prio_shift_down()
142 to_index = parman_prio_last_index(prio) + 1; in parman_prio_shift_down()
143 __parman_prio_move(parman, prio, item, to_index, 1); in parman_prio_shift_down()
144 list_move_tail(&item->list, &prio->item_list); in parman_prio_shift_down()
149 struct parman_prio *prio) in parman_prio_shift_up() argument
154 if (!parman_prio_used(prio)) in parman_prio_shift_up()
156 item = parman_prio_last_item(prio); in parman_prio_shift_up()
157 to_index = parman_prio_first_index(prio) - 1; in parman_prio_shift_up()
158 __parman_prio_move(parman, prio, item, to_index, 1); in parman_prio_shift_up()
159 list_move(&item->list, &prio->item_list); in parman_prio_shift_up()
164 struct parman_prio *prio, in parman_prio_item_remove() argument
170 last_item = parman_prio_last_item(prio); in parman_prio_item_remove()
176 __parman_prio_move(parman, prio, last_item, to_index, 1); in parman_prio_item_remove()
183 struct parman_prio *prio, in parman_lsort_item_add() argument
196 new_index = parman_lsort_new_index_find(parman, prio); in parman_lsort_item_add()
198 if (prio2 == prio) in parman_lsort_item_add()
203 list_add_tail(&item->list, &prio->item_list); in parman_lsort_item_add()
209 struct parman_prio *prio, in parman_lsort_item_remove() argument
212 parman_prio_item_remove(parman, prio, item); in parman_lsort_item_remove()
213 list_for_each_entry_continue(prio, &parman->prio_list, list) in parman_lsort_item_remove()
214 parman_prio_shift_up(parman, prio); in parman_lsort_item_remove()
308 void parman_prio_init(struct parman *parman, struct parman_prio *prio, in parman_prio_init() argument
314 INIT_LIST_HEAD(&prio->item_list); in parman_prio_init()
315 prio->priority = priority; in parman_prio_init()
320 if (prio2->priority > prio->priority) in parman_prio_init()
323 list_add_tail(&prio->list, pos); in parman_prio_init()
333 void parman_prio_fini(struct parman_prio *prio) in parman_prio_fini() argument
335 WARN_ON(parman_prio_used(prio)); in parman_prio_fini()
336 list_del(&prio->list); in parman_prio_fini()
352 int parman_item_add(struct parman *parman, struct parman_prio *prio, in parman_item_add() argument
355 return parman->algo->item_add(parman, prio, item); in parman_item_add()
367 void parman_item_remove(struct parman *parman, struct parman_prio *prio, in parman_item_remove() argument
370 parman->algo->item_remove(parman, prio, item); in parman_item_remove()