5adca30a18
replacing files when merging when you don't have deleted them manually (for some reason, it only works as part of the merge operation, and we didn't copy the whole tree to have "a fresh start" - next time we know better, at least if SVN still suffers from that same limitation). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@18456 a95241bf-73f2-0310-859d-f6bbb57e9c96
61 lines
1.5 KiB
C
61 lines
1.5 KiB
C
/*
|
|
* Copyright 2002-2006, Haiku Inc. All Rights Reserved.
|
|
* Distributed under the terms of the MIT License.
|
|
*/
|
|
#ifndef _SYS_SELECT_H
|
|
#define _SYS_SELECT_H
|
|
|
|
|
|
#include <sys/time.h>
|
|
#include <signal.h>
|
|
|
|
|
|
/* If FD_SET is already defined, only the select() prototype is
|
|
* exported in this header.
|
|
*/
|
|
#ifndef FD_SET
|
|
|
|
/* You can define your own FDSETSIZE if you need more bits - but
|
|
* it should be enough for most uses.
|
|
*/
|
|
#ifndef FD_SETSIZE
|
|
# define FD_SETSIZE 1024
|
|
#endif
|
|
|
|
typedef unsigned long fd_mask;
|
|
|
|
#ifndef _howmany
|
|
# define _howmany(x, y) (((x) + ((y) - 1)) / (y))
|
|
#endif
|
|
|
|
#define NFDBITS (sizeof(fd_mask) * 8) /* bits per mask */
|
|
|
|
typedef struct fd_set {
|
|
fd_mask bits[_howmany(FD_SETSIZE, NFDBITS)];
|
|
} fd_set;
|
|
|
|
#define _FD_BITSINDEX(fd) ((fd) / NFDBITS)
|
|
#define _FD_BIT(fd) (1L << ((fd) % NFDBITS))
|
|
|
|
#define FD_ZERO(set) memset((set), 0, sizeof(fd_set))
|
|
#define FD_SET(fd, set) ((set)->bits[_FD_BITSINDEX(fd)] |= _FD_BIT(fd))
|
|
#define FD_CLR(fd, set) ((set)->bits[_FD_BITSINDEX(fd)] &= ~_FD_BIT(fd))
|
|
#define FD_ISSET(fd, set) ((set)->bits[_FD_BITSINDEX(fd)] & _FD_BIT(fd))
|
|
|
|
#endif /* FD_SET */
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
extern int pselect(int numBits, struct fd_set *readBits, struct fd_set *writeBits,
|
|
struct fd_set *errorBits, const struct timespec *timeout, const sigset_t *sigMask);
|
|
extern int select(int numBits, struct fd_set *readBits, struct fd_set *writeBits,
|
|
struct fd_set *errorBits, struct timeval *timeout);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif /* _SYS_SELECT_H */
|