[PATCH 7/9] poller: allow to restrict the poller frequency

Sascha Hauer s.hauer at pengutronix.de
Mon Jan 5 02:42:55 PST 2015


On Tue, Dec 23, 2014 at 07:21:56PM +0100, Jean-Christophe PLAGNIOL-VILLARD wrote:
> so we do not slow down barebox on too much polling
> specialy on USB drivers
> 
> Signed-off-by: Jean-Christophe PLAGNIOL-VILLARD <plagnioj at jcrosoft.com>
> ---
>  common/poller.c  | 11 ++++++++++-
>  include/poller.h |  3 +++
>  2 files changed, 13 insertions(+), 1 deletion(-)

Could you repost this along with the first user?

> 
> diff --git a/common/poller.c b/common/poller.c
> index 496636d..58b105d 100644
> --- a/common/poller.c
> +++ b/common/poller.c
> @@ -24,6 +24,9 @@ int poller_register(struct poller_struct *poller)
>  	list_add_tail(&poller->list, &poller_list);
>  	poller->registered = 1;
>  
> +	if (poller->frequency)
> +		poller->poll_next = get_time_ns();
> +
>  	return 0;
>  }
>  
> @@ -96,8 +99,14 @@ void poller_call(void)
>  
>  	poller_active = 1;
>  
> -	list_for_each_entry_safe(poller, tmp, &poller_list, list)
> +	list_for_each_entry_safe(poller, tmp, &poller_list, list) {
> +
> +		if (poller->frequency && get_time_ns() < poller->poll_next)
> +			continue;
>  		poller->func(poller);
> +		if (poller->frequency)
> +			poller->poll_next += poller->frequency;
> +	}
>  
>  	poller_active = 0;
>  }
> diff --git a/include/poller.h b/include/poller.h
> index cda5b57..3568a80 100644
> --- a/include/poller.h
> +++ b/include/poller.h
> @@ -14,6 +14,9 @@ struct poller_struct {
>  	void (*func)(struct poller_struct *poller);
>  	int registered;
>  	struct list_head list;
> +
> +	uint64_t frequency;
> +	uint64_t poll_next;
>  };

Could you reorder the fields in struct poller_struct by fields which
should be initialized by users and internal fields? This was not exactly
clear before this patch, but this patch introduces another two fields,
from which one must be initialized by the user and the other one not.

Sascha

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list