libzpool: set thread names
Arrange for the thread/task name to be set when new threads are created. This makes them visible in the process table etc. pthread_setname_np() is generally available in glibc, musl and FreeBSD, so no test is required. Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov> Signed-off-by: Rob Norris <robn@despairlabs.com> Sponsored-by: https://despairlabs.com/sponsor/ Closes #16140
This commit is contained in:
parent
7ac00d3c26
commit
4429ad9276
|
@ -228,9 +228,9 @@ typedef pthread_t kthread_t;
|
||||||
|
|
||||||
#define thread_create_named(name, stk, stksize, func, arg, len, \
|
#define thread_create_named(name, stk, stksize, func, arg, len, \
|
||||||
pp, state, pri) \
|
pp, state, pri) \
|
||||||
zk_thread_create(func, arg, stksize, state)
|
zk_thread_create(name, func, arg, stksize, state)
|
||||||
#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \
|
#define thread_create(stk, stksize, func, arg, len, pp, state, pri) \
|
||||||
zk_thread_create(func, arg, stksize, state)
|
zk_thread_create(#func, func, arg, stksize, state)
|
||||||
#define thread_exit() pthread_exit(NULL)
|
#define thread_exit() pthread_exit(NULL)
|
||||||
#define thread_join(t) pthread_join((pthread_t)(t), NULL)
|
#define thread_join(t) pthread_join((pthread_t)(t), NULL)
|
||||||
|
|
||||||
|
@ -246,8 +246,8 @@ extern struct proc p0;
|
||||||
|
|
||||||
#define PS_NONE -1
|
#define PS_NONE -1
|
||||||
|
|
||||||
extern kthread_t *zk_thread_create(void (*func)(void *), void *arg,
|
extern kthread_t *zk_thread_create(const char *name, void (*func)(void *),
|
||||||
size_t stksize, int state);
|
void *arg, size_t stksize, int state);
|
||||||
|
|
||||||
#define issig(why) (FALSE)
|
#define issig(why) (FALSE)
|
||||||
#define ISSIG(thr, why) (FALSE)
|
#define ISSIG(thr, why) (FALSE)
|
||||||
|
|
|
@ -92,7 +92,8 @@ zk_thread_wrapper(void *arg)
|
||||||
}
|
}
|
||||||
|
|
||||||
kthread_t *
|
kthread_t *
|
||||||
zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state)
|
zk_thread_create(const char *name, void (*func)(void *), void *arg,
|
||||||
|
size_t stksize, int state)
|
||||||
{
|
{
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
pthread_t tid;
|
pthread_t tid;
|
||||||
|
@ -140,6 +141,8 @@ zk_thread_create(void (*func)(void *), void *arg, size_t stksize, int state)
|
||||||
VERIFY0(pthread_create(&tid, &attr, zk_thread_wrapper, ztw));
|
VERIFY0(pthread_create(&tid, &attr, zk_thread_wrapper, ztw));
|
||||||
VERIFY0(pthread_attr_destroy(&attr));
|
VERIFY0(pthread_attr_destroy(&attr));
|
||||||
|
|
||||||
|
pthread_setname_np(tid, name);
|
||||||
|
|
||||||
return ((void *)(uintptr_t)tid);
|
return ((void *)(uintptr_t)tid);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -295,8 +295,8 @@ taskq_create(const char *name, int nthreads, pri_t pri,
|
||||||
}
|
}
|
||||||
|
|
||||||
for (t = 0; t < nthreads; t++)
|
for (t = 0; t < nthreads; t++)
|
||||||
VERIFY((tq->tq_threadlist[t] = thread_create(NULL, 0,
|
VERIFY((tq->tq_threadlist[t] = thread_create_named(tq->tq_name,
|
||||||
taskq_thread, tq, 0, &p0, TS_RUN, pri)) != NULL);
|
NULL, 0, taskq_thread, tq, 0, &p0, TS_RUN, pri)) != NULL);
|
||||||
|
|
||||||
return (tq);
|
return (tq);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue