kernel: optimize ms-to-ticks for certain tick frequencies
Some tick frequencies lend themselves to optimized conversions from ms to ticks and vice-versa. - 1000Hz which does not need any conversion - 500Hz, 250Hz, 125Hz where the division/multiplication are a straight shift since they are power-of-two factors of 1000. In addition, some more generally used values are made to use optimized conversion equations rather than the generic one that uses 64-bit math, and often results in calling compiler intrinsics. These values are: 100Hz, 50Hz, 25Hz, 20Hz, 10Hz, 1Hz (the last one used in some testing). Avoiding the 64-bit math intrisics has the additional benefit, in addition to increased performance, of using a significant lower amount of stack space: 52 bytes on ARM Cortex-M and 80 bytes on x86. Change-Id: I080eb338a2637d6b1c6838c119af1a9fa37fe869 Signed-off-by: Benjamin Walsh <benjamin.walsh@windriver.com>
This commit is contained in:
parent
95061b6561
commit
6209218f40
6 changed files with 73 additions and 10 deletions
|
@ -31,7 +31,9 @@ extern void _pend_thread(struct k_thread *thread,
|
|||
extern void _pend_current_thread(_wait_q_t *wait_q, int32_t timeout);
|
||||
extern void _move_thread_to_end_of_prio_q(struct k_thread *thread);
|
||||
extern int __must_switch_threads(void);
|
||||
#ifdef _NON_OPTIMIZED_TICKS_PER_SEC
|
||||
extern int32_t _ms_to_ticks(int32_t ms);
|
||||
#endif
|
||||
extern void idle(void *, void *, void *);
|
||||
|
||||
/* find which one is the next thread to run */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue