]> git.sesse.net Git - bcachefs-tools-debian/blobdiff - linux/kthread.c
Makefile: detect rst2man
[bcachefs-tools-debian] / linux / kthread.c
index eef73fe8632eb7c017d3a9a849bbf2e356838748..41bfca2f8d522b111fb967f27d14cb1f24d2385f 100644 (file)
@@ -7,6 +7,8 @@
 #include <linux/rcupdate.h>
 #include <linux/sched.h>
 
+#include "tools-util.h"
+
 enum KTHREAD_BITS {
        KTHREAD_IS_PER_CPU = 0,
        KTHREAD_SHOULD_STOP,
@@ -57,6 +59,7 @@ struct task_struct *kthread_create(int (*thread_fn)(void *data),
 {
        va_list args;
        struct task_struct *p = malloc(sizeof(*p));
+       int ret;
 
        memset(p, 0, sizeof(*p));
 
@@ -71,7 +74,13 @@ struct task_struct *kthread_create(int (*thread_fn)(void *data),
        atomic_set(&p->usage, 1);
        init_completion(&p->exited);
 
-       pthread_create(&p->thread, NULL, kthread_start_fn, p);
+       pthread_attr_t attr;
+       pthread_attr_init(&attr);
+       pthread_attr_setstacksize(&attr, 32 << 10);
+
+       ret = pthread_create(&p->thread, &attr, kthread_start_fn, p);
+       if (ret)
+               return ERR_PTR(-ret);
        pthread_setname_np(p->thread, p->comm);
        return p;
 }