/* Minified version of code from tinydtls 0.9 */ /* See https://projects.eclipse.org/projects/iot.tinydtls */ #include "utlist.h" #include #include #include typedef int clock_time_t; typedef struct netq_t { struct netq_t *next; clock_time_t t; } netq_t; void dump_queue(struct netq_t *queue) { struct netq_t *p; int i = 0; if (!queue) { printf("(null)\n"); } else { LL_FOREACH(queue, p) { printf("node #%d, timeout: %d\n", i++, p->t); } } } int netq_insert_node(netq_t **queue, netq_t *node) { netq_t *p = *queue; while (p && p->t <= node->t) { p = p->next; } /* *INDENT-OFF* */ if (p) LL_PREPEND_ELEM(*queue, p, node); else LL_APPEND(*queue, node); /* *INDENT-ON* */ return 1; } int main() { struct netq_t *nq = NULL; size_t i; clock_time_t timestamps[] = { 300, 100, 200, 400, 500 }; for (i = 0; i < sizeof(timestamps)/sizeof(clock_time_t); i++) { struct netq_t *node = (struct netq_t *)malloc(sizeof *node); memset(node, '\0', sizeof *node); node->t = timestamps[i]; if (netq_insert_node(&nq, node) != 1) { puts("ERROR"); } } dump_queue(nq); return 0; }