[PATCH V2 5/5] dovetail/tick: pipeline: implement pipeline_must_force_program_tick

Philippe Gerum rpm at xenomai.org
Sun Jan 24 18:06:57 CET 2021


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

> Force the next tick to be programmed in the hardware as a result of
> leaving the ONESHOT_STOPPED
>
> 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 1b622defb..fc6203667 100644
> --- a/kernel/cobalt/dovetail/tick.c
> +++ b/kernel/cobalt/dovetail/tick.c
> @@ -89,6 +89,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;
> @@ -110,7 +115,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;

Merged, fixing the short log. Thanks.

-- 
Philippe.



More information about the Xenomai mailing list