From dcc0a08c26fa3255c09c8f3b5b9e518c333420bb Mon Sep 17 00:00:00 2001 From: David Gibson Date: Fri, 31 Mar 2017 23:51:22 +1100 Subject: [PATCH] lbalance: Switch to tlist2 lbalance uses the tlist module. tlist causes compile warnings on clang if you're not careful, because it can put 0 length arrays in the middle of structures. tlist2 doesn't have the problem, and also has a slightly cleaner interface. Signed-off-by: David Gibson --- ccan/lbalance/_info | 2 +- ccan/lbalance/lbalance.c | 37 ++++++++++++++++++------------------- 2 files changed, 19 insertions(+), 20 deletions(-) diff --git a/ccan/lbalance/_info b/ccan/lbalance/_info index 7524e54c..532da2d5 100644 --- a/ccan/lbalance/_info +++ b/ccan/lbalance/_info @@ -85,7 +85,7 @@ int main(int argc, char *argv[]) return 1; if (strcmp(argv[1], "depends") == 0) { - printf("ccan/tlist\n"); + printf("ccan/tlist2\n"); return 0; } diff --git a/ccan/lbalance/lbalance.c b/ccan/lbalance/lbalance.c index 643750cf..977de0f1 100644 --- a/ccan/lbalance/lbalance.c +++ b/ccan/lbalance/lbalance.c @@ -1,6 +1,6 @@ /* Licensed under GPLv3+ - see LICENSE file for details */ #include -#include +#include #include #include #include @@ -8,9 +8,6 @@ #include #include -/* Define tlist_lbalance_task */ -TLIST_TYPE(lbalance_task, struct lbalance_task); - struct stats { /* How many stats of for this value do we have? */ unsigned int num_stats; @@ -18,8 +15,19 @@ struct stats { float work_rate; }; +struct lbalance; + +struct lbalance_task { + struct lbalance *lb; + struct list_node list; + + /* The time this task started */ + struct timeval start; + float tasks_sum_start; +}; + struct lbalance { - struct tlist_lbalance_task tasks; + TLIST2(struct lbalance_task, list) tasks; unsigned int num_tasks; /* We figured out how many we want to run. */ @@ -42,22 +50,13 @@ struct lbalance { struct stats *stats; }; -struct lbalance_task { - struct lbalance *lb; - struct list_node list; - - /* The time this task started */ - struct timeval start; - float tasks_sum_start; -}; - struct lbalance *lbalance_new(void) { struct lbalance *lb = malloc(sizeof *lb); if (!lb) return NULL; - tlist_init(&lb->tasks); + tlist2_init(&lb->tasks); lb->num_tasks = 0; gettimeofday(&lb->prev_tasks_time, NULL); lb->tasks_sum = 0.0; @@ -140,7 +139,7 @@ struct lbalance_task *lbalance_task_new(struct lbalance *lb) update_tasks_sum(lb, &task->start); task->tasks_sum_start = lb->tasks_sum; - tlist_add_tail(&lb->tasks, task, list); + tlist2_add_tail(&lb->tasks, task); lb->num_tasks++; return task; @@ -229,7 +228,7 @@ void lbalance_task_free(struct lbalance_task *task, task->lb->target_uptodate = false; /* Remove this task. */ - tlist_del_from(&task->lb->tasks, task, list); + tlist2_del_from(&task->lb->tasks, task); task->lb->num_tasks--; free(task); } @@ -314,9 +313,9 @@ void lbalance_free(struct lbalance *lb) { struct lbalance_task *task; - while ((task = tlist_top(&lb->tasks, list))) { + while ((task = tlist2_top(&lb->tasks))) { assert(task->lb == lb); - tlist_del_from(&lb->tasks, task, list); + tlist2_del_from(&lb->tasks, task); lb->num_tasks--; free(task); } -- 2.39.2