280 errno = EBADF; \ 281 return -1; \ 282 } \ 283 do { \ 284 startOp(fdEntry, &self); \ 285 ret = FUNC; \ 286 endOp(fdEntry, &self); \ 287 } while (ret == -1 && errno == EINTR); \ 288 return ret; \ 289 } 290 291 int NET_Read(int s, void* buf, size_t len) { 292 BLOCKING_IO_RETURN_INT( s, recv(s, buf, len, 0) ); 293 } 294 295 int NET_ReadV(int s, const struct iovec * vector, int count) { 296 BLOCKING_IO_RETURN_INT( s, readv(s, vector, count) ); 297 } 298 299 int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, 300 struct sockaddr *from, int *fromlen) { 301 /* casting int *fromlen -> socklen_t* Both are ints */ 302 BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, (socklen_t *)fromlen) ); 303 } 304 305 int NET_Send(int s, void *msg, int len, unsigned int flags) { 306 BLOCKING_IO_RETURN_INT( s, send(s, msg, len, flags) ); 307 } 308 309 int NET_WriteV(int s, const struct iovec * vector, int count) { 310 BLOCKING_IO_RETURN_INT( s, writev(s, vector, count) ); 311 } 312 313 int NET_SendTo(int s, const void *msg, int len, unsigned int 314 flags, const struct sockaddr *to, int tolen) { 315 BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) ); 316 } 317 318 int NET_Accept(int s, struct sockaddr *addr, int *addrlen) { 319 socklen_t len = *addrlen; 320 int error = accept(s, addr, &len); 321 if (error != -1) 322 *addrlen = (int)len; 323 BLOCKING_IO_RETURN_INT( s, error ); 324 } 325 326 int NET_Connect(int s, struct sockaddr *addr, int addrlen) { 327 BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); 328 } 329 330 #ifndef USE_SELECT 331 int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { 332 BLOCKING_IO_RETURN_INT( ufds[0].fd, poll(ufds, nfds, timeout) ); 333 } 334 #else 335 int NET_Select(int s, fd_set *readfds, fd_set *writefds, 336 fd_set *exceptfds, struct timeval *timeout) { 337 BLOCKING_IO_RETURN_INT( s-1, 338 select(s, readfds, writefds, exceptfds, timeout) ); 339 } 340 #endif 341 342 /* 343 * Wrapper for select(s, timeout). We are using select() on Mac OS due to Bug 7131399. | 280 errno = EBADF; \ 281 return -1; \ 282 } \ 283 do { \ 284 startOp(fdEntry, &self); \ 285 ret = FUNC; \ 286 endOp(fdEntry, &self); \ 287 } while (ret == -1 && errno == EINTR); \ 288 return ret; \ 289 } 290 291 int NET_Read(int s, void* buf, size_t len) { 292 BLOCKING_IO_RETURN_INT( s, recv(s, buf, len, 0) ); 293 } 294 295 int NET_ReadV(int s, const struct iovec * vector, int count) { 296 BLOCKING_IO_RETURN_INT( s, readv(s, vector, count) ); 297 } 298 299 int NET_RecvFrom(int s, void *buf, int len, unsigned int flags, 300 struct sockaddr *from, socklen_t *fromlen) { 301 BLOCKING_IO_RETURN_INT( s, recvfrom(s, buf, len, flags, from, fromlen) ); 302 } 303 304 int NET_Send(int s, void *msg, int len, unsigned int flags) { 305 BLOCKING_IO_RETURN_INT( s, send(s, msg, len, flags) ); 306 } 307 308 int NET_WriteV(int s, const struct iovec * vector, int count) { 309 BLOCKING_IO_RETURN_INT( s, writev(s, vector, count) ); 310 } 311 312 int NET_SendTo(int s, const void *msg, int len, unsigned int 313 flags, const struct sockaddr *to, int tolen) { 314 BLOCKING_IO_RETURN_INT( s, sendto(s, msg, len, flags, to, tolen) ); 315 } 316 317 int NET_Accept(int s, struct sockaddr *addr, socklen_t *addrlen) { 318 BLOCKING_IO_RETURN_INT( s, accept(s, addr, addrlen) ); 319 } 320 321 int NET_Connect(int s, struct sockaddr *addr, int addrlen) { 322 BLOCKING_IO_RETURN_INT( s, connect(s, addr, addrlen) ); 323 } 324 325 #ifndef USE_SELECT 326 int NET_Poll(struct pollfd *ufds, unsigned int nfds, int timeout) { 327 BLOCKING_IO_RETURN_INT( ufds[0].fd, poll(ufds, nfds, timeout) ); 328 } 329 #else 330 int NET_Select(int s, fd_set *readfds, fd_set *writefds, 331 fd_set *exceptfds, struct timeval *timeout) { 332 BLOCKING_IO_RETURN_INT( s-1, 333 select(s, readfds, writefds, exceptfds, timeout) ); 334 } 335 #endif 336 337 /* 338 * Wrapper for select(s, timeout). We are using select() on Mac OS due to Bug 7131399. |