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);
}
r = pthread_create(&thread_id, thread_attr, _entry_func, (void*)this);
restore_sigset(&old_sigset);
- if (thread_attr)
- free(thread_attr);
return r;
}