Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(459)

Side by Side Diff: native_client_sdk/src/libraries/nacl_io/kernel_wrap_glibc.cc

Issue 286303002: Fix socket calls in glibc by using new errno return macros. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: fix Created 6 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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__)
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698