From 2e2a7d0852abcdacacfb3ba18c38a09f746b20fe Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 13 Dec 2016 12:27:47 +0000 Subject: lib/kselftest: Parse embedded test number from parameter Order the tests by an embedded test number from the parameter string. Signed-off-by: Chris Wilson --- lib/igt_aux.h | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) (limited to 'lib/igt_aux.h') diff --git a/lib/igt_aux.h b/lib/igt_aux.h index ca728c26..30f914b9 100644 --- a/lib/igt_aux.h +++ b/lib/igt_aux.h @@ -289,7 +289,7 @@ struct igt_list { }; #define __IGT_INIT_LIST(name) { &(name), &(name) } -#define IGT_LIST(name) struct igt_list name = __IGT_INIT_LIST(name); +#define IGT_LIST(name) struct igt_list name = __IGT_INIT_LIST(name) static inline void igt_list_init(struct igt_list *list) { @@ -352,14 +352,24 @@ static inline bool igt_list_empty(const struct igt_list *list) #define igt_list_first_entry(head, pos, member) \ container_of((head)->next, (pos), member) +#define igt_list_last_entry(head, pos, member) \ + container_of((head)->prev, (pos), member) + #define igt_list_next_entry(pos, member) \ container_of((pos)->member.next, (pos), member) +#define igt_list_prev_entry(pos, member) \ + container_of((pos)->member.prev, (pos), member) #define igt_list_for_each(pos, head, member) \ - for (pos = igt_list_first_entry(head, pos, member); \ + for (pos = igt_list_first_entry(head, pos, member); \ &pos->member != (head); \ pos = igt_list_next_entry(pos, member)) +#define igt_list_for_each_reverse(pos, head, member) \ + for (pos = igt_list_last_entry(head, pos, member); \ + &pos->member != (head); \ + pos = igt_list_prev_entry(pos, member)) + #define igt_list_for_each_safe(pos, tmp, head, member) \ for (pos = igt_list_first_entry(head, pos, member), \ tmp = igt_list_next_entry(pos, member); \ -- cgit v1.2.3