Commit caba2ad6 authored by Martin Jäger's avatar Martin Jäger Committed by Anas Nashif
Browse files

kernel: events: add function to clear events

Shortcut making it easier to clear events than with k_event_set_masked.

Signed-off-by: default avatarMartin Jäger <martin@libre.solar>
parent 58ece9d5
Loading
Loading
Loading
Loading
+10 −0
Changes for include/zephyr/kernel.h: 10 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -2142,6 +2142,16 @@ __syscall void k_event_set(struct k_event *event, uint32_t events);
__syscall void k_event_set_masked(struct k_event *event, uint32_t events,
				  uint32_t events_mask);

/**
 * @brief Clear the events in an event object
 *
 * This routine clears (resets) the specified events stored in an event object.
 *
 * @param event Address of the event object
 * @param events Set of events to clear in @a event
 */
__syscall void k_event_clear(struct k_event *event, uint32_t events);

/**
 * @brief Wait for any of the specified events
 *
+14 −0
Changes for kernel/events.c: 14 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -188,6 +188,20 @@ void z_vrfy_k_event_set_masked(struct k_event *event, uint32_t events,
#include <syscalls/k_event_set_masked_mrsh.c>
#endif

void z_impl_k_event_clear(struct k_event *event, uint32_t events)
{
	k_event_post_internal(event, 0, events);
}

#ifdef CONFIG_USERSPACE
void z_vrfy_k_event_clear(struct k_event *event, uint32_t events)
{
	Z_OOPS(Z_SYSCALL_OBJ(event, K_OBJ_EVENT));
	z_impl_k_event_clear(event, events);
}
#include <syscalls/k_event_clear_mrsh.c>
#endif

static uint32_t k_event_wait_internal(struct k_event *event, uint32_t events,
				      unsigned int options, k_timeout_t timeout)
{