kernel: Use mask rather than boolean to update events
Although there is nothing wrong with the existing code, it doesn't permit individual bits to be set (or cleared). This makes further changes slightly awkward. Use a mask to restrict the bits set in an event. Signed-off-by: Andrew Jackson <andrew.jackson@amd.com>
This commit is contained in:
parent
e8f947b975
commit
e7e827a0d2
5 changed files with 19 additions and 21 deletions
|
@ -1870,17 +1870,17 @@
|
|||
* @brief Trace posting of an Event call entry
|
||||
* @param event Event object
|
||||
* @param events Set of posted events
|
||||
* @param accumulate True if events accumulate, false otherwise
|
||||
* @param events_mask Mask to apply against posted events
|
||||
*/
|
||||
#define sys_port_trace_k_event_post_enter(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, events_mask)
|
||||
|
||||
/**
|
||||
* @brief Trace posting of an Event call exit
|
||||
* @param event Event object
|
||||
* @param events Set of posted events
|
||||
* @param accumulate True if events accumulate, false otherwise
|
||||
* @param events_mask Mask to apply against posted events
|
||||
*/
|
||||
#define sys_port_trace_k_event_post_exit(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, events_mask)
|
||||
|
||||
/**
|
||||
* @brief Trace waiting of an Event call entry
|
||||
|
|
|
@ -85,7 +85,7 @@ static bool are_wait_conditions_met(uint32_t desired, uint32_t current,
|
|||
}
|
||||
|
||||
static void k_event_post_internal(struct k_event *event, uint32_t events,
|
||||
bool accumulate)
|
||||
uint32_t events_mask)
|
||||
{
|
||||
k_spinlock_key_t key;
|
||||
struct k_thread *thread;
|
||||
|
@ -95,12 +95,10 @@ static void k_event_post_internal(struct k_event *event, uint32_t events,
|
|||
key = k_spin_lock(&event->lock);
|
||||
|
||||
SYS_PORT_TRACING_OBJ_FUNC_ENTER(k_event, post, event, events,
|
||||
accumulate);
|
||||
|
||||
if (accumulate) {
|
||||
events |= event->events;
|
||||
}
|
||||
events_mask);
|
||||
|
||||
events = (event->events & ~events_mask) |
|
||||
(events & events_mask);
|
||||
event->events = events;
|
||||
|
||||
/*
|
||||
|
@ -145,12 +143,12 @@ static void k_event_post_internal(struct k_event *event, uint32_t events,
|
|||
z_reschedule(&event->lock, key);
|
||||
|
||||
SYS_PORT_TRACING_OBJ_FUNC_EXIT(k_event, post, event, events,
|
||||
accumulate);
|
||||
events_mask);
|
||||
}
|
||||
|
||||
void z_impl_k_event_post(struct k_event *event, uint32_t events)
|
||||
{
|
||||
k_event_post_internal(event, events, true);
|
||||
k_event_post_internal(event, events, events);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
|
@ -164,7 +162,7 @@ void z_vrfy_k_event_post(struct k_event *event, uint32_t events)
|
|||
|
||||
void z_impl_k_event_set(struct k_event *event, uint32_t events)
|
||||
{
|
||||
k_event_post_internal(event, events, false);
|
||||
k_event_post_internal(event, events, ~0);
|
||||
}
|
||||
|
||||
#ifdef CONFIG_USERSPACE
|
||||
|
|
|
@ -314,8 +314,8 @@ extern "C" {
|
|||
#define sys_port_trace_k_timer_status_sync_exit(timer, result)
|
||||
|
||||
#define sys_port_trace_k_event_init(event)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout)
|
||||
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout)
|
||||
#define sys_port_trace_k_event_wait_exit(event, events, ret)
|
||||
|
|
|
@ -421,10 +421,10 @@
|
|||
sys_trace_k_timer_status_sync_exit(timer, result)
|
||||
|
||||
#define sys_port_trace_k_event_init(event) sys_trace_k_event_init(event)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, accumulate) \
|
||||
sys_trace_k_event_post_enter(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, accumulate) \
|
||||
sys_trace_k_event_post_exit(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, events_mask) \
|
||||
sys_trace_k_event_post_enter(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, events_mask) \
|
||||
sys_trace_k_event_post_exit(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout) \
|
||||
sys_trace_k_event_wait_enter(event, events, options, timeout)
|
||||
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout) \
|
||||
|
|
|
@ -316,8 +316,8 @@ void sys_trace_idle(void);
|
|||
#define sys_port_trace_k_timer_status_sync_exit(timer, result)
|
||||
|
||||
#define sys_port_trace_k_event_init(event)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, accumulate)
|
||||
#define sys_port_trace_k_event_post_enter(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_post_exit(event, events, events_mask)
|
||||
#define sys_port_trace_k_event_wait_enter(event, events, options, timeout)
|
||||
#define sys_port_trace_k_event_wait_blocking(event, events, options, timeout)
|
||||
#define sys_port_trace_k_event_wait_exit(event, events, ret)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue