From 3f45ed2467270fccd8f76729a23c19243502b8d7 Mon Sep 17 00:00:00 2001 From: Shuhei Matsumoto Date: Tue, 27 Apr 2021 00:20:54 +0900 Subject: [PATCH] thread: Change if-else_if to switch-case blocks of thread_execute_poller() Change if - else if - else blocks of thread_execute_poller() and thread_execute_timed_poller() to switch - cases blocks and specify possible states explicitly in these switch - cases blocks. The code will be simpler and clarified, and then the following patches will be easier. Signed-off-by: Shuhei Matsumoto Change-Id: I2e283894f5d69e1bd67466ae070c5b8bb9014616 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/7664 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins Reviewed-by: Ben Walker Reviewed-by: Jim Harris Reviewed-by: Konrad Sztyber Reviewed-by: Aleksey Marchuk --- lib/thread/thread.c | 44 ++++++++++++++++++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 8 deletions(-) diff --git a/lib/thread/thread.c b/lib/thread/thread.c index ea8fe9c60..231a205d1 100644 --- a/lib/thread/thread.c +++ b/lib/thread/thread.c @@ -608,15 +608,21 @@ thread_execute_poller(struct spdk_thread *thread, struct spdk_poller *poller) { int rc; - if (poller->state == SPDK_POLLER_STATE_UNREGISTERED) { + switch (poller->state) { + case SPDK_POLLER_STATE_UNREGISTERED: TAILQ_REMOVE(&thread->active_pollers, poller, tailq); free(poller); return 0; - } else if (poller->state == SPDK_POLLER_STATE_PAUSING) { + case SPDK_POLLER_STATE_PAUSING: TAILQ_REMOVE(&thread->active_pollers, poller, tailq); TAILQ_INSERT_TAIL(&thread->paused_pollers, poller, tailq); poller->state = SPDK_POLLER_STATE_PAUSED; return 0; + case SPDK_POLLER_STATE_WAITING: + break; + default: + assert(false); + break; } poller->state = SPDK_POLLER_STATE_RUNNING; @@ -633,11 +639,19 @@ thread_execute_poller(struct spdk_thread *thread, struct spdk_poller *poller) } #endif - if (poller->state == SPDK_POLLER_STATE_UNREGISTERED) { + switch (poller->state) { + case SPDK_POLLER_STATE_UNREGISTERED: TAILQ_REMOVE(&thread->active_pollers, poller, tailq); free(poller); - } else if (poller->state != SPDK_POLLER_STATE_PAUSED) { + break; + case SPDK_POLLER_STATE_PAUSED: + break; + case SPDK_POLLER_STATE_RUNNING: poller->state = SPDK_POLLER_STATE_WAITING; + break; + default: + assert(false); + break; } return rc; @@ -649,15 +663,21 @@ thread_execute_timed_poller(struct spdk_thread *thread, struct spdk_poller *poll { int rc; - if (poller->state == SPDK_POLLER_STATE_UNREGISTERED) { + switch (poller->state) { + case SPDK_POLLER_STATE_UNREGISTERED: TAILQ_REMOVE(&thread->timed_pollers, poller, tailq); free(poller); return 0; - } else if (poller->state == SPDK_POLLER_STATE_PAUSING) { + case SPDK_POLLER_STATE_PAUSING: TAILQ_REMOVE(&thread->timed_pollers, poller, tailq); TAILQ_INSERT_TAIL(&thread->paused_pollers, poller, tailq); poller->state = SPDK_POLLER_STATE_PAUSED; return 0; + case SPDK_POLLER_STATE_WAITING: + break; + default: + assert(false); + break; } poller->state = SPDK_POLLER_STATE_RUNNING; @@ -674,13 +694,21 @@ thread_execute_timed_poller(struct spdk_thread *thread, struct spdk_poller *poll } #endif - if (poller->state == SPDK_POLLER_STATE_UNREGISTERED) { + switch (poller->state) { + case SPDK_POLLER_STATE_UNREGISTERED: TAILQ_REMOVE(&thread->timed_pollers, poller, tailq); free(poller); - } else if (poller->state != SPDK_POLLER_STATE_PAUSED) { + break; + case SPDK_POLLER_STATE_PAUSED: + break; + case SPDK_POLLER_STATE_RUNNING: poller->state = SPDK_POLLER_STATE_WAITING; TAILQ_REMOVE(&thread->timed_pollers, poller, tailq); poller_insert_timer(thread, poller, now); + break; + default: + assert(false); + break; } return rc;