mirror of https://gitee.com/openkylin/linux.git
kselftest: factor out list manipulation to a helper
Kees suggest to factor out the list append code to a macro, since following commits need it, which leads to code duplication. Suggested-by: Kees Cook <keescook@chromium.org> Signed-off-by: Jakub Kicinski <kuba@kernel.org> Acked-by: Kees Cook <keescook@chromium.org> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
3e455b7d1a
commit
1a89595c22
|
@ -631,6 +631,29 @@
|
|||
} \
|
||||
} while (0); OPTIONAL_HANDLER(_assert)
|
||||
|
||||
/* List helpers */
|
||||
#define __LIST_APPEND(head, item) \
|
||||
{ \
|
||||
/* Circular linked list where only prev is circular. */ \
|
||||
if (head == NULL) { \
|
||||
head = item; \
|
||||
item->next = NULL; \
|
||||
item->prev = item; \
|
||||
return; \
|
||||
} \
|
||||
if (__constructor_order == _CONSTRUCTOR_ORDER_FORWARD) { \
|
||||
item->next = NULL; \
|
||||
item->prev = head->prev; \
|
||||
item->prev->next = item; \
|
||||
head->prev = item; \
|
||||
} else { \
|
||||
item->next = head; \
|
||||
item->next->prev = item; \
|
||||
item->prev = item; \
|
||||
head = item; \
|
||||
} \
|
||||
}
|
||||
|
||||
/* Contains all the information for test execution and status checking. */
|
||||
struct __test_metadata {
|
||||
const char *name;
|
||||
|
@ -667,24 +690,7 @@ static int __constructor_order;
|
|||
static inline void __register_test(struct __test_metadata *t)
|
||||
{
|
||||
__test_count++;
|
||||
/* Circular linked list where only prev is circular. */
|
||||
if (__test_list == NULL) {
|
||||
__test_list = t;
|
||||
t->next = NULL;
|
||||
t->prev = t;
|
||||
return;
|
||||
}
|
||||
if (__constructor_order == _CONSTRUCTOR_ORDER_FORWARD) {
|
||||
t->next = NULL;
|
||||
t->prev = __test_list->prev;
|
||||
t->prev->next = t;
|
||||
__test_list->prev = t;
|
||||
} else {
|
||||
t->next = __test_list;
|
||||
t->next->prev = t;
|
||||
t->prev = t;
|
||||
__test_list = t;
|
||||
}
|
||||
__LIST_APPEND(__test_list, t);
|
||||
}
|
||||
|
||||
static inline int __bail(int for_realz, bool no_print, __u8 step)
|
||||
|
|
Loading…
Reference in New Issue