262 errno = EBADF; \ 263 return -1; \ 264 } \ 265 do { \ 266 startOp(fdEntry, &self); \ 267 ret = FUNC; \ 268 endOp(fdEntry, &self); \ 269 } while (ret == -1 && errno == EINTR); \ 270 return ret; \ 271 } 272 273 int NET_Read(int s, void* buf, size_t len) { 274 BLOCKING_IO_RETURN_INT( s, recv(s, buf, len, 0) ); 275 } 276 277 int NET_ReadV(int s, const struct iovec * vector, int count) { 278 BLOCKING_IO_RETURN_INT( s, readv(s, vector, count) ); 279 } 280 281 int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, 282 struct sockaddr *from, int *fromlen) { 283 socklen_t socklen = *fromlen; 284 BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, &socklen) ); 285 *fromlen = socklen; 286 } 287 288 int NET_Send(int s, void *msg, int len, unsigned int flags) { 289 BLOCKING_IO_RETURN_INT( s, send(s, msg, len, flags) ); 290 } 291 292 int NET_WriteV(int s, const struct iovec * vector, int count) { 293 BLOCKING_IO_RETURN_INT( s, writev(s, vector, count) ); 294 } 295 296 int NET_SendTo(int s, const void *msg, int len, unsigned int 297 flags, const struct sockaddr *to, int tolen) { 298 BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) ); 299 } 300 301 int NET_Accept(int s, struct sockaddr *addr, int *addrlen) { 302 socklen_t socklen = *addrlen; 303 BLOCKING_IO_RETURN_INT( s, accept(s, addr, &socklen) ); 304 *addrlen = socklen; 305 } 306 307 int NET_Connect(int s, struct sockaddr *addr, int addrlen) { 308 BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); 309 } 310 311 #ifndef USE_SELECT 312 int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { 313 BLOCKING_IO_RETURN_INT( ufds[0].fd, poll(ufds, nfds, timeout) ); 314 } 315 #else 316 int NET_Select(int s, fd_set *readfds, fd_set *writefds, 317 fd_set *exceptfds, struct timeval *timeout) { 318 BLOCKING_IO_RETURN_INT( s-1, 319 select(s, readfds, writefds, exceptfds, timeout) ); 320 } 321 #endif 322 323 /* 324 * Wrapper for poll(s, timeout). | 262 errno = EBADF; \ 263 return -1; \ 264 } \ 265 do { \ 266 startOp(fdEntry, &self); \ 267 ret = FUNC; \ 268 endOp(fdEntry, &self); \ 269 } while (ret == -1 && errno == EINTR); \ 270 return ret; \ 271 } 272 273 int NET_Read(int s, void* buf, size_t len) { 274 BLOCKING_IO_RETURN_INT( s, recv(s, buf, len, 0) ); 275 } 276 277 int NET_ReadV(int s, const struct iovec * vector, int count) { 278 BLOCKING_IO_RETURN_INT( s, readv(s, vector, count) ); 279 } 280 281 int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, 282 struct sockaddr *from, socklen_t *fromlen) { 283 BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, fromlen) ); 284 } 285 286 int NET_Send(int s, void *msg, int len, unsigned int flags) { 287 BLOCKING_IO_RETURN_INT( s, send(s, msg, len, flags) ); 288 } 289 290 int NET_WriteV(int s, const struct iovec * vector, int count) { 291 BLOCKING_IO_RETURN_INT( s, writev(s, vector, count) ); 292 } 293 294 int NET_SendTo(int s, const void *msg, int len, unsigned int 295 flags, const struct sockaddr *to, int tolen) { 296 BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) ); 297 } 298 299 int NET_Accept(int s, struct sockaddr *addr, socklen_t *addrlen) { 300 BLOCKING_IO_RETURN_INT( s, accept(s, addr, addrlen) ); 301 } 302 303 int NET_Connect(int s, struct sockaddr *addr, int addrlen) { 304 BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); 305 } 306 307 #ifndef USE_SELECT 308 int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { 309 BLOCKING_IO_RETURN_INT( ufds[0].fd, poll(ufds, nfds, timeout) ); 310 } 311 #else 312 int NET_Select(int s, fd_set *readfds, fd_set *writefds, 313 fd_set *exceptfds, struct timeval *timeout) { 314 BLOCKING_IO_RETURN_INT( s-1, 315 select(s, readfds, writefds, exceptfds, timeout) ); 316 } 317 #endif 318 319 /* 320 * Wrapper for poll(s, timeout). |