select_info
struct select_info;
extern status_t select_fd(int32 fd, struct select_info *info, bool kernel);
extern status_t deselect_fd(int32 fd, struct select_info *info, bool kernel);
struct select_info;
status_t select_port(int32 object, struct select_info *info, bool kernel);
status_t deselect_port(int32 object, struct select_info *info, bool kernel);
struct select_info;
extern status_t select_sem(int32 object, struct select_info *info, bool kernel);
extern status_t deselect_sem(int32 object, struct select_info *info,
status_t select_thread(int32 object, struct select_info *info, bool kernel);
status_t deselect_thread(int32 object, struct select_info *info, bool kernel);
struct select_info;
struct select_info *select_infos; // protected by fLock
struct select_info;
struct select_info;
struct select_info **select_infos;
struct select_info* next;
extern status_t notify_select_events(select_info* info, uint16 events);
extern void notify_select_events_list(select_info* list, uint16 events);
status_t Notify(select_info* info, uint16 events);
EventQueue::Notify(select_info* info, uint16 events)
struct select_event : select_info, AVLTreeNode,
status_t (*select)(int32 object, struct select_info* info, bool kernel);
status_t (*deselect)(int32 object, struct select_info* info, bool kernel);
select_object(uint32 type, int32 object, struct select_info* sync, bool kernel)
deselect_object(uint32 type, int32 object, struct select_info* sync, bool kernel)
virtual status_t Notify(select_info* info, uint16 events) = 0;
sync->set = new(nothrow) select_info[numFDs];
wait_for_objects_sync::Notify(select_info* info, uint16 events)
struct select_info* set;
virtual status_t Notify(select_info* info, uint16 events);
notify_select_events(select_info* info, uint16 events)
notify_select_events_list(select_info* list, uint16 events)
struct select_info* info = list;
select_info* next = info->next;
return notify_select_events((select_info*)sync, SELECT_FLAG(event));
select_info* selectInfos = NULL;
select_info* selectInfos = context->select_infos[newfd];
select_info* infos, bool putSyncObjects);
deselect_select_infos(file_descriptor* descriptor, select_info* infos,
select_info* info = infos;
select_info* next = info->next;
select_fd(int32 fd, struct select_info* info, bool kernel)
deselect_fd(int32 fd, struct select_info* info, bool kernel)
select_info** infoLocation = &context->select_infos[fd];
select_info** oldSelectInfos = context->select_infos;
select_info** newSelectInfos = (select_info**)malloc(
+ sizeof(select_info**) * newSize);
select_port(int32 id, struct select_info* info, bool kernel)
deselect_port(int32 id, struct select_info* info, bool kernel)
select_info** infoLocation = &portRef->select_infos;
select_info* select_infos;
select_info* select_infos;
select_sem(int32 id, struct select_info* info, bool kernel)
deselect_sem(int32 id, struct select_info* info, bool kernel)
select_info** infoLocation = &sSems[slot].u.used.select_infos;
select_info* selectInfos = thread->select_infos;
select_info* info = selectInfos;
select_info* next = info->next;
select_thread(int32 id, struct select_info* info, bool kernel)
deselect_thread(int32 id, struct select_info* info, bool kernel)
select_info** infoLocation = &thread->select_infos;