3 * Copyright (C) 2009 Tomas 'ZeXx86' Jedrzejek (zexx86@zexos.org)
5 * This program is free software: you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation, either version 3 of the License, or
8 * (at your option) any later version.
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #include <sys/select.h>
25 void _fd_clr (int fd
, fd_set
*set
)
32 for (i
= 0; i
< set
->count
; i
++)
33 if (set
->fd
[i
] == fd
) {
36 if (set
->count
== i
+1)
42 int _fd_isset (int fd
, fd_set
*set
)
49 for (i
= 0; i
< set
->count
; i
++)
56 void _fd_set (int fd
, fd_set
*set
)
64 /* try to find free entry in actual list */
65 for (i
= 0; i
< set
->count
; i
++)
66 if (set
->fd
[i
] == -1) {
72 /* add new entry into list */
74 if (set
->count
< FD_SETSIZE
)
75 set
->fd
[set
->count
++] = fd
;
79 void _fd_zero (fd_set
*set
)
87 int select (int nfds
, fd_set
*readfds
, fd_set
*writefds
, fd_set
*exceptfds
, struct timeval
*timeout
)
94 struct timeval
*timeout
;
100 s
.writefds
= writefds
;
101 s
.exceptfds
= exceptfds
;
107 "int $0x80;":: "b" (&s
) : "%eax", "memory");
111 /* get return value */
112 return (int) *SYSV_SELECT
;