Lines Matching refs:list
73 struct eventhandler_list *list, *new_list; in eventhandler_find_or_create_list() local
76 list = _eventhandler_find_list(name); in eventhandler_find_or_create_list()
79 if (list == NULL) { in eventhandler_find_or_create_list()
87 list = _eventhandler_find_list(name); in eventhandler_find_or_create_list()
88 if (list != NULL) { in eventhandler_find_or_create_list()
92 list = new_list; in eventhandler_find_or_create_list()
93 TAILQ_INIT(&list->el_entries); in eventhandler_find_or_create_list()
94 list->el_name = (char *)(list + 1); in eventhandler_find_or_create_list()
95 strcpy(list->el_name, name); in eventhandler_find_or_create_list()
96 mtx_init(&list->el_lock, list->el_name, "eventhandler list", in eventhandler_find_or_create_list()
98 TAILQ_INSERT_HEAD(&eventhandler_lists, list, el_link); in eventhandler_find_or_create_list()
101 return (list); in eventhandler_find_or_create_list()
109 eventhandler_register_internal(struct eventhandler_list *list, in eventhandler_register_internal() argument
118 if (list == NULL) { in eventhandler_register_internal()
120 list = eventhandler_find_or_create_list(name); in eventhandler_register_internal()
130 EHL_LOCK(list); in eventhandler_register_internal()
131 TAILQ_FOREACH(ep, &list->el_entries, ee_link) { in eventhandler_register_internal()
139 TAILQ_INSERT_TAIL(&list->el_entries, epn, ee_link); in eventhandler_register_internal()
140 EHL_UNLOCK(list); in eventhandler_register_internal()
145 eventhandler_register(struct eventhandler_list *list, const char *name, in eventhandler_register() argument
157 return (eventhandler_register_internal(list, name, &eg->ee)); in eventhandler_register()
169 vimage_eventhandler_register(struct eventhandler_list *list, const char *name, in vimage_eventhandler_register() argument
183 return (eventhandler_register_internal(list, name, &eg->ee)); in vimage_eventhandler_register()
188 _eventhandler_deregister(struct eventhandler_list *list, eventhandler_tag tag, in _eventhandler_deregister() argument
193 EHL_LOCK_ASSERT(list, MA_OWNED); in _eventhandler_deregister()
196 if (list->el_runcount == 0) { in _eventhandler_deregister()
198 list->el_name); in _eventhandler_deregister()
199 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in _eventhandler_deregister()
203 ep, list->el_name); in _eventhandler_deregister()
208 if (list->el_runcount == 0) { in _eventhandler_deregister()
210 list->el_name); in _eventhandler_deregister()
211 while (!TAILQ_EMPTY(&list->el_entries)) { in _eventhandler_deregister()
212 ep = TAILQ_FIRST(&list->el_entries); in _eventhandler_deregister()
213 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in _eventhandler_deregister()
218 __func__, list->el_name); in _eventhandler_deregister()
219 TAILQ_FOREACH(ep, &list->el_entries, ee_link) in _eventhandler_deregister()
223 while (wait && list->el_runcount > 0) in _eventhandler_deregister()
224 mtx_sleep(list, &list->el_lock, 0, "evhrm", 0); in _eventhandler_deregister()
225 EHL_UNLOCK(list); in _eventhandler_deregister()
229 eventhandler_deregister(struct eventhandler_list *list, eventhandler_tag tag) in eventhandler_deregister() argument
232 _eventhandler_deregister(list, tag, true); in eventhandler_deregister()
236 eventhandler_deregister_nowait(struct eventhandler_list *list, in eventhandler_deregister_nowait() argument
240 _eventhandler_deregister(list, tag, false); in eventhandler_deregister_nowait()
249 struct eventhandler_list *list; in _eventhandler_find_list() local
252 TAILQ_FOREACH(list, &eventhandler_lists, el_link) { in _eventhandler_find_list()
253 if (!strcmp(name, list->el_name)) in _eventhandler_find_list()
256 return (list); in _eventhandler_find_list()
265 struct eventhandler_list *list; in eventhandler_find_list() local
272 list = _eventhandler_find_list(name); in eventhandler_find_list()
273 if (list != NULL) in eventhandler_find_list()
274 EHL_LOCK(list); in eventhandler_find_list()
277 return(list); in eventhandler_find_list()
284 eventhandler_prune_list(struct eventhandler_list *list) in eventhandler_prune_list() argument
289 CTR2(KTR_EVH, "%s: pruning list \"%s\"", __func__, list->el_name); in eventhandler_prune_list()
290 EHL_LOCK_ASSERT(list, MA_OWNED); in eventhandler_prune_list()
291 TAILQ_FOREACH_SAFE(ep, &list->el_entries, ee_link, en) { in eventhandler_prune_list()
293 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in eventhandler_prune_list()
299 wakeup(list); in eventhandler_prune_list()
309 struct eventhandler_list *list; in eventhandler_create_list() local
315 list = eventhandler_find_or_create_list(name); in eventhandler_create_list()
318 return (list); in eventhandler_create_list()