From: Jaroslav Kysela Date: Tue, 8 Mar 2016 19:34:09 +0000 (+0100) Subject: idnode: change save_running to atomic ops X-Git-Tag: v4.2.1~925 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=77df9614e21b41b55c25c0f9b95d37379de1cefb;p=thirdparty%2Ftvheadend.git idnode: change save_running to atomic ops --- diff --git a/src/idnode.c b/src/idnode.c index cc54b5f63..90b9a01a8 100644 --- a/src/idnode.c +++ b/src/idnode.c @@ -1109,7 +1109,7 @@ idnode_save_queue ( idnode_t *self ) ise = malloc(sizeof(*ise)); ise->ise_node = self; ise->ise_reqtime = mclk(); - if (TAILQ_EMPTY(&idnodes_save) && save_running) + if (TAILQ_EMPTY(&idnodes_save) && atomic_get(&save_running)) mtimer_arm_rel(&save_timer, idnode_save_trigger_thread_cb, NULL, IDNODE_SAVE_DELAY); TAILQ_INSERT_TAIL(&idnodes_save, ise, ise_link); self->in_save = ise; @@ -1778,7 +1778,7 @@ save_thread ( void *aux ) pthread_mutex_lock(&global_lock); - while (save_running) { + while (atomic_get(&save_running)) { if ((ise = TAILQ_FIRST(&idnodes_save)) == NULL || (ise->ise_reqtime + IDNODE_SAVE_DELAY > mclk())) { if (ise) @@ -1831,7 +1831,7 @@ idnode_init(void) TAILQ_INIT(&idnodes_save); tvh_cond_init(&save_cond); - save_running = 1; + atomic_set(&save_running, 1); tvhthread_create(&save_tid, NULL, save_thread, NULL, "save"); } @@ -1840,7 +1840,7 @@ idnode_done(void) { idclass_link_t *il; - save_running = 0; + atomic_set(&save_running, 0); tvh_cond_signal(&save_cond, 0); pthread_join(save_tid, NULL); mtimer_disarm(&save_timer);