Introduce names for ZTHRs

When debugging issues or generally analyzing the runtime of
a system it would be nice to be able to tell the different
ZTHRs running by name rather than having to analyze their
stack.

Reviewed-by: Brian Behlendorf <behlendorf1@llnl.gov>
Reviewed-by: Matthew Ahrens <mahrens@delphix.com>
Co-authored-by: Ryan Moeller <ryan@iXsystems.com>
Signed-off-by: Serapheim Dimitropoulos <serapheim@delphix.com>
Closes #10630
This commit is contained in:
Serapheim Dimitropoulos
2020-07-29 09:43:33 -07:00
committed by GitHub
parent 5678d3f593
commit 843e9ca2e1
8 changed files with 43 additions and 23 deletions
+10 -7
View File
@@ -14,7 +14,7 @@
*/
/*
* Copyright (c) 2017, 2019 by Delphix. All rights reserved.
* Copyright (c) 2017, 2020 by Delphix. All rights reserved.
*/
/*
@@ -269,9 +269,11 @@ zthr_procedure(void *arg)
}
zthr_t *
zthr_create(zthr_checkfunc_t *checkfunc, zthr_func_t *func, void *arg)
zthr_create(const char *zthr_name, zthr_checkfunc_t *checkfunc,
zthr_func_t *func, void *arg)
{
return (zthr_create_timer(checkfunc, func, arg, (hrtime_t)0));
return (zthr_create_timer(zthr_name, checkfunc,
func, arg, (hrtime_t)0));
}
/*
@@ -280,8 +282,8 @@ zthr_create(zthr_checkfunc_t *checkfunc, zthr_func_t *func, void *arg)
* start working if required) will be triggered.
*/
zthr_t *
zthr_create_timer(zthr_checkfunc_t *checkfunc, zthr_func_t *func,
void *arg, hrtime_t max_sleep)
zthr_create_timer(const char *zthr_name, zthr_checkfunc_t *checkfunc,
zthr_func_t *func, void *arg, hrtime_t max_sleep)
{
zthr_t *t = kmem_zalloc(sizeof (*t), KM_SLEEP);
mutex_init(&t->zthr_state_lock, NULL, MUTEX_DEFAULT, NULL);
@@ -295,8 +297,9 @@ zthr_create_timer(zthr_checkfunc_t *checkfunc, zthr_func_t *func,
t->zthr_arg = arg;
t->zthr_sleep_timeout = max_sleep;
t->zthr_thread = thread_create(NULL, 0, zthr_procedure, t,
0, &p0, TS_RUN, minclsyspri);
t->zthr_thread = thread_create_named(zthr_name, NULL, 0,
zthr_procedure, t, 0, &p0, TS_RUN, minclsyspri);
mutex_exit(&t->zthr_state_lock);
return (t);