Lines Matching refs:list

70 	struct eventhandler_list *list, *new_list;  in eventhandler_find_or_create_list()  local
73 list = _eventhandler_find_list(name); in eventhandler_find_or_create_list()
76 if (list == NULL) { in eventhandler_find_or_create_list()
84 list = _eventhandler_find_list(name); in eventhandler_find_or_create_list()
85 if (list != NULL) { in eventhandler_find_or_create_list()
89 list = new_list; in eventhandler_find_or_create_list()
90 TAILQ_INIT(&list->el_entries); in eventhandler_find_or_create_list()
91 list->el_name = (char *)(list + 1); in eventhandler_find_or_create_list()
92 strcpy(list->el_name, name); in eventhandler_find_or_create_list()
93 mtx_init(&list->el_lock, list->el_name, "eventhandler list", in eventhandler_find_or_create_list()
95 TAILQ_INSERT_HEAD(&eventhandler_lists, list, el_link); in eventhandler_find_or_create_list()
98 return (list); in eventhandler_find_or_create_list()
106 eventhandler_register_internal(struct eventhandler_list *list, in eventhandler_register_internal() argument
115 if (list == NULL) { in eventhandler_register_internal()
117 list = eventhandler_find_or_create_list(name); in eventhandler_register_internal()
127 EHL_LOCK(list); in eventhandler_register_internal()
128 TAILQ_FOREACH(ep, &list->el_entries, ee_link) { in eventhandler_register_internal()
136 TAILQ_INSERT_TAIL(&list->el_entries, epn, ee_link); in eventhandler_register_internal()
137 EHL_UNLOCK(list); in eventhandler_register_internal()
142 eventhandler_register(struct eventhandler_list *list, const char *name, in eventhandler_register() argument
154 return (eventhandler_register_internal(list, name, &eg->ee)); in eventhandler_register()
166 vimage_eventhandler_register(struct eventhandler_list *list, const char *name, in vimage_eventhandler_register() argument
180 return (eventhandler_register_internal(list, name, &eg->ee)); in vimage_eventhandler_register()
185 _eventhandler_deregister(struct eventhandler_list *list, eventhandler_tag tag, in _eventhandler_deregister() argument
190 EHL_LOCK_ASSERT(list, MA_OWNED); in _eventhandler_deregister()
193 if (list->el_runcount == 0) { in _eventhandler_deregister()
195 list->el_name); in _eventhandler_deregister()
196 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in _eventhandler_deregister()
200 ep, list->el_name); in _eventhandler_deregister()
205 if (list->el_runcount == 0) { in _eventhandler_deregister()
207 list->el_name); in _eventhandler_deregister()
208 while (!TAILQ_EMPTY(&list->el_entries)) { in _eventhandler_deregister()
209 ep = TAILQ_FIRST(&list->el_entries); in _eventhandler_deregister()
210 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in _eventhandler_deregister()
215 __func__, list->el_name); in _eventhandler_deregister()
216 TAILQ_FOREACH(ep, &list->el_entries, ee_link) in _eventhandler_deregister()
220 while (wait && list->el_runcount > 0) in _eventhandler_deregister()
221 mtx_sleep(list, &list->el_lock, 0, "evhrm", 0); in _eventhandler_deregister()
222 EHL_UNLOCK(list); in _eventhandler_deregister()
226 eventhandler_deregister(struct eventhandler_list *list, eventhandler_tag tag) in eventhandler_deregister() argument
229 _eventhandler_deregister(list, tag, true); in eventhandler_deregister()
233 eventhandler_deregister_nowait(struct eventhandler_list *list, in eventhandler_deregister_nowait() argument
237 _eventhandler_deregister(list, tag, false); in eventhandler_deregister_nowait()
246 struct eventhandler_list *list; in _eventhandler_find_list() local
249 TAILQ_FOREACH(list, &eventhandler_lists, el_link) { in _eventhandler_find_list()
250 if (!strcmp(name, list->el_name)) in _eventhandler_find_list()
253 return (list); in _eventhandler_find_list()
262 struct eventhandler_list *list; in eventhandler_find_list() local
269 list = _eventhandler_find_list(name); in eventhandler_find_list()
270 if (list != NULL) in eventhandler_find_list()
271 EHL_LOCK(list); in eventhandler_find_list()
274 return(list); in eventhandler_find_list()
281 eventhandler_prune_list(struct eventhandler_list *list) in eventhandler_prune_list() argument
286 CTR2(KTR_EVH, "%s: pruning list \"%s\"", __func__, list->el_name); in eventhandler_prune_list()
287 EHL_LOCK_ASSERT(list, MA_OWNED); in eventhandler_prune_list()
288 TAILQ_FOREACH_SAFE(ep, &list->el_entries, ee_link, en) { in eventhandler_prune_list()
290 TAILQ_REMOVE(&list->el_entries, ep, ee_link); in eventhandler_prune_list()
296 wakeup(list); in eventhandler_prune_list()
306 struct eventhandler_list *list; in eventhandler_create_list() local
312 list = eventhandler_find_or_create_list(name); in eventhandler_create_list()
315 return (list); in eventhandler_create_list()