]> git.ipfire.org Git - thirdparty/tvheadend.git/commitdiff
idnode: change save_running to atomic ops
authorJaroslav Kysela <perex@perex.cz>
Tue, 8 Mar 2016 19:34:09 +0000 (20:34 +0100)
committerJaroslav Kysela <perex@perex.cz>
Tue, 8 Mar 2016 19:34:09 +0000 (20:34 +0100)
src/idnode.c

index cc54b5f63fd4e4d2dced21ebd3fb503bb7b4a4bb..90b9a01a8e7be227519b3733805a1ab2acbeeadc 100644 (file)
@@ -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);