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)
89 return !list_empty(&prio->item_list);
92 static struct parman_item *parman_prio_first_item(struct parman_prio *prio)
94 return list_first_entry(&prio->item_list,
98 static unsigned long parman_prio_first_index(struct parman_prio *prio)
100 return parman_prio_first_item(prio)->index;
103 static struct parman_item *parman_prio_last_item(struct parman_prio *prio)
105 return list_last_entry(&prio->item_list,
109 static unsigned long parman_prio_last_index(struct parman_prio *prio)
111 return parman_prio_last_item(prio)->index;
115 struct parman_prio *prio)
117 list_for_each_entry_from_reverse(prio, &parman->prio_list, list) {
118 if (!parman_prio_used(prio))
120 return parman_prio_last_index(prio) + 1;
125 static void __parman_prio_move(struct parman *parman, struct parman_prio *prio,
133 struct parman_prio *prio)
138 if (!parman_prio_used(prio))
140 item = parman_prio_first_item(prio);
141 to_index = parman_prio_last_index(prio) + 1;
142 __parman_prio_move(parman, prio, item, to_index, 1);
143 list_move_tail(&item->list, &prio->item_list);
148 struct parman_prio *prio)
153 if (!parman_prio_used(prio))
155 item = parman_prio_last_item(prio);
156 to_index = parman_prio_first_index(prio) - 1;
157 __parman_prio_move(parman, prio, item, to_index, 1);
158 list_move(&item->list, &prio->item_list);
163 struct parman_prio *prio,
169 last_item = parman_prio_last_item(prio);
175 __parman_prio_move(parman, prio, last_item, to_index, 1);
182 struct parman_prio *prio,
195 new_index = parman_lsort_new_index_find(parman, prio);
197 if (prio2 == prio)
202 list_add_tail(&item->list, &prio->item_list);
208 struct parman_prio *prio,
211 parman_prio_item_remove(parman, prio, item);
212 list_for_each_entry_continue(prio, &parman->prio_list, list)
213 parman_prio_shift_up(parman, prio);
238 * item 1 with prio 10
239 * item 2 with prio 10
240 * item 3 with prio 10
241 * item 4 with prio 20
242 * item 5 with prio 20
243 * item 6 with prio 30
244 * item 7 with prio 30
245 * item 8 with prio 30
251 * item 2 with prio 10
252 * item 3 with prio 10
253 * item 1 with prio 10
254 * item 5 with prio 20
255 * item 4 with prio 20
256 * item 7 with prio 30
257 * item 8 with prio 30
258 * item 6 with prio 30
299 * @prio: parman prio structure to be initialized
307 void parman_prio_init(struct parman *parman, struct parman_prio *prio,
313 INIT_LIST_HEAD(&prio->item_list);
314 prio->priority = priority;
319 if (prio2->priority > prio->priority)
322 list_add_tail(&prio->list, pos);
328 * @prio: parman prio structure
332 void parman_prio_fini(struct parman_prio *prio)
334 WARN_ON(parman_prio_used(prio));
335 list_del(&prio->list);
342 * @prio: parman prio instance to add the item to
351 int parman_item_add(struct parman *parman, struct parman_prio *prio,
354 return parman->algo->item_add(parman, prio, item);
361 * @prio: parman prio instance to delete the item from
366 void parman_item_remove(struct parman *parman, struct parman_prio *prio,
369 parman->algo->item_remove(parman, prio, item);