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()
106 KUNIT_EXPECT_PTR_EQ(test, a_new.prev, &list); in list_test_list_replace()
112 LIST_HEAD(list); in list_test_list_replace_init()
114 list_add_tail(&a_old, &list); in list_test_list_replace_init()
115 list_add_tail(&b, &list); in list_test_list_replace_init()
117 /* before: [list] -> a_old -> b */ in list_test_list_replace_init()
120 /* now: [list] -> a_new -> b */ in list_test_list_replace_init()
121 KUNIT_EXPECT_PTR_EQ(test, list.next, &a_new); in list_test_list_replace_init()
124 KUNIT_EXPECT_PTR_EQ(test, a_new.prev, &list); in list_test_list_replace_init()
133 LIST_HEAD(list); in list_test_list_swap()
135 list_add_tail(&a, &list); in list_test_list_swap()
136 list_add_tail(&b, &list); in list_test_list_swap()
138 /* before: [list] -> a -> b */ in list_test_list_swap()
141 /* after: [list] -> b -> a */ in list_test_list_swap()
142 KUNIT_EXPECT_PTR_EQ(test, &b, list.next); in list_test_list_swap()
143 KUNIT_EXPECT_PTR_EQ(test, &a, list.prev); in list_test_list_swap()
146 KUNIT_EXPECT_PTR_EQ(test, &list, b.prev); in list_test_list_swap()
148 KUNIT_EXPECT_PTR_EQ(test, &list, a.next); in list_test_list_swap()
155 LIST_HEAD(list); in list_test_list_del_init()
157 list_add_tail(&a, &list); in list_test_list_del_init()
158 list_add_tail(&b, &list); in list_test_list_del_init()
160 /* before: [list] -> a -> b */ in list_test_list_del_init()
162 /* after: [list] -> b, a initialised */ in list_test_list_del_init()
164 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_del_init()
165 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_del_init()
175 LIST_HEAD(list); in list_test_list_del_init_careful()
177 list_add_tail(&a, &list); in list_test_list_del_init_careful()
178 list_add_tail(&b, &list); in list_test_list_del_init_careful()
180 /* before: [list] -> a -> b */ in list_test_list_del_init_careful()
182 /* after: [list] -> b, a initialised */ in list_test_list_del_init_careful()
184 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_del_init_careful()
185 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_del_init_careful()
272 "Head element of same list"); in list_test_list_is_head()
274 "Non-head element of same list"); in list_test_list_is_head()
276 "Head element of different list"); in list_test_list_is_head()
283 LIST_HEAD(list); in list_test_list_is_first()
285 list_add_tail(&a, &list); in list_test_list_is_first()
286 list_add_tail(&b, &list); in list_test_list_is_first()
288 KUNIT_EXPECT_TRUE(test, list_is_first(&a, &list)); in list_test_list_is_first()
289 KUNIT_EXPECT_FALSE(test, list_is_first(&b, &list)); in list_test_list_is_first()
295 LIST_HEAD(list); in list_test_list_is_last()
297 list_add_tail(&a, &list); in list_test_list_is_last()
298 list_add_tail(&b, &list); in list_test_list_is_last()
300 KUNIT_EXPECT_FALSE(test, list_is_last(&a, &list)); in list_test_list_is_last()
301 KUNIT_EXPECT_TRUE(test, list_is_last(&b, &list)); in list_test_list_is_last()
332 LIST_HEAD(list); in list_test_list_rotate_left()
334 list_add_tail(&a, &list); in list_test_list_rotate_left()
335 list_add_tail(&b, &list); in list_test_list_rotate_left()
337 /* before: [list] -> a -> b */ in list_test_list_rotate_left()
338 list_rotate_left(&list); in list_test_list_rotate_left()
339 /* after: [list] -> b -> a */ in list_test_list_rotate_left()
341 KUNIT_EXPECT_PTR_EQ(test, list.next, &b); in list_test_list_rotate_left()
342 KUNIT_EXPECT_PTR_EQ(test, b.prev, &list); in list_test_list_rotate_left()
351 LIST_HEAD(list); in list_test_list_rotate_to_front()
354 list_add_tail(&a, &list); in list_test_list_rotate_to_front()
355 list_add_tail(&b, &list); in list_test_list_rotate_to_front()
356 list_add_tail(&c, &list); in list_test_list_rotate_to_front()
357 list_add_tail(&d, &list); in list_test_list_rotate_to_front()
359 /* before: [list] -> a -> b -> c -> d */ in list_test_list_rotate_to_front()
360 list_rotate_to_front(&c, &list); in list_test_list_rotate_to_front()
361 /* after: [list] -> c -> d -> a -> b */ in list_test_list_rotate_to_front()
363 list_for_each(ptr, &list) { in list_test_list_rotate_to_front()
373 LIST_HEAD(list); in list_test_list_is_singular()
375 /* [list] empty */ in list_test_list_is_singular()
376 KUNIT_EXPECT_FALSE(test, list_is_singular(&list)); in list_test_list_is_singular()
378 list_add_tail(&a, &list); in list_test_list_is_singular()
380 /* [list] -> a */ in list_test_list_is_singular()
381 KUNIT_EXPECT_TRUE(test, list_is_singular(&list)); in list_test_list_is_singular()
383 list_add_tail(&b, &list); in list_test_list_is_singular()
385 /* [list] -> a -> b */ in list_test_list_is_singular()
386 KUNIT_EXPECT_FALSE(test, list_is_singular(&list)); in list_test_list_is_singular()
557 KUNIT_EXPECT_PTR_EQ(test, &test_struct, list_entry(&(test_struct.list), in list_test_list_entry()
558 struct list_test_struct, list)); in list_test_list_entry()
565 INIT_LIST_HEAD(&test_struct1.list); in list_test_list_entry_is_head()
566 INIT_LIST_HEAD(&test_struct3.list); in list_test_list_entry_is_head()
568 list_add_tail(&test_struct2.list, &test_struct1.list); in list_test_list_entry_is_head()
571 list_entry_is_head((&test_struct1), &test_struct1.list, list), in list_test_list_entry_is_head()
572 "Head element of same list"); in list_test_list_entry_is_head()
574 list_entry_is_head((&test_struct2), &test_struct1.list, list), in list_test_list_entry_is_head()
575 "Non-head element of same list"); in list_test_list_entry_is_head()
577 list_entry_is_head((&test_struct3), &test_struct1.list, list), in list_test_list_entry_is_head()
578 "Head element of different list"); in list_test_list_entry_is_head()
584 LIST_HEAD(list); in list_test_list_first_entry()
586 list_add_tail(&test_struct1.list, &list); in list_test_list_first_entry()
587 list_add_tail(&test_struct2.list, &list); in list_test_list_first_entry()
590 KUNIT_EXPECT_PTR_EQ(test, &test_struct1, list_first_entry(&list, in list_test_list_first_entry()
591 struct list_test_struct, list)); in list_test_list_first_entry()
597 LIST_HEAD(list); in list_test_list_last_entry()
599 list_add_tail(&test_struct1.list, &list); in list_test_list_last_entry()
600 list_add_tail(&test_struct2.list, &list); in list_test_list_last_entry()
603 KUNIT_EXPECT_PTR_EQ(test, &test_struct2, list_last_entry(&list, in list_test_list_last_entry()
604 struct list_test_struct, list)); in list_test_list_last_entry()
610 LIST_HEAD(list); in list_test_list_first_entry_or_null()
612 KUNIT_EXPECT_FALSE(test, list_first_entry_or_null(&list, in list_test_list_first_entry_or_null()
613 struct list_test_struct, list)); in list_test_list_first_entry_or_null()
615 list_add_tail(&test_struct1.list, &list); in list_test_list_first_entry_or_null()
616 list_add_tail(&test_struct2.list, &list); in list_test_list_first_entry_or_null()
619 list_first_entry_or_null(&list, in list_test_list_first_entry_or_null()
620 struct list_test_struct, list)); in list_test_list_first_entry_or_null()
626 LIST_HEAD(list); in list_test_list_next_entry()
628 list_add_tail(&test_struct1.list, &list); in list_test_list_next_entry()
629 list_add_tail(&test_struct2.list, &list); in list_test_list_next_entry()
633 list)); in list_test_list_next_entry()
639 LIST_HEAD(list); in list_test_list_prev_entry()
641 list_add_tail(&test_struct1.list, &list); in list_test_list_prev_entry()
642 list_add_tail(&test_struct2.list, &list); in list_test_list_prev_entry()
646 list)); in list_test_list_prev_entry()
652 LIST_HEAD(list); in list_test_list_for_each()
655 list_add_tail(&entries[0], &list); in list_test_list_for_each()
656 list_add_tail(&entries[1], &list); in list_test_list_for_each()
657 list_add_tail(&entries[2], &list); in list_test_list_for_each()
659 list_for_each(cur, &list) { in list_test_list_for_each()
670 LIST_HEAD(list); in list_test_list_for_each_prev()
673 list_add_tail(&entries[0], &list); in list_test_list_for_each_prev()
674 list_add_tail(&entries[1], &list); in list_test_list_for_each_prev()
675 list_add_tail(&entries[2], &list); in list_test_list_for_each_prev()
677 list_for_each_prev(cur, &list) { in list_test_list_for_each_prev()
688 LIST_HEAD(list); in list_test_list_for_each_safe()
692 list_add_tail(&entries[0], &list); in list_test_list_for_each_safe()
693 list_add_tail(&entries[1], &list); in list_test_list_for_each_safe()
694 list_add_tail(&entries[2], &list); in list_test_list_for_each_safe()
696 list_for_each_safe(cur, n, &list) { in list_test_list_for_each_safe()
703 KUNIT_EXPECT_TRUE(test, list_empty(&list)); in list_test_list_for_each_safe()
709 LIST_HEAD(list); in list_test_list_for_each_prev_safe()
712 list_add_tail(&entries[0], &list); in list_test_list_for_each_prev_safe()
713 list_add_tail(&entries[1], &list); in list_test_list_for_each_prev_safe()
714 list_add_tail(&entries[2], &list); in list_test_list_for_each_prev_safe()
716 list_for_each_prev_safe(cur, n, &list) { in list_test_list_for_each_prev_safe()
723 KUNIT_EXPECT_TRUE(test, list_empty(&list)); in list_test_list_for_each_prev_safe()
729 LIST_HEAD(list); in list_test_list_for_each_entry()
734 list_add_tail(&entries[i].list, &list); in list_test_list_for_each_entry()
739 list_for_each_entry(cur, &list, list) { in list_test_list_for_each_entry()
750 LIST_HEAD(list); in list_test_list_for_each_entry_reverse()
755 list_add_tail(&entries[i].list, &list); in list_test_list_for_each_entry_reverse()
760 list_for_each_entry_reverse(cur, &list, list) { in list_test_list_for_each_entry_reverse()
812 .name = "list-kunit-test",
818 struct hlist_node list; member
823 /* Test the different ways of initialising a list. */ in hlist_test_init()
852 HLIST_HEAD(list); in hlist_test_unhashed()
859 hlist_add_head(&a, &list); in hlist_test_unhashed()
861 /* is hashed once added to list */ in hlist_test_unhashed()
874 HLIST_HEAD(list); in hlist_test_unhashed_lockless()
881 hlist_add_head(&a, &list); in hlist_test_unhashed_lockless()
883 /* is hashed once added to list */ in hlist_test_unhashed_lockless()
895 HLIST_HEAD(list); in hlist_test_del()
897 hlist_add_head(&a, &list); in hlist_test_del()
900 /* before: [list] -> a -> b */ in hlist_test_del()
903 /* now: [list] -> b */ in hlist_test_del()
904 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_del()
905 KUNIT_EXPECT_PTR_EQ(test, b.pprev, &list.first); in hlist_test_del()
911 HLIST_HEAD(list); in hlist_test_del_init()
913 hlist_add_head(&a, &list); in hlist_test_del_init()
916 /* before: [list] -> a -> b */ in hlist_test_del_init()
919 /* now: [list] -> b */ in hlist_test_del_init()
920 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_del_init()
921 KUNIT_EXPECT_PTR_EQ(test, b.pprev, &list.first); in hlist_test_del_init()
932 HLIST_HEAD(list); in hlist_test_add()
934 hlist_add_head(&a, &list); in hlist_test_add()
935 hlist_add_head(&b, &list); in hlist_test_add()
939 /* should be [list] -> b -> c -> a -> d */ in hlist_test_add()
940 KUNIT_EXPECT_PTR_EQ(test, list.first, &b); in hlist_test_add()
971 HLIST_HEAD(list); in hlist_test_is_singular_node()
974 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
976 hlist_add_head(&a, &list); in hlist_test_is_singular_node()
977 KUNIT_EXPECT_TRUE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
979 hlist_add_head(&b, &list); in hlist_test_is_singular_node()
980 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&a, &list)); in hlist_test_is_singular_node()
981 KUNIT_EXPECT_FALSE(test, hlist_is_singular_node(&b, &list)); in hlist_test_is_singular_node()
987 HLIST_HEAD(list); in hlist_test_empty()
989 /* list starts off empty */ in hlist_test_empty()
990 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_empty()
992 hlist_add_head(&a, &list); in hlist_test_empty()
994 /* list is no longer empty */ in hlist_test_empty()
995 KUNIT_EXPECT_FALSE(test, hlist_empty(&list)); in hlist_test_empty()
1019 hlist_entry(&(test_struct.list), in hlist_test_entry()
1020 struct hlist_test_struct, list)); in hlist_test_entry()
1028 hlist_entry_safe(&(test_struct.list), in hlist_test_entry_safe()
1029 struct hlist_test_struct, list)); in hlist_test_entry_safe()
1033 struct hlist_test_struct, list)); in hlist_test_entry_safe()
1039 HLIST_HEAD(list); in hlist_test_for_each()
1042 hlist_add_head(&entries[0], &list); in hlist_test_for_each()
1046 hlist_for_each(cur, &list) { in hlist_test_for_each()
1058 HLIST_HEAD(list); in hlist_test_for_each_safe()
1061 hlist_add_head(&entries[0], &list); in hlist_test_for_each_safe()
1065 hlist_for_each_safe(cur, n, &list) { in hlist_test_for_each_safe()
1072 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_for_each_safe()
1078 HLIST_HEAD(list); in hlist_test_for_each_entry()
1082 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry()
1085 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry()
1090 hlist_for_each_entry(cur, &list, list) { in hlist_test_for_each_entry()
1101 HLIST_HEAD(list); in hlist_test_for_each_entry_continue()
1105 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_continue()
1108 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_continue()
1115 hlist_for_each_entry_continue(cur, list) { in hlist_test_for_each_entry_continue()
1132 HLIST_HEAD(list); in hlist_test_for_each_entry_from()
1136 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_from()
1139 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_from()
1145 hlist_for_each_entry_from(cur, list) { in hlist_test_for_each_entry_from()
1161 HLIST_HEAD(list); in hlist_test_for_each_entry_safe()
1165 hlist_add_head(&entries[0].list, &list); in hlist_test_for_each_entry_safe()
1168 hlist_add_behind(&entries[i].list, &entries[i-1].list); in hlist_test_for_each_entry_safe()
1173 hlist_for_each_entry_safe(cur, tmp_node, &list, list) { in hlist_test_for_each_entry_safe()
1175 hlist_del(&cur->list); in hlist_test_for_each_entry_safe()
1180 KUNIT_EXPECT_TRUE(test, hlist_empty(&list)); in hlist_test_for_each_entry_safe()
1244 /* should be [list] -> a -> b */ in klist_test_add_tail()
1272 /* should be [list] -> b -> a */ in klist_test_add_head()
1305 /* should be [list] -> b -> d -> a -> c*/ in klist_test_add_behind()
1337 /* should be [list] -> b -> d -> a -> c*/ in klist_test_add_before()
1361 /* Add nodes a,b,c,d to the list*/ in klist_test_del_refcount_greater_than_zero()
1378 * Verify that node c is still attached to the list even after being in klist_test_del_refcount_greater_than_zero()
1392 * from the list in klist_test_del_refcount_greater_than_zero()
1412 /* Add nodes a,b,c,d to the list*/ in klist_test_del_refcount_zero()
1420 /* Check that node c is deleted from the list*/ in klist_test_del_refcount_zero()
1424 /* Should be [list] -> a -> b -> d*/ in klist_test_del_refcount_zero()
1446 /* Add nodes a,b,c,d to the list*/ in klist_test_remove()
1454 /* Check the nodes in the list*/ in klist_test_remove()
1458 /* should be [list] -> a -> b -> d*/ in klist_test_remove()
1504 MODULE_DESCRIPTION("KUnit test for the Kernel Linked-list structures");