Lines Matching full:list
3 * KUnit test for the Kernel Linked-list structures.
10 #include <linux/list.h>
15 struct list_head list; member
20 /* Test the different ways of initialising a list. */ in list_test_list_init()
50 LIST_HEAD(list); in list_test_list_add()
52 list_add(&a, &list); in list_test_list_add()
53 list_add(&b, &list); in list_test_list_add()
55 /* should be [list] -> b -> a */ in list_test_list_add()
56 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_add()
57 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_add()
64 LIST_HEAD(list); in list_test_list_add_tail()
66 list_add_tail(&a, &list); in list_test_list_add_tail()
67 list_add_tail(&b, &list); in list_test_list_add_tail()
69 /* should be [list] -> a -> b */ in list_test_list_add_tail()
70 KUNIT_EXPECT_PTR_EQ(test, list.next, &a); in list_test_list_add_tail()
71 KUNIT_EXPECT_PTR_EQ(test, a.prev, &list); in list_test_list_add_tail()
78 LIST_HEAD(list); in list_test_list_del()
80 list_add_tail(&a, &list); in list_test_list_del()
81 list_add_tail(&b, &list); in list_test_list_del()
83 /* before: [list] -> a -> b */ in list_test_list_del()
86 /* now: [list] -> b */ in list_test_list_del()
87 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_del()
88 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_del()
94 LIST_HEAD(list); in list_test_list_replace()
96 list_add_tail(&a_old, &list); in list_test_list_replace()
97 list_add_tail(&b, &list); in list_test_list_replace()
99 /* before: [list] -> a_old -> b */ in list_test_list_replace()
102 /* now: [list] -> a_new -> b */ in list_test_list_replace()
103 KUNIT_EXPECT_PTR_EQ(test, list.next, &a_new); in list_test_list_replace()
110 LIST_HEAD(list); in list_test_list_replace_init()
112 list_add_tail(&a_old, &list); in list_test_list_replace_init()
113 list_add_tail(&b, &list); in list_test_list_replace_init()
115 /* before: [list] -> a_old -> b */ in list_test_list_replace_init()
118 /* now: [list] -> a_new -> b */ in list_test_list_replace_init()
119 KUNIT_EXPECT_PTR_EQ(test, list.next, &a_new); in list_test_list_replace_init()
129 LIST_HEAD(list); in list_test_list_swap()
131 list_add_tail(&a, &list); in list_test_list_swap()
132 list_add_tail(&b, &list); in list_test_list_swap()
134 /* before: [list] -> a -> b */ in list_test_list_swap()
137 /* after: [list] -> b -> a */ in list_test_list_swap()
138 KUNIT_EXPECT_PTR_EQ(test, &b, list.next); in list_test_list_swap()
139 KUNIT_EXPECT_PTR_EQ(test, &a, list.prev); in list_test_list_swap()
142 KUNIT_EXPECT_PTR_EQ(test, &list, b.prev); in list_test_list_swap()
144 KUNIT_EXPECT_PTR_EQ(test, &list, a.next); in list_test_list_swap()
151 LIST_HEAD(list); in list_test_list_del_init()
153 list_add_tail(&a, &list); in list_test_list_del_init()
154 list_add_tail(&b, &list); in list_test_list_del_init()
156 /* before: [list] -> a -> b */ in list_test_list_del_init()
158 /* after: [list] -> b, a initialised */ in list_test_list_del_init()
160 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_del_init()
161 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_del_init()
171 LIST_HEAD(list); in list_test_list_del_init_careful()
173 list_add_tail(&a, &list); in list_test_list_del_init_careful()
174 list_add_tail(&b, &list); in list_test_list_del_init_careful()
176 /* before: [list] -> a -> b */ in list_test_list_del_init_careful()
178 /* after: [list] -> b, a initialised */ in list_test_list_del_init_careful()
180 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_del_init_careful()
181 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_del_init_careful()
268 "Head element of same list"); in list_test_list_is_head()
270 "Non-head element of same list"); in list_test_list_is_head()
272 "Head element of different list"); in list_test_list_is_head()
279 LIST_HEAD(list); in list_test_list_is_first()
281 list_add_tail(&a, &list); in list_test_list_is_first()
282 list_add_tail(&b, &list); in list_test_list_is_first()
284 KUNIT_EXPECT_TRUE(test, list_is_first(&a, &list)); in list_test_list_is_first()
285 KUNIT_EXPECT_FALSE(test, list_is_first(&b, &list)); in list_test_list_is_first()
291 LIST_HEAD(list); in list_test_list_is_last()
293 list_add_tail(&a, &list); in list_test_list_is_last()
294 list_add_tail(&b, &list); in list_test_list_is_last()
296 KUNIT_EXPECT_FALSE(test, list_is_last(&a, &list)); in list_test_list_is_last()
297 KUNIT_EXPECT_TRUE(test, list_is_last(&b, &list)); in list_test_list_is_last()
328 LIST_HEAD(list); in list_test_list_rotate_left()
330 list_add_tail(&a, &list); in list_test_list_rotate_left()
331 list_add_tail(&b, &list); in list_test_list_rotate_left()
333 /* before: [list] -> a -> b */ in list_test_list_rotate_left()
334 list_rotate_left(&list); in list_test_list_rotate_left()
335 /* after: [list] -> b -> a */ in list_test_list_rotate_left()
337 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_rotate_left()
338 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_rotate_left()
347 LIST_HEAD(list); in list_test_list_rotate_to_front()
350 list_add_tail(&a, &list); in list_test_list_rotate_to_front()
351 list_add_tail(&b, &list); in list_test_list_rotate_to_front()
352 list_add_tail(&c, &list); in list_test_list_rotate_to_front()
353 list_add_tail(&d, &list); in list_test_list_rotate_to_front()
355 /* before: [list] -> a -> b -> c -> d */ in list_test_list_rotate_to_front()
356 list_rotate_to_front(&c, &list); in list_test_list_rotate_to_front()
357 /* after: [list] -> c -> d -> a -> b */ in list_test_list_rotate_to_front()
359 list_for_each(ptr, &list) { in list_test_list_rotate_to_front()
369 LIST_HEAD(list); in list_test_list_is_singular()
371 /* [list] empty */ in list_test_list_is_singular()
372 KUNIT_EXPECT_FALSE(test, list_is_singular(&list)); in list_test_list_is_singular()
374 list_add_tail(&a, &list); in list_test_list_is_singular()
376 /* [list] -> a */ in list_test_list_is_singular()
377 KUNIT_EXPECT_TRUE(test, list_is_singular(&list)); in list_test_list_is_singular()
379 list_add_tail(&b, &list); in list_test_list_is_singular()
381 /* [list] -> a -> b */ in list_test_list_is_singular()
382 KUNIT_EXPECT_FALSE(test, list_is_singular(&list)); in list_test_list_is_singular()
549 KUNIT_EXPECT_PTR_EQ(test, &test_struct, list_entry(&(test_struct.list), in list_test_list_entry()
550 struct list_test_struct, list)); in list_test_list_entry()
557 INIT_LIST_HEAD(&test_struct1.list); in list_test_list_entry_is_head()
558 INIT_LIST_HEAD(&test_struct3.list); in list_test_list_entry_is_head()
560 list_add_tail(&test_struct2.list, &test_struct1.list); in list_test_list_entry_is_head()
563 list_entry_is_head((&test_struct1), &test_struct1.list, list), in list_test_list_entry_is_head()
564 "Head element of same list"); in list_test_list_entry_is_head()
566 list_entry_is_head((&test_struct2), &test_struct1.list, list), in list_test_list_entry_is_head()
567 "Non-head element of same list"); in list_test_list_entry_is_head()
569 list_entry_is_head((&test_struct3), &test_struct1.list, list), in list_test_list_entry_is_head()
570 "Head element of different list"); in list_test_list_entry_is_head()
576 LIST_HEAD(list); in list_test_list_first_entry()
578 list_add_tail(&test_struct1.list, &list); in list_test_list_first_entry()
579 list_add_tail(&test_struct2.list, &list); in list_test_list_first_entry()
582 KUNIT_EXPECT_PTR_EQ(test, &test_struct1, list_first_entry(&list, in list_test_list_first_entry()
583 struct list_test_struct, list)); in list_test_list_first_entry()
589 LIST_HEAD(list); in list_test_list_last_entry()
591 list_add_tail(&test_struct1.list, &list); in list_test_list_last_entry()
592 list_add_tail(&test_struct2.list, &list); in list_test_list_last_entry()
595 KUNIT_EXPECT_PTR_EQ(test, &test_struct2, list_last_entry(&list, in list_test_list_last_entry()
596 struct list_test_struct, list)); in list_test_list_last_entry()
602 LIST_HEAD(list); in list_test_list_first_entry_or_null()
604 KUNIT_EXPECT_FALSE(test, list_first_entry_or_null(&list, in list_test_list_first_entry_or_null()
605 struct list_test_struct, list)); in list_test_list_first_entry_or_null()
607 list_add_tail(&test_struct1.list, &list); in list_test_list_first_entry_or_null()
608 list_add_tail(&test_struct2.list, &list); in list_test_list_first_entry_or_null()
611 list_first_entry_or_null(&list, in list_test_list_first_entry_or_null()
612 struct list_test_struct, list)); in list_test_list_first_entry_or_null()
618 LIST_HEAD(list); in list_test_list_next_entry()
620 list_add_tail(&test_struct1.list, &list); in list_test_list_next_entry()
621 list_add_tail(&test_struct2.list, &list); in list_test_list_next_entry()
625 list)); in list_test_list_next_entry()
631 LIST_HEAD(list); in list_test_list_prev_entry()
633 list_add_tail(&test_struct1.list, &list); in list_test_list_prev_entry()
634 list_add_tail(&test_struct2.list, &list); in list_test_list_prev_entry()
638 list)); in list_test_list_prev_entry()
644 LIST_HEAD(list); in list_test_list_for_each()
647 list_add_tail(&entries[0], &list); in list_test_list_for_each()
648 list_add_tail(&entries[1], &list); in list_test_list_for_each()
649 list_add_tail(&entries[2], &list); in list_test_list_for_each()
651 list_for_each(cur, &list) { in list_test_list_for_each()
662 LIST_HEAD(list); in list_test_list_for_each_prev()
665 list_add_tail(&entries[0], &list); in list_test_list_for_each_prev()
666 list_add_tail(&entries[1], &list); in list_test_list_for_each_prev()
667 list_add_tail(&entries[2], &list); in list_test_list_for_each_prev()
669 list_for_each_prev(cur, &list) { in list_test_list_for_each_prev()
680 LIST_HEAD(list); in list_test_list_for_each_safe()
684 list_add_tail(&entries[0], &list); in list_test_list_for_each_safe()
685 list_add_tail(&entries[1], &list); in list_test_list_for_each_safe()
686 list_add_tail(&entries[2], &list); in list_test_list_for_each_safe()
688 list_for_each_safe(cur, n, &list) { in list_test_list_for_each_safe()
695 KUNIT_EXPECT_TRUE(test, list_empty(&list)); in list_test_list_for_each_safe()
701 LIST_HEAD(list); in list_test_list_for_each_prev_safe()
704 list_add_tail(&entries[0], &list); in list_test_list_for_each_prev_safe()
705 list_add_tail(&entries[1], &list); in list_test_list_for_each_prev_safe()
706 list_add_tail(&entries[2], &list); in list_test_list_for_each_prev_safe()
708 list_for_each_prev_safe(cur, n, &list) { in list_test_list_for_each_prev_safe()
715 KUNIT_EXPECT_TRUE(test, list_empty(&list)); in list_test_list_for_each_prev_safe()
721 LIST_HEAD(list); in list_test_list_for_each_entry()
726 list_add_tail(&entries[i].list, &list); in list_test_list_for_each_entry()
731 list_for_each_entry(cur, &list, list) { in list_test_list_for_each_entry()
742 LIST_HEAD(list); in list_test_list_for_each_entry_reverse()
747 list_add_tail(&entries[i].list, &list); in list_test_list_for_each_entry_reverse()
752 list_for_each_entry_reverse(cur, &list, list) { in list_test_list_for_each_entry_reverse()
804 .name = "list-kunit-test",
810 struct hlist_node list; member
815 /* Test the different ways of initialising a list. */ in hlist_test_init()
844 HLIST_HEAD(list); in hlist_test_unhashed()
851 hlist_add_head(&a, &list); in hlist_test_unhashed()
853 /* is hashed once added to list */ in hlist_test_unhashed()
866 HLIST_HEAD(list); in hlist_test_unhashed_lockless()
873 hlist_add_head(&a, &list); in hlist_test_unhashed_lockless()
875 /* is hashed once added to list */ in hlist_test_unhashed_lockless()
887 HLIST_HEAD(list); in hlist_test_del()
889 hlist_add_head(&a, &list); in hlist_test_del()
892 /* before: [list] -> a -> b */ in hlist_test_del()
895 /* now: [list] -> b */ in hlist_test_del()
896 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_del()
897 KUNIT_EXPECT_PTR_EQ(test, b.pprev, &list.first); in hlist_test_del()
903 HLIST_HEAD(list); in hlist_test_del_init()
905 hlist_add_head(&a, &list); in hlist_test_del_init()
908 /* before: [list] -> a -> b */ in hlist_test_del_init()
911 /* now: [list] -> b */ in hlist_test_del_init()
912 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_del_init()
913 KUNIT_EXPECT_PTR_EQ(test, b.pprev, &list.first); in hlist_test_del_init()
924 HLIST_HEAD(list); in hlist_test_add()
926 hlist_add_head(&a, &list); in hlist_test_add()
927 hlist_add_head(&b, &list); in hlist_test_add()
931 /* should be [list] -> b -> c -> a -> d */ in hlist_test_add()
932 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_add()
963 HLIST_HEAD(list); in hlist_test_is_singular_node()
966 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
968 hlist_add_head(&a, &list); in hlist_test_is_singular_node()
969 KUNIT_EXPECT_TRUE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
971 hlist_add_head(&b, &list); in hlist_test_is_singular_node()
972 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
973 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&b, &list)); in hlist_test_is_singular_node()
979 HLIST_HEAD(list); in hlist_test_empty()
981 /* list starts off empty */ in hlist_test_empty()
982 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_empty()
984 hlist_add_head(&a, &list); in hlist_test_empty()
986 /* list is no longer empty */ in hlist_test_empty()
987 KUNIT_EXPECT_FALSE(test, hlist_empty(&list)); in hlist_test_empty()
1011 hlist_entry(&(test_struct.list), in hlist_test_entry()
1012 struct hlist_test_struct, list)); in hlist_test_entry()
1020 hlist_entry_safe(&(test_struct.list), in hlist_test_entry_safe()
1021 struct hlist_test_struct, list)); in hlist_test_entry_safe()
1025 struct hlist_test_struct, list)); in hlist_test_entry_safe()
1031 HLIST_HEAD(list); in hlist_test_for_each()
1034 hlist_add_head(&entries[0], &list); in hlist_test_for_each()
1038 hlist_for_each(cur, &list) { in hlist_test_for_each()
1050 HLIST_HEAD(list); in hlist_test_for_each_safe()
1053 hlist_add_head(&entries[0], &list); in hlist_test_for_each_safe()
1057 hlist_for_each_safe(cur, n, &list) { in hlist_test_for_each_safe()
1064 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_for_each_safe()
1070 HLIST_HEAD(list); in hlist_test_for_each_entry()
1074 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry()
1077 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry()
1082 hlist_for_each_entry(cur, &list, list) { in hlist_test_for_each_entry()
1093 HLIST_HEAD(list); in hlist_test_for_each_entry_continue()
1097 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_continue()
1100 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_continue()
1107 hlist_for_each_entry_continue(cur, list) { in hlist_test_for_each_entry_continue()
1124 HLIST_HEAD(list); in hlist_test_for_each_entry_from()
1128 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_from()
1131 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_from()
1137 hlist_for_each_entry_from(cur, list) { in hlist_test_for_each_entry_from()
1153 HLIST_HEAD(list); in hlist_test_for_each_entry_safe()
1157 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_safe()
1160 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_safe()
1165 hlist_for_each_entry_safe(cur, tmp_node, &list, list) { in hlist_test_for_each_entry_safe()
1167 hlist_del(&cur->list); in hlist_test_for_each_entry_safe()
1172 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_for_each_entry_safe()
1242 /* should be [list] -> a -> b */ in klist_test_add_tail()
1270 /* should be [list] -> b -> a */ in klist_test_add_head()
1303 /* should be [list] -> b -> d -> a -> c*/ in klist_test_add_behind()
1335 /* should be [list] -> b -> d -> a -> c*/ in klist_test_add_before()
1359 /* Add nodes a,b,c,d to the list*/ in klist_test_del_refcount_greater_than_zero()
1376 * Verify that node c is still attached to the list even after being in klist_test_del_refcount_greater_than_zero()
1390 * from the list in klist_test_del_refcount_greater_than_zero()
1410 /* Add nodes a,b,c,d to the list*/ in klist_test_del_refcount_zero()
1418 /* Check that node c is deleted from the list*/ in klist_test_del_refcount_zero()
1422 /* Should be [list] -> a -> b -> d*/ in klist_test_del_refcount_zero()
1444 /* Add nodes a,b,c,d to the list*/ in klist_test_remove()
1452 /* Check the nodes in the list*/ in klist_test_remove()
1456 /* should be [list] -> a -> b -> d*/ in klist_test_remove()