Fix POSIX timer thread naming.
Spencer Low points out that we never actually set a name because the constant part of the string was longer than the kernel's maximum, and the kernel rejects long names rather than truncate. Shorten the fixed part of the string while still keeping it meaningful. 9999 POSIX timers should be enough for any process... Bug: https://code.google.com/p/android/issues/detail?id=170089 Change-Id: Ic05f07584c1eac160743519091a540ebbf8d7eb1
This commit is contained in:
parent
2bb93482a7
commit
d1aea30b2a
|
@ -174,10 +174,10 @@ int timer_create(clockid_t clock_id, sigevent* evp, timer_t* timer_id) {
|
|||
return -1;
|
||||
}
|
||||
|
||||
// Give the thread a meaningful name.
|
||||
// Give the thread a specific meaningful name.
|
||||
// It can't do this itself because the kernel timer isn't created until after it's running.
|
||||
char name[32];
|
||||
snprintf(name, sizeof(name), "POSIX interval timer %d", to_kernel_timer_id(timer));
|
||||
char name[16]; // 16 is the kernel-imposed limit.
|
||||
snprintf(name, sizeof(name), "POSIX timer %d", to_kernel_timer_id(timer));
|
||||
pthread_setname_np(timer->callback_thread, name);
|
||||
|
||||
*timer_id = timer;
|
||||
|
|
|
@ -403,7 +403,9 @@ TEST(pthread, pthread_sigmask) {
|
|||
}
|
||||
|
||||
TEST(pthread, pthread_setname_np__too_long) {
|
||||
ASSERT_EQ(ERANGE, pthread_setname_np(pthread_self(), "this name is far too long for linux"));
|
||||
// The limit is 15 characters --- the kernel's buffer is 16, but includes a NUL.
|
||||
ASSERT_EQ(0, pthread_setname_np(pthread_self(), "123456789012345"));
|
||||
ASSERT_EQ(ERANGE, pthread_setname_np(pthread_self(), "1234567890123456"));
|
||||
}
|
||||
|
||||
TEST(pthread, pthread_setname_np__self) {
|
||||
|
|
Loading…
Reference in New Issue