Module: xenomai-forge Branch: master Commit: 2ace89fca63b366bf85e7e39bc73ea7b3294c82b URL: http://git.xenomai.org/?p=xenomai-forge.git;a=commit;h=2ace89fca63b366bf85e7e39bc73ea7b3294c82b
Author: Philippe Gerum <r...@xenomai.org> Date: Sat Nov 26 15:24:05 2011 +0100 copperplate/clockobj: optimize rel->abs timeout conversion --- include/copperplate/clockobj.h | 28 ++++++++++++++++++++-------- lib/copperplate/clockobj.c | 4 ++-- 2 files changed, 22 insertions(+), 10 deletions(-) diff --git a/include/copperplate/clockobj.h b/include/copperplate/clockobj.h index e3180d9..8e07946 100644 --- a/include/copperplate/clockobj.h +++ b/include/copperplate/clockobj.h @@ -105,9 +105,6 @@ void clockobj_get_date(struct clockobj *clkobj, void clockobj_get_time(struct clockobj *clkobj, ticks_t *pticks, ticks_t *ptsc); -void __clockobj_ticks_to_timeout(struct clockobj *clkobj, clockid_t clk_id, - ticks_t ticks, struct timespec *ts); - void clockobj_caltime_to_timeout(struct clockobj *clkobj, const struct tm *tm, unsigned long rticks, struct timespec *ts); @@ -194,14 +191,19 @@ void clockobj_ns_to_timespec(ticks_t ns, struct timespec *ts) #endif /* CONFIG_XENO_MERCURY */ +#ifdef CONFIG_XENO_LORES_CLOCK_DISABLED + static inline -void clockobj_ticks_to_timeout(struct clockobj *clkobj, - ticks_t ticks, struct timespec *ts) +void __clockobj_ticks_to_timeout(struct clockobj *clkobj, + clockid_t clk_id, + ticks_t ticks, struct timespec *ts) { - __clockobj_ticks_to_timeout(clkobj, CLOCK_COPPERPLATE, ticks, ts); -} + struct timespec now, delta; -#ifdef CONFIG_XENO_LORES_CLOCK_DISABLED + __RT(clock_gettime(clk_id, &now)); + clockobj_ns_to_timespec(ticks, &delta); + timespec_add(ts, &now, &delta); +} static inline void __clockobj_ticks_to_timespec(struct clockobj *clkobj, @@ -255,6 +257,9 @@ static inline sticks_t clockobj_ticks_to_ns(struct clockobj *clkobj, #else /* !CONFIG_XENO_LORES_CLOCK_DISABLED */ +void __clockobj_ticks_to_timeout(struct clockobj *clkobj, clockid_t clk_id, + ticks_t ticks, struct timespec *ts); + void __clockobj_ticks_to_timespec(struct clockobj *clkobj, ticks_t ticks, struct timespec *ts); @@ -300,4 +305,11 @@ static inline sticks_t clockobj_ticks_to_ns(struct clockobj *clkobj, #endif /* !CONFIG_XENO_LORES_CLOCK_DISABLED */ +static inline +void clockobj_ticks_to_timeout(struct clockobj *clkobj, + ticks_t ticks, struct timespec *ts) +{ + __clockobj_ticks_to_timeout(clkobj, CLOCK_COPPERPLATE, ticks, ts); +} + #endif /* _COPPERPLATE_CLOCKOBJ_H */ diff --git a/lib/copperplate/clockobj.c b/lib/copperplate/clockobj.c index fe447f8..4cc4a63 100644 --- a/lib/copperplate/clockobj.c +++ b/lib/copperplate/clockobj.c @@ -97,8 +97,6 @@ void __clockobj_ticks_to_timespec(struct clockobj *clkobj, clockobj_ns_to_timespec(ticks, ts); } -#endif /* !CONFIG_XENO_LORES_CLOCK_DISABLED */ - void __clockobj_ticks_to_timeout(struct clockobj *clkobj, clockid_t clk_id, ticks_t ticks, struct timespec *ts) @@ -112,6 +110,8 @@ void __clockobj_ticks_to_timeout(struct clockobj *clkobj, timespec_add(ts, ts, &delta); } +#endif /* !CONFIG_XENO_LORES_CLOCK_DISABLED */ + static const int mdays[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; _______________________________________________ Xenomai-git mailing list Xenomai-git@gna.org https://mail.gna.org/listinfo/xenomai-git