Lines Matching defs:iotab
28 /* store all inflight hpio in iotab */
29 struct hp_iotab iotab = {
30 .io_list = LIST_HEAD_INIT(iotab.io_list),
31 .lock = __RW_LOCK_UNLOCKED(iotab.lock),
33 .empty_wq = __WAIT_QUEUE_HEAD_INITIALIZER(iotab.empty_wq),
36 static struct hpio *__iotab_search_get(struct hp_iotab *iotab, u32 eid)
40 list_for_each_entry(hpio, &iotab->io_list, list)
47 static struct hpio *iotab_search_get(struct hp_iotab *iotab, u32 eid)
52 read_lock_irqsave(&iotab->lock, flags);
53 hpio = __iotab_search_get(iotab, eid);
54 read_unlock_irqrestore(&iotab->lock, flags);
62 * insert @hpio into @iotab, cancel insertion if there is a hpio of the same
65 static struct hpio *iotab_insert(struct hp_iotab *iotab, struct hpio *hpio)
70 write_lock_irqsave(&iotab->lock, flags);
71 dup = __iotab_search_get(iotab, hpio->eid);
77 list_add(&hpio->list, &iotab->io_list);
78 iotab->io_cnt++;
81 write_unlock_irqrestore(&iotab->lock, flags);
86 static void iotab_delete(struct hp_iotab *iotab, struct hpio *hpio)
90 write_lock_irqsave(&iotab->lock, flags);
92 iotab->io_cnt--;
93 if (!iotab->io_cnt)
94 wake_up(&iotab->empty_wq);
95 write_unlock_irqrestore(&iotab->lock, flags);
97 pr_info("delete hpio %p for eid %u from iotab.\n", hpio, hpio->eid);
184 return iotab_search_get(&iotab, eid);
192 hpio = iotab_search_get(&iotab, eid);
204 dup = iotab_insert(&iotab, hpio);
217 iotab_delete(&iotab, hpio);
255 static void dump_iotab(struct hp_iotab *iotab)
260 pr_info("dump inflight hpio in iotab.\n");
261 read_lock_irqsave(&iotab->lock, flags);
262 list_for_each_entry(hpio, &iotab->io_list, list)
264 read_unlock_irqrestore(&iotab->lock, flags);
269 dump_iotab(&iotab);
270 wait_event(iotab.empty_wq, !iotab.io_cnt);