[bmalloc] Name Scavenger thread "bmalloc scavenger"
authorutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Apr 2018 07:58:19 +0000 (07:58 +0000)
committerutatane.tea@gmail.com <utatane.tea@gmail.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 10 Apr 2018 07:58:19 +0000 (07:58 +0000)
https://bugs.webkit.org/show_bug.cgi?id=166684

Reviewed by Saam Barati.

We name the thread for bmalloc Scavenger "bmalloc scavenger".
It is useful for debugging. In Linux environment, it will be
shown in GDB.

* bmalloc/Scavenger.cpp:
(bmalloc::Scavenger::threadRunLoop):
(bmalloc::Scavenger::setName):
* bmalloc/Scavenger.h:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@230474 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Source/bmalloc/ChangeLog
Source/bmalloc/bmalloc/Scavenger.cpp
Source/bmalloc/bmalloc/Scavenger.h

index 54bb3f1..659816f 100644 (file)
@@ -1,3 +1,19 @@
+2018-04-09  Yusuke Suzuki  <utatane.tea@gmail.com>
+
+        [bmalloc] Name Scavenger thread "bmalloc scavenger"
+        https://bugs.webkit.org/show_bug.cgi?id=166684
+
+        Reviewed by Saam Barati.
+
+        We name the thread for bmalloc Scavenger "bmalloc scavenger".
+        It is useful for debugging. In Linux environment, it will be
+        shown in GDB.
+
+        * bmalloc/Scavenger.cpp:
+        (bmalloc::Scavenger::threadRunLoop):
+        (bmalloc::Scavenger::setName):
+        * bmalloc/Scavenger.h:
+
 2018-04-09  Michael Catanzaro  <mcatanzaro@igalia.com>
 
         Rename UNUSED to BUNUSED
index 8f7576f..d64499b 100644 (file)
@@ -226,6 +226,7 @@ void Scavenger::threadEntryPoint(Scavenger* scavenger)
 void Scavenger::threadRunLoop()
 {
     setSelfQOSClass();
+    setThreadName("bmalloc scavenger");
     
     // This loop ratchets downward from most active to least active state. While
     // we ratchet downward, any other thread may reset our state.
@@ -270,6 +271,20 @@ void Scavenger::threadRunLoop()
     }
 }
 
+void Scavenger::setThreadName(const char* name)
+{
+    BUNUSED(name);
+#if BOS(DARWIN)
+    pthread_setname_np(name);
+#elif BOS(LINUX)
+    // Truncate the given name since Linux limits the size of the thread name 16 including null terminator.
+    std::array<char, 16> buf;
+    strncpy(buf.data(), name, buf.size() - 1);
+    buf[buf.size() - 1] = '\0';
+    pthread_setname_np(pthread_self(), buf.data());
+#endif
+}
+
 void Scavenger::setSelfQOSClass()
 {
 #if BOS(DARWIN)
index 881c3be..41b39bc 100644 (file)
@@ -83,6 +83,7 @@ private:
     void threadRunLoop();
     
     void setSelfQOSClass();
+    void setThreadName(const char*);
 
     std::atomic<State> m_state { State::Sleep };
     size_t m_scavengerBytes { 0 };