kernel: sched: Change boolean APIs to return bool

Change APIs that essentially return a boolean expression  - 0 for
false and 1 for true - to return a bool.

MISRA-C rule 14.4

Signed-off-by: Flavio Ceolin <flavio.ceolin@intel.com>
This commit is contained in:
Flavio Ceolin 2018-09-20 15:43:57 -07:00 committed by Anas Nashif
commit 02ed85bd82
7 changed files with 42 additions and 40 deletions

View file

@ -81,7 +81,7 @@ typedef struct {
struct _priq_rb waitq; struct _priq_rb waitq;
} _wait_q_t; } _wait_q_t;
extern int _priq_rb_lessthan(struct rbnode *a, struct rbnode *b); extern bool _priq_rb_lessthan(struct rbnode *a, struct rbnode *b);
#define _WAIT_Q_INIT(wait_q) { { { .lessthan_fn = _priq_rb_lessthan } } } #define _WAIT_Q_INIT(wait_q) { { { .lessthan_fn = _priq_rb_lessthan } } }

View file

@ -43,6 +43,8 @@
#ifndef ZEPHYR_INCLUDE_MISC_RB_H_ #ifndef ZEPHYR_INCLUDE_MISC_RB_H_
#define ZEPHYR_INCLUDE_MISC_RB_H_ #define ZEPHYR_INCLUDE_MISC_RB_H_
#include <stdbool.h>
struct rbnode { struct rbnode {
struct rbnode *children[2]; struct rbnode *children[2];
}; };
@ -51,8 +53,8 @@ struct rbnode {
* @typedef rb_lessthan_t * @typedef rb_lessthan_t
* @brief Red/black tree comparison predicate * @brief Red/black tree comparison predicate
* *
* Compares the two nodes and returns 1 if node A is strictly less * Compares the two nodes and returns true if node A is strictly less
* than B according to the tree's sorting criteria, 0 otherwise. * than B according to the tree's sorting criteria, false otherwise.
* *
* Note that during insert, the new node being inserted will always be * Note that during insert, the new node being inserted will always be
* "A", where "B" is the existing node within the tree against which * "A", where "B" is the existing node within the tree against which
@ -60,7 +62,7 @@ struct rbnode {
* implement "most/least recently added" semantics between nodes which * implement "most/least recently added" semantics between nodes which
* would otherwise compare as equal. * would otherwise compare as equal.
*/ */
typedef int (*rb_lessthan_t)(struct rbnode *a, struct rbnode *b); typedef bool (*rb_lessthan_t)(struct rbnode *a, struct rbnode *b);
struct rbtree { struct rbtree {
struct rbnode *root; struct rbnode *root;

View file

@ -65,12 +65,12 @@ static ALWAYS_INLINE struct k_thread *_get_next_ready_thread(void)
#endif #endif
static inline int _is_idle_thread(void *entry_point) static inline bool _is_idle_thread(void *entry_point)
{ {
return entry_point == idle; return entry_point == idle;
} }
static inline int _is_thread_pending(struct k_thread *thread) static inline bool _is_thread_pending(struct k_thread *thread)
{ {
return !!(thread->base.thread_state & _THREAD_PENDING); return !!(thread->base.thread_state & _THREAD_PENDING);
} }
@ -84,32 +84,32 @@ static inline int _is_thread_prevented_from_running(struct k_thread *thread)
} }
static inline int _is_thread_timeout_active(struct k_thread *thread) static inline bool _is_thread_timeout_active(struct k_thread *thread)
{ {
#ifdef CONFIG_SYS_CLOCK_EXISTS #ifdef CONFIG_SYS_CLOCK_EXISTS
return thread->base.timeout.delta_ticks_from_prev != _INACTIVE; return thread->base.timeout.delta_ticks_from_prev != _INACTIVE;
#else #else
return 0; return false;
#endif #endif
} }
static inline int _is_thread_ready(struct k_thread *thread) static inline bool _is_thread_ready(struct k_thread *thread)
{ {
return !(_is_thread_prevented_from_running(thread) || return !((_is_thread_prevented_from_running(thread)) != 0 ||
_is_thread_timeout_active(thread)); _is_thread_timeout_active(thread));
} }
static inline int _has_thread_started(struct k_thread *thread) static inline bool _has_thread_started(struct k_thread *thread)
{ {
return !(thread->base.thread_state & _THREAD_PRESTART); return (thread->base.thread_state & _THREAD_PRESTART) == 0;
} }
static inline int _is_thread_state_set(struct k_thread *thread, u32_t state) static inline bool _is_thread_state_set(struct k_thread *thread, u32_t state)
{ {
return !!(thread->base.thread_state & state); return !!(thread->base.thread_state & state);
} }
static inline int _is_thread_queued(struct k_thread *thread) static inline bool _is_thread_queued(struct k_thread *thread)
{ {
return _is_thread_state_set(thread, _THREAD_QUEUED); return _is_thread_state_set(thread, _THREAD_QUEUED);
} }
@ -160,7 +160,7 @@ static inline void _mark_thread_as_not_queued(struct k_thread *thread)
_reset_thread_states(thread, _THREAD_QUEUED); _reset_thread_states(thread, _THREAD_QUEUED);
} }
static inline int _is_under_prio_ceiling(int prio) static inline bool _is_under_prio_ceiling(int prio)
{ {
return prio >= CONFIG_PRIORITY_CEILING; return prio >= CONFIG_PRIORITY_CEILING;
} }
@ -170,55 +170,55 @@ static inline int _get_new_prio_with_ceiling(int prio)
return _is_under_prio_ceiling(prio) ? prio : CONFIG_PRIORITY_CEILING; return _is_under_prio_ceiling(prio) ? prio : CONFIG_PRIORITY_CEILING;
} }
static inline int _is_prio1_higher_than_or_equal_to_prio2(int prio1, int prio2) static inline bool _is_prio1_higher_than_or_equal_to_prio2(int prio1, int prio2)
{ {
return prio1 <= prio2; return prio1 <= prio2;
} }
static inline int _is_prio_higher_or_equal(int prio1, int prio2) static inline bool _is_prio_higher_or_equal(int prio1, int prio2)
{ {
return _is_prio1_higher_than_or_equal_to_prio2(prio1, prio2); return _is_prio1_higher_than_or_equal_to_prio2(prio1, prio2);
} }
static inline int _is_prio1_lower_than_or_equal_to_prio2(int prio1, int prio2) static inline bool _is_prio1_lower_than_or_equal_to_prio2(int prio1, int prio2)
{ {
return prio1 >= prio2; return prio1 >= prio2;
} }
static inline int _is_prio1_higher_than_prio2(int prio1, int prio2) static inline bool _is_prio1_higher_than_prio2(int prio1, int prio2)
{ {
return prio1 < prio2; return prio1 < prio2;
} }
static inline int _is_prio_higher(int prio, int test_prio) static inline bool _is_prio_higher(int prio, int test_prio)
{ {
return _is_prio1_higher_than_prio2(prio, test_prio); return _is_prio1_higher_than_prio2(prio, test_prio);
} }
static inline int _is_prio_lower_or_equal(int prio1, int prio2) static inline bool _is_prio_lower_or_equal(int prio1, int prio2)
{ {
return _is_prio1_lower_than_or_equal_to_prio2(prio1, prio2); return _is_prio1_lower_than_or_equal_to_prio2(prio1, prio2);
} }
int _is_t1_higher_prio_than_t2(struct k_thread *t1, struct k_thread *t2); bool _is_t1_higher_prio_than_t2(struct k_thread *t1, struct k_thread *t2);
static inline int _is_valid_prio(int prio, void *entry_point) static inline bool _is_valid_prio(int prio, void *entry_point)
{ {
if (prio == K_IDLE_PRIO && _is_idle_thread(entry_point)) { if (prio == K_IDLE_PRIO && _is_idle_thread(entry_point)) {
return 1; return true;
} }
if (!_is_prio_higher_or_equal(prio, if (!_is_prio_higher_or_equal(prio,
K_LOWEST_APPLICATION_THREAD_PRIO)) { K_LOWEST_APPLICATION_THREAD_PRIO)) {
return 0; return false;
} }
if (!_is_prio_lower_or_equal(prio, if (!_is_prio_lower_or_equal(prio,
K_HIGHEST_APPLICATION_THREAD_PRIO)) { K_HIGHEST_APPLICATION_THREAD_PRIO)) {
return 0; return false;
} }
return 1; return true;
} }
static inline void _ready_thread(struct k_thread *thread) static inline void _ready_thread(struct k_thread *thread)
@ -272,7 +272,7 @@ static ALWAYS_INLINE void _sched_unlock_no_reschedule(void)
#endif #endif
} }
static ALWAYS_INLINE int _is_thread_timeout_expired(struct k_thread *thread) static ALWAYS_INLINE bool _is_thread_timeout_expired(struct k_thread *thread)
{ {
#ifdef CONFIG_SYS_CLOCK_EXISTS #ifdef CONFIG_SYS_CLOCK_EXISTS
return thread->base.timeout.delta_ticks_from_prev == _EXPIRED; return thread->base.timeout.delta_ticks_from_prev == _EXPIRED;

View file

@ -84,10 +84,10 @@ static inline int _is_idle(struct k_thread *thread)
#endif #endif
} }
int _is_t1_higher_prio_than_t2(struct k_thread *t1, struct k_thread *t2) bool _is_t1_higher_prio_than_t2(struct k_thread *t1, struct k_thread *t2)
{ {
if (t1->base.prio < t2->base.prio) { if (t1->base.prio < t2->base.prio) {
return 1; return true;
} }
#ifdef CONFIG_SCHED_DEADLINE #ifdef CONFIG_SCHED_DEADLINE
@ -106,7 +106,7 @@ int _is_t1_higher_prio_than_t2(struct k_thread *t1, struct k_thread *t2)
} }
#endif #endif
return 0; return false;
} }
static int should_preempt(struct k_thread *th, int preempt_ok) static int should_preempt(struct k_thread *th, int preempt_ok)
@ -355,7 +355,7 @@ void _unpend_thread(struct k_thread *thread)
*/ */
void _thread_priority_set(struct k_thread *thread, int prio) void _thread_priority_set(struct k_thread *thread, int prio)
{ {
int need_sched = 0; bool need_sched = 0;
LOCKED(&sched_lock) { LOCKED(&sched_lock) {
need_sched = _is_thread_ready(thread); need_sched = _is_thread_ready(thread);
@ -496,7 +496,7 @@ struct k_thread *_priq_dumb_best(sys_dlist_t *pq)
struct k_thread, base.qnode_dlist); struct k_thread, base.qnode_dlist);
} }
int _priq_rb_lessthan(struct rbnode *a, struct rbnode *b) bool _priq_rb_lessthan(struct rbnode *a, struct rbnode *b)
{ {
struct k_thread *ta, *tb; struct k_thread *ta, *tb;
@ -504,9 +504,9 @@ int _priq_rb_lessthan(struct rbnode *a, struct rbnode *b)
tb = CONTAINER_OF(b, struct k_thread, base.qnode_rb); tb = CONTAINER_OF(b, struct k_thread, base.qnode_rb);
if (_is_t1_higher_prio_than_t2(ta, tb)) { if (_is_t1_higher_prio_than_t2(ta, tb)) {
return 1; return true;
} else if (_is_t1_higher_prio_than_t2(tb, ta)) { } else if (_is_t1_higher_prio_than_t2(tb, ta)) {
return 0; return false;
} else { } else {
return ta->base.order_key < tb->base.order_key ? 1 : 0; return ta->base.order_key < tb->base.order_key ? 1 : 0;
} }
@ -670,7 +670,7 @@ int _unpend_all(_wait_q_t *waitq)
int need_sched = 0; int need_sched = 0;
struct k_thread *th; struct k_thread *th;
while ((th = _waitq_head(waitq))) { while ((th = _waitq_head(waitq)) != NULL) {
_unpend_thread(th); _unpend_thread(th);
_ready_thread(th); _ready_thread(th);
need_sched = 1; need_sched = 1;

View file

@ -74,7 +74,7 @@ extern struct _k_object *_k_object_gperf_find(void *obj);
extern void _k_object_gperf_wordlist_foreach(_wordlist_cb_func_t func, extern void _k_object_gperf_wordlist_foreach(_wordlist_cb_func_t func,
void *context); void *context);
static int node_lessthan(struct rbnode *a, struct rbnode *b); static bool node_lessthan(struct rbnode *a, struct rbnode *b);
/* /*
* Red/black tree of allocated kernel objects, for reasonably fast lookups * Red/black tree of allocated kernel objects, for reasonably fast lookups
@ -109,7 +109,7 @@ static size_t obj_size_get(enum k_objects otype)
return ret; return ret;
} }
static int node_lessthan(struct rbnode *a, struct rbnode *b) static bool node_lessthan(struct rbnode *a, struct rbnode *b)
{ {
return a < b; return a < b;
} }

View file

@ -227,7 +227,7 @@ void rb_insert(struct rbtree *tree, struct rbnode *node)
struct rbnode *parent = stack[stacksz - 1]; struct rbnode *parent = stack[stacksz - 1];
int side = !tree->lessthan_fn(node, parent); int side = tree->lessthan_fn(node, parent) ? 0 : 1;
set_child(parent, side, node); set_child(parent, side, node);
set_color(node, RED); set_color(node, RED);

View file

@ -49,7 +49,7 @@ int node_index(struct rbnode *n)
} }
/* Our "lessthan" is just the location of the struct */ /* Our "lessthan" is just the location of the struct */
int node_lessthan(struct rbnode *a, struct rbnode *b) bool node_lessthan(struct rbnode *a, struct rbnode *b)
{ {
if (current_insertee) { if (current_insertee) {
CHECK(a == current_insertee); CHECK(a == current_insertee);