/* * Copyright (C) 2010 Marc Kleine-Budde * * This file is released under the GPLv2 * */ #include #include #include #include #include #include static LIST_HEAD(poller_list); static int poller_active; int poller_register(struct poller_struct *poller) { list_add_tail(&poller->list, &poller_list); return 0; } int poller_unregister(struct poller_struct *poller) { list_del(&poller->list); return 0; } void poller_call(void) { struct poller_struct *poller, *tmp; if (poller_active) return; poller_active = 1; list_for_each_entry_safe(poller, tmp, &poller_list, list) poller->func(poller); poller_active = 0; }