[Xenomai] Issue while porting ipipe to kernel > 4.5 (clockevents API change)

Philippe Gerum rpm at xenomai.org
Mon Apr 11 17:05:48 CEST 2016


On 04/11/2016 11:45 AM, Thierry Bultel wrote:
> Hi,
> while porting ipipe to 4.5, I am facing the following issue:
> 
> clockchips.h has changed, and the set_mode function pointer has been
> replaced by
> 
>     int            (*set_state_periodic)(struct clock_event_device *);
>     int            (*set_state_oneshot)(struct clock_event_device *);
>     int            (*set_state_oneshot_stopped)(struct
> clock_event_device *);
>     int            (*set_state_shutdown)(struct clock_event_device *);
> 
> Moreover, CLOCK_EVT_MODE_XXX have been renamed to :
> 
> enum clock_event_state {
>     CLOCK_EVT_STATE_DETACHED,
>     CLOCK_EVT_STATE_SHUTDOWN,
>     CLOCK_EVT_STATE_PERIODIC,
>     CLOCK_EVT_STATE_ONESHOT,
>     CLOCK_EVT_STATE_ONESHOT_STOPPED,
> };
> 
> The impact therefore goes further than ipipe , since xenomai uses a
> single pointer
> for performing emulation.
> 
> I am just wondering what is the best way to deal with this, without
> impacting to much code
> Is it best to add a compatibility wrapper (moreover, the set_state_xxx
> functions are only used in clockevents.c), and some extra #defines
> or to spread the changes up to xenomai code ?
> 

I would confine the changes to the pipeline, I don't see any reason for
spreading those changes to Xenomai only for supporting the
ONESHOT_STOPPED mode, which might be usable as a hint, but may be
ignored by Xenomai as well, especially by legacy Xenomai 2.x releases.

You could redirect the new state handlers to a set of internal wrapper
routines in the pipeline, which would translate the calls to the
Xenomai's current emulation handlers.

-- 
Philippe.



More information about the Xenomai mailing list