Lines Matching refs:event
11 void init_event(struct sched_event *event) in init_event() argument
13 spinlock_init(&event->lock); in init_event()
14 event->set = false; in init_event()
15 event->waiting_thread = NULL; in init_event()
18 void reset_event(struct sched_event *event) in reset_event() argument
22 spinlock_irqsave_obtain(&event->lock, &rflag); in reset_event()
23 event->set = false; in reset_event()
24 event->waiting_thread = NULL; in reset_event()
25 spinlock_irqrestore_release(&event->lock, rflag); in reset_event()
35 void wait_event(struct sched_event *event) in wait_event() argument
39 spinlock_irqsave_obtain(&event->lock, &rflag); in wait_event()
40 ASSERT((event->waiting_thread == NULL), "only support exclusive waiting"); in wait_event()
41 event->waiting_thread = sched_get_current(get_pcpu_id()); in wait_event()
42 while (!event->set && (event->waiting_thread != NULL)) { in wait_event()
43 sleep_thread(event->waiting_thread); in wait_event()
44 spinlock_irqrestore_release(&event->lock, rflag); in wait_event()
46 spinlock_irqsave_obtain(&event->lock, &rflag); in wait_event()
48 event->set = false; in wait_event()
49 event->waiting_thread = NULL; in wait_event()
50 spinlock_irqrestore_release(&event->lock, rflag); in wait_event()
53 void signal_event(struct sched_event *event) in signal_event() argument
57 spinlock_irqsave_obtain(&event->lock, &rflag); in signal_event()
58 event->set = true; in signal_event()
59 if (event->waiting_thread != NULL) { in signal_event()
60 wake_thread(event->waiting_thread); in signal_event()
62 spinlock_irqrestore_release(&event->lock, rflag); in signal_event()