Lines Matching refs:events

39 #define EVENT_BEHAVIOR(events) ((events) & (B_EVENT_LEVEL_TRIGGERED | B_EVENT_ONE_SHOT))
40 #define USER_EVENTS(events) ((events) & ~B_EVENT_PRIVATE_MASK)
100 status_t Select(int32 object, uint16 type, uint32 events, void* userData);
104 status_t Notify(select_info* info, uint16 events);
110 void _Notify(select_event* event, uint16 events);
141 * Notified when events are available on the queue.
173 event->events |= B_EVENT_DELETING;
180 if ((event->events & B_EVENT_QUEUED) != 0)
189 // We already removed all events in the tree from this list.
190 // The only remaining events will be INVALID ones already deselected.
212 EventQueue::Select(int32 object, uint16 type, uint32 events, void* userData)
219 == (USER_EVENTS(events) | B_EVENT_NON_MASKABLE))
244 event->behavior = EVENT_BEHAVIOR(events);
246 event->events = 0;
255 event->events |= B_EVENT_SELECTING;
256 event->selected_events = USER_EVENTS(events) | B_EVENT_NON_MASKABLE;
270 atomic_and(&event->events, ~B_EVENT_SELECTING);
302 if ((atomic_or(&event->events, B_EVENT_DELETING) & B_EVENT_DELETING) != 0)
309 if ((event->events & B_EVENT_INVALID) == 0)
311 if ((event->events & B_EVENT_QUEUED) != 0)
330 EventQueue::Notify(select_info* info, uint16 events)
333 _Notify(event, events);
339 EventQueue::_Notify(select_event* event, uint16 events)
341 if ((events & event->selected_events) == 0)
344 const int32 previousEvents = atomic_or(&event->events, (events & ~B_EVENT_INVALID));
352 if ((previousEvents & B_EVENT_QUEUED) != 0 && (events & B_EVENT_INVALID) == 0)
359 if ((event->events & B_EVENT_DELETING) != 0)
365 if ((events & B_EVENT_INVALID) != 0) {
366 atomic_or(&event->events, B_EVENT_INVALID);
371 if ((atomic_or(&event->events, B_EVENT_QUEUED) & B_EVENT_QUEUED) == 0) {
410 // Due to level-triggered events, it is possible for the event list to have
437 int32 events = atomic_and(&event->events,
440 if ((events & B_EVENT_DELETING) != 0)
443 if ((events & B_EVENT_INVALID) == 0
463 events = atomic_get(&event->events);
464 if ((events & B_EVENT_QUEUED) == 0)
474 infos[count].events = USER_EVENTS(events);
477 // All logic past this point has to do with deleting events.
478 if ((events & B_EVENT_INVALID) == 0 && (event->behavior & B_EVENT_ONE_SHOT) == 0)
482 if ((atomic_and(&event->events, ~B_EVENT_QUEUED) & B_EVENT_QUEUED) != 0)
485 if ((events & B_EVENT_INVALID) != 0) {
491 event->events = B_EVENT_DELETING;
511 // We don't need to notify waiters, as we removed the events
534 if ((event->events & (B_EVENT_SELECTING | B_EVENT_DELETING)) == 0)
672 if (infos[i].events > 0) {
674 infos[i].events, infos[i].user_data);
675 } else if (infos[i].events < 0) {
680 infos[i].events = selectedEvents;
688 user_memcpy(&userInfos[i].events, &error, sizeof(&userInfos[i].events));