From cbff794b55c94c3c38f4017d21d78b9fa1743f2c Mon Sep 17 00:00:00 2001 From: guowenxue <guowenxue@gmail.com> Date: Wed, 21 Aug 2024 09:58:30 +0800 Subject: [PATCH] Add list test example code --- booster/testcase/list.c | 62 +++++++++++++++++++++++++++++++ 1 files changed, 62 insertions(+), 0 deletions(-) diff --git a/booster/testcase/list.c b/booster/testcase/list.c new file mode 100644 index 0000000..a16943a --- /dev/null +++ b/booster/testcase/list.c @@ -0,0 +1,62 @@ +/********************************************************************************* + * Copyright: (C) 2012 Guo Wenxue <guowenxue@gmail.com> + * All rights reserved. + * + * Filename: list.c + * Description: This is the list API from linux kernel example code. + * + * Notice: Memory leak check: valgrind --leak-check=full ./list + * + * Version: 1.0.0(08/08/2012~) + * Author: Guo Wenxue <guowenxue@gmail.com> + * ChangeLog: 1, Release initial version on "08/08/2012 06:51:40 PM" + * + ********************************************************************************/ + +#include <stdio.h> +#include <stdlib.h> +#include "list.h" + +typedef struct node_s +{ + int data; + struct list_head list; +} node_t; + +int main (int argc, char **argv) +{ + int i; + struct list_head head; + node_t *node, *tmp; + + INIT_LIST_HEAD(&head); + + /* Create the link list */ + for(i=0; i<10; i++) + { + node = malloc(sizeof(*node)); + node->data = i; + + printf("List add an node data : %p->%d\n", node, node->data); + list_add_tail(&node->list, &head); + } + printf("\n"); + + /* Use list_for_each_entry to travel list, we can not remove the node in it */ + list_for_each_entry(node, &head, list) + { + printf("List travel node data : %p->%d\n", node, node->data); + } + printf("\n"); + + /* Use list_for_each_entry_safe to destroy the list */ + list_for_each_entry_safe(node, tmp, &head, list) + { + printf("List remove node data : %p->%d\n", node, node->data); + list_del(&node->list); + free(node); + } + printf("\n"); + + return 0; +} -- Gitblit v1.9.1