[PATCH 7/8] dovetail/tick: pipeline: impmement pipeline_must_force_program_tick

Philippe Gerum rpm at xenomai.org
Sat Jan 16 16:14:55 CET 2021


hongzha1 via Xenomai <xenomai at xenomai.org> writes:

The short log would rather start with "cobalt/tick: dovetail: ..."
here.

> 1. set XNTSTOP to force to program tick after the ONESHOT_STOPPED
>    state
> 2. implement pipeline_must_force_program_tick for dovetail
>
> Signed-off-by: hongzha1 <hongzhan.chen at intel.com>
>
> diff --git a/include/cobalt/kernel/dovetail/pipeline/tick.h b/include/cobalt/kernel/dovetail/pipeline/tick.h
> index 409581a3c..8ac4760ec 100644
> --- a/include/cobalt/kernel/dovetail/pipeline/tick.h
> +++ b/include/cobalt/kernel/dovetail/pipeline/tick.h
> @@ -9,4 +9,8 @@ int pipeline_install_tick_proxy(void);
>  
>  void pipeline_uninstall_tick_proxy(void);
>  
> +struct xnsched;
> +
> +inline bool pipeline_must_force_program_tick(struct xnsched *sched);
> +
>  #endif /* !_COBALT_KERNEL_IPIPE_TICK_H */
> diff --git a/kernel/cobalt/dovetail/tick.c b/kernel/cobalt/dovetail/tick.c
> index bf267b9d9..8d6dc1812 100644
> --- a/kernel/cobalt/dovetail/tick.c
> +++ b/kernel/cobalt/dovetail/tick.c
> @@ -96,6 +96,11 @@ void xn_core_tick(struct clock_event_device *dummy) /* hard irqs off */
>  	xnintr_core_clock_handler();
>  }
>  
> +inline bool pipeline_must_force_program_tick(struct xnsched *sched)
> +{
> +	return sched->lflags & XNTSTOP;
> +}
> +
>  static int proxy_set_oneshot_stopped(struct clock_event_device *proxy_dev)
>  {
>  	struct clock_event_device *real_dev;
> @@ -117,7 +122,7 @@ static int proxy_set_oneshot_stopped(struct clock_event_device *proxy_dev)
>  	xnlock_get_irqsave(&nklock, s);
>  	sched = xnsched_current();
>  	xntimer_stop(&sched->htimer);
> -	//sched->lflags |= XNTSTOP;
> +	sched->lflags |= XNTSTOP;
>  
>  	if (sched->lflags & XNIDLE) {
>  		real_dev = dev->real_device;


-- 
Philippe.



More information about the Xenomai mailing list