]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
Thread.cc: remove malloc/free pair
authorPiotr Dałek <piotr.dalek@ts.fujitsu.com>
Fri, 17 Jul 2015 10:43:52 +0000 (12:43 +0200)
committerLoic Dachary <ldachary@redhat.com>
Tue, 20 Oct 2015 09:37:03 +0000 (11:37 +0200)
There's no need for mallocing pthread_attr_t in Thread::try_create(),
it can be located on stack as it is freed in same function. This reduces
pressure put on memory manager.

Signed-off-by: Piotr Dałek <piotr.dalek@ts.fujitsu.com>
(cherry picked from commit 614ac0f4e375f3dd008c8937d3f89f6005d6e0a0)

src/common/Thread.cc

index a962e06f66a4db4a328472577105c3f01da5cc42..df526baa08d0fc71550cbfa2bee08a3c57a3db73 100644 (file)
@@ -87,11 +87,11 @@ int Thread::kill(int signal)
 int Thread::try_create(size_t stacksize)
 {
   pthread_attr_t *thread_attr = NULL;
+  pthread_attr_t thread_attr_loc;
+  
   stacksize &= CEPH_PAGE_MASK;  // must be multiple of page
   if (stacksize) {
-    thread_attr = (pthread_attr_t*) malloc(sizeof(pthread_attr_t));
-    if (!thread_attr)
-      return -ENOMEM;
+    thread_attr = &thread_attr_loc;
     pthread_attr_init(thread_attr);
     pthread_attr_setstacksize(thread_attr, stacksize);
   }
@@ -113,8 +113,6 @@ int Thread::try_create(size_t stacksize)
   r = pthread_create(&thread_id, thread_attr, _entry_func, (void*)this);
   restore_sigset(&old_sigset);
 
-  if (thread_attr)
-    free(thread_attr);
   return r;
 }