| 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 307 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 318 | 318 |
| 319 int WRAP(write)(int fd, const void* buf, size_t count, size_t* nwrote) { | 319 int WRAP(write)(int fd, const void* buf, size_t count, size_t* nwrote) { |
| 320 ssize_t signed_nwrote = ki_write(fd, buf, count); | 320 ssize_t signed_nwrote = ki_write(fd, buf, count); |
| 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 *sd = ki_accept(sockfd, addr, addrlen); |
| 329 if (result < 0) { | 329 RTN_ERRNO_IF(*sd < 0); |
| 330 *sd = -1; | 330 return 0; |
| 331 return errno; | |
| 332 } else { | |
| 333 *sd = result; | |
| 334 return 0; | |
| 335 } | |
| 336 } | 331 } |
| 337 | 332 |
| 338 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { | 333 int WRAP(bind)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { |
| 339 return (ki_bind(sockfd, addr, addrlen) < 0) ? errno : 0; | 334 RTN_ERRNO_IF(ki_bind(sockfd, addr, addrlen) < 0); |
| 335 return 0; |
| 340 } | 336 } |
| 341 | 337 |
| 342 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { | 338 int WRAP(connect)(int sockfd, const struct sockaddr* addr, socklen_t addrlen) { |
| 343 return (ki_connect(sockfd, addr, addrlen) < 0) ? errno : 0; | 339 RTN_ERRNO_IF(ki_connect(sockfd, addr, addrlen) < 0); |
| 340 return 0; |
| 344 } | 341 } |
| 345 | 342 |
| 346 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { | 343 int WRAP(getpeername)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { |
| 347 return (ki_getpeername(sockfd, addr, addrlen) < 0) ? errno : 0; | 344 RTN_ERRNO_IF(ki_getpeername(sockfd, addr, addrlen) < 0); |
| 345 return 0; |
| 348 } | 346 } |
| 349 | 347 |
| 350 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { | 348 int WRAP(getsockname)(int sockfd, struct sockaddr* addr, socklen_t* addrlen) { |
| 351 return (ki_getsockname(sockfd, addr, addrlen) < 0) ? errno : 0; | 349 RTN_ERRNO_IF(ki_getsockname(sockfd, addr, addrlen) < 0); |
| 350 return 0; |
| 352 } | 351 } |
| 353 | 352 |
| 354 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval, | 353 int WRAP(getsockopt)(int sockfd, int level, int optname, void* optval, |
| 355 socklen_t* optlen) { | 354 socklen_t* optlen) { |
| 356 return (ki_getsockopt( | 355 RTN_ERRNO_IF(ki_getsockopt(sockfd, level, optname, optval, optlen) < 0); |
| 357 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; | 356 return 0; |
| 358 } | 357 } |
| 359 | 358 |
| 360 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval, | 359 int WRAP(setsockopt)(int sockfd, int level, int optname, const void* optval, |
| 361 socklen_t optlen) { | 360 socklen_t optlen) { |
| 362 return (ki_setsockopt( | 361 RTN_ERRNO_IF(ki_setsockopt(sockfd, level, optname, optval, optlen) < 0); |
| 363 sockfd, level, optname, optval, optlen) < 0) ? errno : 0; | 362 return 0; |
| 364 } | 363 } |
| 365 | 364 |
| 366 int WRAP(listen)(int sockfd, int backlog) { | 365 int WRAP(listen)(int sockfd, int backlog) { |
| 367 return (ki_listen(sockfd, backlog) < 0) ? errno : 0; | 366 RTN_ERRNO_IF(ki_listen(sockfd, backlog) < 0); |
| 367 return 0; |
| 368 } | 368 } |
| 369 | 369 |
| 370 int WRAP(recv)(int sockfd, void* buf, size_t len, int flags, int* count) { | 370 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); | 371 ssize_t signed_nread = ki_recv(sockfd, buf, len, flags); |
| 372 *count = static_cast<int>(signed_nread); | 372 *count = static_cast<int>(signed_nread); |
| 373 return (signed_nread < 0) ? errno : 0; | 373 RTN_ERRNO_IF(signed_nread < 0); |
| 374 return 0; |
| 374 } | 375 } |
| 375 | 376 |
| 376 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags, | 377 int WRAP(recvfrom)(int sockfd, void* buf, size_t len, int flags, |
| 377 struct sockaddr* addr, socklen_t* addrlen, int* count) { | 378 struct sockaddr* addr, socklen_t* addrlen, int* count) { |
| 378 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen); | 379 ssize_t signed_nread = ki_recvfrom(sockfd, buf, len, flags, addr, addrlen); |
| 379 *count = static_cast<int>(signed_nread); | 380 *count = static_cast<int>(signed_nread); |
| 380 return (signed_nread < 0) ? errno : 0; | 381 RTN_ERRNO_IF(signed_nread < 0); |
| 382 return 0; |
| 381 } | 383 } |
| 382 | 384 |
| 383 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) { | 385 int WRAP(recvmsg)(int sockfd, struct msghdr* msg, int flags, int *count) { |
| 384 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags); | 386 ssize_t signed_nread = ki_recvmsg(sockfd, msg, flags); |
| 385 *count = static_cast<int>(signed_nread); | 387 *count = static_cast<int>(signed_nread); |
| 386 return (signed_nread < 0) ? errno : 0; | 388 RTN_ERRNO_IF(signed_nread < 0); |
| 389 return 0; |
| 387 } | 390 } |
| 388 | 391 |
| 389 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags, | 392 ssize_t WRAP(send)(int sockfd, const void* buf, size_t len, int flags, |
| 390 int* count) { | 393 int* count) { |
| 391 ssize_t signed_nread = ki_send(sockfd, buf, len, flags); | 394 ssize_t signed_nread = ki_send(sockfd, buf, len, flags); |
| 392 *count = static_cast<int>(signed_nread); | 395 *count = static_cast<int>(signed_nread); |
| 393 return (signed_nread < 0) ? errno : 0; | 396 RTN_ERRNO_IF(signed_nread < 0); |
| 397 return 0; |
| 394 } | 398 } |
| 395 | 399 |
| 396 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags, | 400 ssize_t WRAP(sendto)(int sockfd, const void* buf, size_t len, int flags, |
| 397 const struct sockaddr* addr, socklen_t addrlen, | 401 const struct sockaddr* addr, socklen_t addrlen, |
| 398 int* count) { | 402 int* count) { |
| 399 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen); | 403 ssize_t signed_nread = ki_sendto(sockfd, buf, len, flags, addr, addrlen); |
| 400 *count = static_cast<int>(signed_nread); | 404 *count = static_cast<int>(signed_nread); |
| 401 return (signed_nread < 0) ? errno : 0; | 405 RTN_ERRNO_IF(signed_nread < 0); |
| 406 return 0; |
| 402 } | 407 } |
| 403 | 408 |
| 404 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags, | 409 ssize_t WRAP(sendmsg)(int sockfd, const struct msghdr* msg, int flags, |
| 405 int* count) { | 410 int* count) { |
| 406 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags); | 411 ssize_t signed_nread = ki_sendmsg(sockfd, msg, flags); |
| 407 *count = static_cast<int>(signed_nread); | 412 *count = static_cast<int>(signed_nread); |
| 408 return (signed_nread < 0) ? errno : 0; | 413 RTN_ERRNO_IF(signed_nread < 0); |
| 414 return 0; |
| 409 } | 415 } |
| 410 | 416 |
| 411 int WRAP(shutdown)(int sockfd, int how) { | 417 int WRAP(shutdown)(int sockfd, int how) { |
| 412 return (ki_shutdown(sockfd, how) < 0) ? errno : 0; | 418 RTN_ERRNO_IF(ki_shutdown(sockfd, how) < 0); |
| 419 return 0; |
| 413 } | 420 } |
| 414 | 421 |
| 415 int WRAP(socket)(int domain, int type, int protocol, int* sd) { | 422 int WRAP(socket)(int domain, int type, int protocol, int* sd) { |
| 416 int result = ki_socket(domain, type, protocol); | 423 *sd = ki_socket(domain, type, protocol); |
| 417 if (result < 0) { | 424 RTN_ERRNO_IF(*sd < 0); |
| 418 *sd = -1; | 425 return 0; |
| 419 return errno; | |
| 420 } else { | |
| 421 *sd = result; | |
| 422 return 0; | |
| 423 } | |
| 424 } | 426 } |
| 425 | 427 |
| 426 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) { | 428 int WRAP(socketpair)(int domain, int type, int protocol, int* sv) { |
| 427 return (ki_socketpair(domain, type, protocol, sv) < 0) ? errno : 0; | 429 RTN_ERRNO_IF(ki_socketpair(domain, type, protocol, sv) < 0); |
| 430 return 0; |
| 428 } | 431 } |
| 429 | 432 |
| 430 static void assign_real_pointers() { | 433 static void assign_real_pointers() { |
| 431 static bool assigned = false; | 434 static bool assigned = false; |
| 432 if (!assigned) { | 435 if (!assigned) { |
| 433 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) | 436 EXPAND_SYMBOL_LIST_OPERATION(ASSIGN_REAL_PTR) |
| 434 assigned = true; | 437 assigned = true; |
| 435 } | 438 } |
| 436 } | 439 } |
| 437 | 440 |
| (...skipping 116 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 554 if (s_wrapped) { | 557 if (s_wrapped) { |
| 555 LOG_TRACE("kernel_wrap_uninit"); | 558 LOG_TRACE("kernel_wrap_uninit"); |
| 556 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) | 559 EXPAND_SYMBOL_LIST_OPERATION(USE_REAL) |
| 557 s_wrapped = false; | 560 s_wrapped = false; |
| 558 } | 561 } |
| 559 } | 562 } |
| 560 | 563 |
| 561 EXTERN_C_END | 564 EXTERN_C_END |
| 562 | 565 |
| 563 #endif // defined(__native_client__) && defined(__GLIBC__) | 566 #endif // defined(__native_client__) && defined(__GLIBC__) |
| OLD | NEW |