diff options
author | Allan Stephens <allan.stephens@windriver.com> | 2016-11-18 15:32:13 -0500 |
---|---|---|
committer | Anas Nashif <anas.nashif@intel.com> | 2016-11-18 18:43:41 -0500 |
commit | 7f1d5a47e49c11db209e88173f112ef764b7d9bf (patch) | |
tree | 5cd29e0449d9a116ab9171ef30340ab8a1d429a6 | |
parent | aca2baa43a7dd5147585b9464285425e89edaecc (diff) |
kernel: Minor optimization to kernel event logger timestamping
Rewrites the timestamping logic to always generate timestamps
via a function pointer that is initialized to sys_cycle_get_32(),
but can be changed to point to a user-supplied function. This
eliminates the need for an if/then/else construct in every place
that a timestamp is generated.
Change-Id: Id11f8c41b193a93cece16565978a525056010f0e
Signed-off-by: Allan Stephens <allan.stephens@windriver.com>
-rw-r--r-- | include/misc/kernel_event_logger.h | 23 | ||||
-rw-r--r-- | kernel/unified/kernel_event_logger.c | 16 |
2 files changed, 18 insertions, 21 deletions
diff --git a/include/misc/kernel_event_logger.h b/include/misc/kernel_event_logger.h index 686e8e2b1..764aa41d4 100644 --- a/include/misc/kernel_event_logger.h +++ b/include/misc/kernel_event_logger.h @@ -57,8 +57,6 @@ static inline void _sys_k_event_logger_interrupt(void) {}; * @{ */ -#ifdef CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP - /** * @typedef sys_k_timer_func_t * @brief Event timestamp generator function type. @@ -74,15 +72,11 @@ typedef uint32_t (*sys_k_timer_func_t)(void); * @cond INTERNAL_HIDDEN */ -extern sys_k_timer_func_t _sys_k_timer_func; - -static inline uint32_t _sys_k_get_time(void) -{ - if (_sys_k_timer_func) - return _sys_k_timer_func(); - else - return sys_cycle_get_32(); -} +#ifdef CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP +extern sys_k_timer_func_t _sys_k_get_time; +#else +#define _sys_k_get_time sys_cycle_get_32 +#endif /* CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP */ /** * INTERNAL_HIDDEN @endcond @@ -108,11 +102,10 @@ static inline uint32_t _sys_k_get_time(void) * * @return N/A */ -void sys_k_event_logger_set_timer(sys_k_timer_func_t func); -#else -static inline uint32_t _sys_k_get_time(void) +#ifdef CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP +static inline void sys_k_event_logger_set_timer(sys_k_timer_func_t func) { - return sys_cycle_get_32(); + _sys_k_get_time = func; } #endif /* CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP */ diff --git a/kernel/unified/kernel_event_logger.c b/kernel/unified/kernel_event_logger.c index a747e229e..9986f3759 100644 --- a/kernel/unified/kernel_event_logger.c +++ b/kernel/unified/kernel_event_logger.c @@ -63,12 +63,16 @@ SYS_INIT(_sys_k_event_logger_init, POST_KERNEL, CONFIG_KERNEL_INIT_PRIORITY_DEFAULT); #ifdef CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP -sys_k_timer_func_t _sys_k_timer_func; -void sys_k_event_logger_set_timer(sys_k_timer_func_t func) -{ - _sys_k_timer_func = func; -} -#endif +/* + * _sys_k_get_time() + * + * This function pointer can be invoked to generate an event timestamp. + * By default it uses the kernel's hardware clock, but can be changed + * to point to an application-defined routine. + * + */ +sys_k_timer_func_t _sys_k_get_time = sys_cycle_get_32; +#endif /* CONFIG_KERNEL_EVENT_LOGGER_CUSTOM_TIMESTAMP */ void sys_k_event_logger_put_timed(uint16_t event_id) { |