Lines Matching refs:event
40 static int signal_poller(struct k_poll_event *event, uint32_t state);
41 static int signal_triggered_work(struct k_poll_event *event, uint32_t status);
43 void k_poll_event_init(struct k_poll_event *event, uint32_t type, in k_poll_event_init() argument
51 event->poller = NULL; in k_poll_event_init()
53 event->type = type; in k_poll_event_init()
54 event->state = K_POLL_STATE_NOT_READY; in k_poll_event_init()
55 event->mode = mode; in k_poll_event_init()
56 event->unused = 0U; in k_poll_event_init()
57 event->obj = obj; in k_poll_event_init()
59 SYS_PORT_TRACING_FUNC(k_poll_api, event_init, event); in k_poll_event_init()
63 static inline bool is_condition_met(struct k_poll_event *event, uint32_t *state) in is_condition_met() argument
65 switch (event->type) { in is_condition_met()
67 if (k_sem_count_get(event->sem) > 0U) { in is_condition_met()
73 if (!k_queue_is_empty(event->queue)) { in is_condition_met()
79 if (event->signal->signaled != 0U) { in is_condition_met()
85 if (event->msgq->used_msgs > 0) { in is_condition_met()
96 __ASSERT(false, "invalid event type (0x%x)\n", event->type); in is_condition_met()
108 static inline void add_event(sys_dlist_t *events, struct k_poll_event *event, in add_event() argument
117 sys_dlist_append(events, &event->_node); in add_event()
124 sys_dlist_insert(&pending->_node, &event->_node); in add_event()
129 sys_dlist_append(events, &event->_node); in add_event()
133 static inline void register_event(struct k_poll_event *event, in register_event() argument
136 switch (event->type) { in register_event()
138 __ASSERT(event->sem != NULL, "invalid semaphore\n"); in register_event()
139 add_event(&event->sem->poll_events, event, poller); in register_event()
142 __ASSERT(event->queue != NULL, "invalid queue\n"); in register_event()
143 add_event(&event->queue->poll_events, event, poller); in register_event()
146 __ASSERT(event->signal != NULL, "invalid poll signal\n"); in register_event()
147 add_event(&event->signal->poll_events, event, poller); in register_event()
150 __ASSERT(event->msgq != NULL, "invalid message queue\n"); in register_event()
151 add_event(&event->msgq->poll_events, event, poller); in register_event()
154 __ASSERT(event->pipe != NULL, "invalid pipe\n"); in register_event()
155 add_event(&event->pipe->poll_events, event, poller); in register_event()
165 event->poller = poller; in register_event()
169 static inline void clear_event_registration(struct k_poll_event *event) in clear_event_registration() argument
173 event->poller = NULL; in clear_event_registration()
175 switch (event->type) { in clear_event_registration()
177 __ASSERT(event->sem != NULL, "invalid semaphore\n"); in clear_event_registration()
181 __ASSERT(event->queue != NULL, "invalid queue\n"); in clear_event_registration()
185 __ASSERT(event->signal != NULL, "invalid poll signal\n"); in clear_event_registration()
189 __ASSERT(event->msgq != NULL, "invalid message queue\n"); in clear_event_registration()
193 __ASSERT(event->pipe != NULL, "invalid pipe\n"); in clear_event_registration()
203 if (remove_event && sys_dnode_is_linked(&event->_node)) { in clear_event_registration()
204 sys_dlist_remove(&event->_node); in clear_event_registration()
220 static inline void set_event_ready(struct k_poll_event *event, uint32_t state) in set_event_ready() argument
222 event->poller = NULL; in set_event_ready()
223 event->state |= state; in set_event_ready()
257 static int signal_poller(struct k_poll_event *event, uint32_t state) in signal_poller() argument
259 struct k_thread *thread = poller_thread(event->poller); in signal_poller()
431 static int signal_poll_event(struct k_poll_event *event, uint32_t state) in signal_poll_event() argument
433 struct z_poller *poller = event->poller; in signal_poll_event()
438 retcode = signal_poller(event, state); in signal_poll_event()
440 retcode = signal_triggered_work(event, state); in signal_poll_event()
453 set_event_ready(event, state); in signal_poll_event()
598 static int signal_triggered_work(struct k_poll_event *event, uint32_t status) in signal_triggered_work() argument
600 struct z_poller *poller = event->poller; in signal_triggered_work()