lib/thread: Change spdk_thread_exit() to nest wrapper function and function body
Change spdk_thread_exit() to nest a wrapper function, spdk_thread_exit() and a static function made of function body. Include the check if the state is running into the wrapper function. These will make the following patches easier. Signed-off-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Change-Id: I81a57407acb772cd869819f2fac6665f61935369 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1642 Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Aleksey Marchuk <alexeymar@mellanox.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com> Reviewed-by: Jim Harris <james.r.harris@intel.com>
This commit is contained in:
parent
e7ead00b53
commit
719343c94a
@ -314,22 +314,12 @@ spdk_set_thread(struct spdk_thread *thread)
|
|||||||
tls_thread = thread;
|
tls_thread = thread;
|
||||||
}
|
}
|
||||||
|
|
||||||
int
|
static int
|
||||||
spdk_thread_exit(struct spdk_thread *thread)
|
_spdk_thread_exit(struct spdk_thread *thread)
|
||||||
{
|
{
|
||||||
struct spdk_poller *poller;
|
struct spdk_poller *poller;
|
||||||
struct spdk_io_channel *ch;
|
struct spdk_io_channel *ch;
|
||||||
|
|
||||||
SPDK_DEBUGLOG(SPDK_LOG_THREAD, "Exit thread %s\n", thread->name);
|
|
||||||
|
|
||||||
assert(tls_thread == thread);
|
|
||||||
|
|
||||||
if (thread->exit) {
|
|
||||||
SPDK_INFOLOG(SPDK_LOG_THREAD, "thread %s is already marked as exited\n",
|
|
||||||
thread->name);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
TAILQ_FOREACH(poller, &thread->active_pollers, tailq) {
|
TAILQ_FOREACH(poller, &thread->active_pollers, tailq) {
|
||||||
if (poller->state != SPDK_POLLER_STATE_UNREGISTERED) {
|
if (poller->state != SPDK_POLLER_STATE_UNREGISTERED) {
|
||||||
SPDK_ERRLOG("thread %s still has active poller %s\n",
|
SPDK_ERRLOG("thread %s still has active poller %s\n",
|
||||||
@ -364,6 +354,23 @@ spdk_thread_exit(struct spdk_thread *thread)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
spdk_thread_exit(struct spdk_thread *thread)
|
||||||
|
{
|
||||||
|
SPDK_DEBUGLOG(SPDK_LOG_THREAD, "Exit thread %s\n", thread->name);
|
||||||
|
|
||||||
|
assert(tls_thread == thread);
|
||||||
|
|
||||||
|
if (thread->exit) {
|
||||||
|
SPDK_INFOLOG(SPDK_LOG_THREAD,
|
||||||
|
"thread %s is already marked as exited\n",
|
||||||
|
thread->name);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return _spdk_thread_exit(thread);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
spdk_thread_is_exited(struct spdk_thread *thread)
|
spdk_thread_is_exited(struct spdk_thread *thread)
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user