636bfc08ae
vfs_select.h, respectively moved most of it into the new kernel private header wait_for_objects.h. * Added new experimental API functions wait_for_objects[_etc](). They work pretty much like poll(), but also for semaphores, ports, and threads. * Removed the "ref" parameter from notify_select_events() and the select_sync_pool functions as well as from fd_ops::fd_[de]select(). It is no longer needed. The FS interface select() hook still has it, though -- the VFS will always pass 0. * de]select_fd() take a select_info* instead of a select_sync* + ref pair, now. Added respective functions for semaphores, ports, and threads. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22416 a95241bf-73f2-0310-859d-f6bbb57e9c96
53 lines
1.0 KiB
C
53 lines
1.0 KiB
C
/*
|
|
* Copyright 2007, Ingo Weinhold, bonefish@cs.tu-berlin.de. All rights reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
|
|
#ifndef _KERNEL_WAIT_FOR_OBJECTS_H
|
|
#define _KERNEL_WAIT_FOR_OBJECTS_H
|
|
|
|
#include <OS.h>
|
|
|
|
#include <lock.h>
|
|
|
|
|
|
struct select_sync;
|
|
|
|
|
|
typedef struct select_info {
|
|
struct select_info* next; // next in the object's list
|
|
struct select_sync* sync;
|
|
uint16 selected_events;
|
|
uint16 events;
|
|
} select_info;
|
|
|
|
typedef struct select_sync {
|
|
vint32 ref_count;
|
|
benaphore lock;
|
|
sem_id sem;
|
|
uint32 count;
|
|
struct select_info* set;
|
|
} select_sync;
|
|
|
|
#define SELECT_FLAG(type) (1L << (type - 1))
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
extern void put_select_sync(select_sync* sync);
|
|
extern status_t notify_select_events(select_info* info, uint16 events);
|
|
extern void notify_select_events_list(select_info* list, uint16 events);
|
|
|
|
extern ssize_t _user_wait_for_objects(object_wait_info* userInfos,
|
|
int numInfos, uint32 flags, bigtime_t timeout);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // _KERNEL_WAIT_FOR_OBJECTS_H
|