| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 484 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 495 set_name(options.name()); | 495 set_name(options.name()); |
| 496 } | 496 } |
| 497 | 497 |
| 498 | 498 |
| 499 Thread::~Thread() { | 499 Thread::~Thread() { |
| 500 delete data_; | 500 delete data_; |
| 501 } | 501 } |
| 502 | 502 |
| 503 | 503 |
| 504 static void SetThreadName(const char* name) { | 504 static void SetThreadName(const char* name) { |
| 505 int result = 0; | |
| 506 #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) | 505 #if defined(__DragonFly__) || defined(__FreeBSD__) || defined(__OpenBSD__) |
| 507 result = pthread_set_name_np(pthread_self(), name); | 506 pthread_set_name_np(pthread_self(), name); |
| 508 #elif defined(__NetBSD__) | 507 #elif defined(__NetBSD__) |
| 509 STATIC_ASSERT(Thread::kMaxThreadNameLength <= PTHREAD_MAX_NAMELEN_NP); | 508 STATIC_ASSERT(Thread::kMaxThreadNameLength <= PTHREAD_MAX_NAMELEN_NP); |
| 510 result = pthread_setname_np(pthread_self(), "%s", name); | 509 pthread_setname_np(pthread_self(), "%s", name); |
| 511 #elif defined(__APPLE__) | 510 #elif defined(__APPLE__) |
| 512 // pthread_setname_np is only available in 10.6 or later, so test | 511 // pthread_setname_np is only available in 10.6 or later, so test |
| 513 // for it at runtime. | 512 // for it at runtime. |
| 514 int (*dynamic_pthread_setname_np)(const char*); | 513 int (*dynamic_pthread_setname_np)(const char*); |
| 515 *reinterpret_cast<void**>(&dynamic_pthread_setname_np) = | 514 *reinterpret_cast<void**>(&dynamic_pthread_setname_np) = |
| 516 dlsym(RTLD_DEFAULT, "pthread_setname_np"); | 515 dlsym(RTLD_DEFAULT, "pthread_setname_np"); |
| 517 if (dynamic_pthread_setname_np == NULL) | 516 if (dynamic_pthread_setname_np == NULL) |
| 518 return; | 517 return; |
| 519 | 518 |
| 520 // Mac OS X does not expose the length limit of the name, so hardcode it. | 519 // Mac OS X does not expose the length limit of the name, so hardcode it. |
| 521 static const int kMaxNameLength = 63; | 520 static const int kMaxNameLength = 63; |
| 522 STATIC_ASSERT(Thread::kMaxThreadNameLength <= kMaxNameLength); | 521 STATIC_ASSERT(Thread::kMaxThreadNameLength <= kMaxNameLength); |
| 523 result = dynamic_pthread_setname_np(name); | 522 dynamic_pthread_setname_np(name); |
| 524 #elif defined(PR_SET_NAME) | 523 #elif defined(PR_SET_NAME) |
| 525 result = prctl(PR_SET_NAME, | 524 prctl(PR_SET_NAME, |
| 526 reinterpret_cast<unsigned long>(name), // NOLINT | 525 reinterpret_cast<unsigned long>(name), // NOLINT |
| 527 0, 0, 0); | 526 0, 0, 0); |
| 528 #endif | 527 #endif |
| 529 ASSERT_EQ(0, result); | |
| 530 USE(result); | |
| 531 } | 528 } |
| 532 | 529 |
| 533 | 530 |
| 534 static void* ThreadEntry(void* arg) { | 531 static void* ThreadEntry(void* arg) { |
| 535 Thread* thread = reinterpret_cast<Thread*>(arg); | 532 Thread* thread = reinterpret_cast<Thread*>(arg); |
| 536 // This is also initialized by the first argument to pthread_create() but we | 533 // This is also initialized by the first argument to pthread_create() but we |
| 537 // don't know which thread will run first (the original thread or the new | 534 // don't know which thread will run first (the original thread or the new |
| 538 // one) so we initialize it here too. | 535 // one) so we initialize it here too. |
| 539 thread->data()->thread_ = pthread_self(); | 536 thread->data()->thread_ = pthread_self(); |
| 540 SetThreadName(thread->name()); | 537 SetThreadName(thread->name()); |
| (...skipping 401 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 942 return ntohl(value); | 939 return ntohl(value); |
| 943 } | 940 } |
| 944 | 941 |
| 945 | 942 |
| 946 Socket* OS::CreateSocket() { | 943 Socket* OS::CreateSocket() { |
| 947 return new POSIXSocket(); | 944 return new POSIXSocket(); |
| 948 } | 945 } |
| 949 | 946 |
| 950 | 947 |
| 951 } } // namespace v8::internal | 948 } } // namespace v8::internal |
| OLD | NEW |