struct lbalance_task *lbalance_task_new(struct lbalance *lb) { struct lbalance_task *task = malloc(sizeof *task); if (!task) return NULL; if (lb->num_tasks + 1 == lb->max_stats) { struct stats *s = realloc(lb->stats, sizeof(*s) * (lb->max_stats + 1)); if (!s) { free(task); return NULL; } lb->stats = s; lb->stats[lb->max_stats].num_stats = 0; lb->stats[lb->max_stats].work_rate = 0.0; lb->max_stats++; } task->lb = lb; gettimeofday(&task->start, NULL); /* Record that we ran num_tasks up until now. */ update_tasks_sum(lb, &task->start); task->tasks_sum_start = lb->tasks_sum; tlist_add_tail(&lb->tasks, task, list); lb->num_tasks++; return task; }
int main(int argc, char *argv[]) { struct tlist_children children; struct tlist_cousins cousins; struct child child = { "child" }; struct cousin cousin = { "cousin" }; tlist_init(&children); tlist_init(&cousins); tlist_add(&children, &child, list); tlist_add(&cousins, &cousin, list); tlist_del_from(&cousins, &cousin, list); #ifdef FAIL #if !HAVE_FLEXIBLE_ARRAY_MEMBER #error Need flexible array members to check type #endif tlist_add_tail(&children, &cousin, list); #endif return 0; }
static void xmalloc_stat_inc(struct xmalloc_stat *st) { if (!tlist_entry_inline(&st->link)) tlist_add_tail(&xmalloc_stat_list, st, link); ++st->active; }