| /* |
| * Copyright (C) 2010 Marc Kleine-Budde <mkl@pengutronix.de> |
| * |
| * This file is released under the GPLv2 |
| * |
| */ |
| |
| #include <common.h> |
| #include <driver.h> |
| #include <malloc.h> |
| #include <module.h> |
| #include <param.h> |
| #include <poller.h> |
| |
| 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; |
| } |