aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-Sébastien Pédron <dumbbell@FreeBSD.org>2023-12-08 21:53:21 +0000
committerVladimir Kondratyev <wulf@FreeBSD.org>2024-02-17 20:58:35 +0000
commit0fef6cb7299f541e1b94b84d2b9a9225133b9672 (patch)
tree27ab7d328a8d8d49ba3f2841942c9bfda749a757
parent3b97bdb453d1d38b1ceed1f1ff0dfc38660a013b (diff)
linuxkpi: Add `list_for_each_prev_safe()` in <linux/list.h>
[Why] The amdgpu DRM driver started to use it in Linux 5.18. Reviewed by: manu Approved by: manu Differential Revision: https://reviews.freebsd.org/D43021 (cherry picked from commit b723bcd05a991d446491e914f2b9f35e66227398)
-rw-r--r--sys/compat/linuxkpi/common/include/linux/list.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/sys/compat/linuxkpi/common/include/linux/list.h b/sys/compat/linuxkpi/common/include/linux/list.h
index a27abedc55b0..ca103a670109 100644
--- a/sys/compat/linuxkpi/common/include/linux/list.h
+++ b/sys/compat/linuxkpi/common/include/linux/list.h
@@ -225,6 +225,11 @@ list_del_init(struct list_head *entry)
#define list_for_each_prev(p, h) for (p = (h)->prev; p != (h); p = (p)->prev)
+#define list_for_each_prev_safe(p, n, h) \
+ for (p = (h)->prev, n = (p)->prev; \
+ p != (h); \
+ p = n, n = (p)->prev)
+
#define list_for_each_entry_from_reverse(p, h, field) \
for (; &p->field != (h); \
p = list_prev_entry(p, field))