From: Piotr Dałek Date: Fri, 17 Jul 2015 10:43:52 +0000 (+0200) Subject: Thread.cc: remove malloc/free pair X-Git-Tag: v0.80.11~11^2~1 X-Git-Url: http://git-server-git.apps.pok.os.sepia.ceph.com/?a=commitdiff_plain;h=77d6426a8323db91a60f246f385826c35f31521c;p=ceph.git Thread.cc: remove malloc/free pair 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 (cherry picked from commit 614ac0f4e375f3dd008c8937d3f89f6005d6e0a0) --- diff --git a/src/common/Thread.cc b/src/common/Thread.cc index a962e06f66a..df526baa08d 100644 --- a/src/common/Thread.cc +++ b/src/common/Thread.cc @@ -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; }