OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include <sys/types.h> // Include something that will define __GLIBC__. | 5 #include <sys/types.h> // Include something that will define __GLIBC__. |
6 | 6 |
7 // The entire file is wrapped in this #if. We do this so this .cc file can be | 7 // The entire file is wrapped in this #if. We do this so this .cc file can be |
8 // compiled, even on a non-glibc build. | 8 // compiled, even on a non-glibc build. |
9 #if defined(__native_client__) && defined(__GLIBC__) | 9 #if defined(__native_client__) && defined(__GLIBC__) |
10 | 10 |
(...skipping 310 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
321 *nwrote = static_cast<size_t>(signed_nwrote); | 321 *nwrote = static_cast<size_t>(signed_nwrote); |
322 RTN_ERRNO_IF(signed_nwrote < 0); | 322 RTN_ERRNO_IF(signed_nwrote < 0); |
323 return 0; | 323 return 0; |
324 } | 324 } |
325 | 325 |
326 int WRAP(accept)(int sockfd, struct sockaddr* addr, | 326 int WRAP(accept)(int sockfd, struct sockaddr* addr, |
327 socklen_t* addrlen, int *sd) { | 327 socklen_t* addrlen, int *sd) { |
328 int result = ki_accept(sockfd, addr, addrlen); | 328 int result = ki_accept(sockfd, addr, addrlen); |
329 if (result < 0) { | 329 if (result < 0) { |
330 *sd = -1; | 330 *sd = -1; |
331 return errno; | |
332 } else { | 331 } else { |
333 *sd = result; | 332 *sd = result; |
334 return 0; | |
335 } | 333 } |
334 RTN_ERRNO_IF(result < 0); | |
335 return 0; | |
336 } | 336 } |
337 | 337 |
338 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { | 338 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { |
339 return (ki_bind(sockfd, addr, addrlen) < 0) ? errno : 0; | 339 RTN_ERRNO_IF(ki_bind(sockfd, addr, addrlen) < 0); |
340 return 0; | |
340 } | 341 } |
341 | 342 |
342 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { | 343 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { |
343 return (ki_connect(sockfd, addr, addrlen) < 0) ? errno : 0; | 344 RTN_ERRNO_IF(ki_connect(sockfd, addr, addrlen) < 0); |
345 return 0; | |
344 } | 346 } |
345 | 347 |
346 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { | 348 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { |
347 return (ki_getpeername(sockfd, addr, addrlen) < 0) ? errno : 0; | 349 RTN_ERRNO_IF(ki_getpeername(sockfd, addr, addrlen) < 0); |
350 return 0; | |
348 } | 351 } |
349 | 352 |
350 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { | 353 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { |
351 return (ki_getsockname(sockfd, addr, addrlen) < 0) ? errno : 0; | 354 RTN_ERRNO_IF(ki_getsockname(sockfd, addr, addrlen) < 0); |
355 return 0; | |
352 } | 356 } |
353 | 357 |
354 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval, | 358 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval, |
355 socklen_t* optlen) { | 359 socklen_t* optlen) { |
356 return (ki_getsockopt( | 360 RTN_ERRNO_IF(ki_getsockopt(sockfd, level, optname, optval, optlen) < 0); |
357 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; | 361 return 0; |
358 } | 362 } |
359 | 363 |
360 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval, | 364 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval, |
361 socklen_t optlen) { | 365 socklen_t optlen) { |
362 return (ki_setsockopt( | 366 RTN_ERRNO_IF(ki_setsockopt(sockfd, level, optname, optval, optlen) < 0); |
363 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; | 367 return 0; |
364 } | 368 } |
365 | 369 |
366 int WRAP(listen)(int sockfd, int backlog) { | 370 int WRAP(listen)(int sockfd, int backlog) { |
367 return (ki_listen(sockfd, backlog) < 0) ? errno : 0; | 371 RTN_ERRNO_IF(ki_listen(sockfd, backlog) < 0); |
372 return 0; | |
368 } | 373 } |
369 | 374 |
370 int WRAP(recv)(int sockfd, void* buf, size_t len, int flags, int* count) { | 375 int WRAP(recv)(int sockfd, void* buf, size_t len, int flags, int* count) { |
371 ssize_t signed_nread = ki_recv(sockfd, buf, len, flags); | 376 ssize_t signed_nread = ki_recv(sockfd, buf, len, flags); |
372 *count = static_cast<int>(signed_nread); | 377 *count = static_cast<int>(signed_nread); |
373 return (signed_nread < 0) ? errno : 0; | 378 RTN_ERRNO_IF(signed_nread < 0); |
379 return 0; | |
374 } | 380 } |
375 | 381 |
376 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags, | 382 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags, |
377 struct sockaddr* addr, socklen_t* addrlen, int* count) { | 383 struct sockaddr* addr, socklen_t* addrlen, int* count) { |
378 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen); | 384 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen); |
379 *count = static_cast<int>(signed_nread); | 385 *count = static_cast<int>(signed_nread); |
380 return (signed_nread < 0) ? errno : 0; | 386 RTN_ERRNO_IF(signed_nread < 0); |
387 return 0; | |
381 } | 388 } |
382 | 389 |
383 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) { | 390 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) { |
384 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags); | 391 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags); |
385 *count = static_cast<int>(signed_nread); | 392 *count = static_cast<int>(signed_nread); |
386 return (signed_nread < 0) ? errno : 0; | 393 RTN_ERRNO_IF(signed_nread < 0); |
394 return 0; | |
387 } | 395 } |
388 | 396 |
389 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags, | 397 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags, |
390 int* count) { | 398 int* count) { |
391 ssize_t signed_nread = ki_send(sockfd, buf, len, flags); | 399 ssize_t signed_nread = ki_send(sockfd, buf, len, flags); |
392 *count = static_cast<int>(signed_nread); | 400 *count = static_cast<int>(signed_nread); |
393 return (signed_nread < 0) ? errno : 0; | 401 RTN_ERRNO_IF(signed_nread < 0); |
402 return 0; | |
394 } | 403 } |
395 | 404 |
396 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags, | 405 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags, |
397 const struct sockaddr* addr, socklen_t addrlen, | 406 const struct sockaddr* addr, socklen_t addrlen, |
398 int* count) { | 407 int* count) { |
399 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen); | 408 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen); |
400 *count = static_cast<int>(signed_nread); | 409 *count = static_cast<int>(signed_nread); |
401 return (signed_nread < 0) ? errno : 0; | 410 RTN_ERRNO_IF(signed_nread < 0); |
411 return 0; | |
402 } | 412 } |
403 | 413 |
404 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags, | 414 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags, |
405 int* count) { | 415 int* count) { |
406 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags); | 416 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags); |
407 *count = static_cast<int>(signed_nread); | 417 *count = static_cast<int>(signed_nread); |
408 return (signed_nread < 0) ? errno : 0; | 418 RTN_ERRNO_IF(signed_nread < 0); |
419 return 0; | |
409 } | 420 } |
410 | 421 |
411 int WRAP(shutdown)(int sockfd, int how) { | 422 int WRAP(shutdown)(int sockfd, int how) { |
412 return (ki_shutdown(sockfd, how) < 0) ? errno : 0; | 423 RTN_ERRNO_IF(ki_shutdown(sockfd, how) < 0); |
424 return 0; | |
413 } | 425 } |
414 | 426 |
415 int WRAP(socket)(int domain, int type, int protocol, int* sd) { | 427 int WRAP(socket)(int domain, int type, int protocol, int* sd) { |
416 int result = ki_socket(domain, type, protocol); | 428 int result = ki_socket(domain, type, protocol); |
417 if (result < 0) { | 429 if (result < 0) { |
418 *sd = -1; | 430 *sd = -1; |
419 return errno; | |
420 } else { | 431 } else { |
421 *sd = result; | 432 *sd = result; |
422 return 0; | |
423 } | 433 } |
434 RTN_ERRNO_IF(result < 0); | |
Sam Clegg
2014/05/16 20:29:53
Can you just move this up above the 'if' and then
bradn
2014/05/16 20:52:54
Merged to match the others.
| |
435 return 0; | |
424 } | 436 } |
425 | 437 |
426 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) { | 438 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) { |
427 return (ki_socketpair(domain, type, protocol, sv) < 0) ? errno : 0; | 439 RTN_ERRNO_IF(ki_socketpair(domain, type, protocol, sv) < 0); |
440 return 0; | |
428 } | 441 } |
429 | 442 |
430 static void assign_real_pointers() { | 443 static void assign_real_pointers() { |
431 static bool assigned = false; | 444 static bool assigned = false; |
432 if (!assigned) { | 445 if (!assigned) { |
433 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) | 446 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) |
434 assigned = true; | 447 assigned = true; |
435 } | 448 } |
436 } | 449 } |
437 | 450 |
(...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
554 if (s_wrapped) { | 567 if (s_wrapped) { |
555 LOG_TRACE("kernel_wrap_uninit"); | 568 LOG_TRACE("kernel_wrap_uninit"); |
556 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) | 569 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) |
557 s_wrapped = false; | 570 s_wrapped = false; |
558 } | 571 } |
559 } | 572 } |
560 | 573 |
561 EXTERN_C_END | 574 EXTERN_C_END |
562 | 575 |
563 #endif // defined(__native_client__) && defined(__GLIBC__) | 576 #endif // defined(__native_client__) && defined(__GLIBC__) |
OLD | NEW |