On Tue, 31 Jan 2023, Jean-Sébastien Pédron wrote:
The branch main has been updated by dumbbell (ports committer):
URL:
https://cgit.FreeBSD.org/src/commit/?id=a83b3ec719eb6c53658656b7b90607564d3c64d3
commit a83b3ec719eb6c53658656b7b90607564d3c64d3
Author: Jean-Sébastien Pédron <dumbb...@freebsd.org>
AuthorDate: 2023-01-11 22:22:07 +0000
Commit: Jean-Sébastien Pédron <dumbb...@freebsd.org>
CommitDate: 2023-01-31 22:36:33 +0000
linuxkpi: list_sort()'s callback now takes list arguments
Does that description miss a ... takes "const" list ... ?
This change breaks the API of `list_sort()`. `LINUXKPI_VERSION >= 51300`
is used to keep the header compatible with both versions of the
prototype.
Given our internals half way through already dal with "const" I see
little harm in making it const unconditionally. The actual
LINUXKPI_VERSION check probably should be around the DECONST lines in
linux_le_cmp() and in list_sort_thunk ; if we really wanted to not
lose the "const" half way through for newer versions which are prepared
for it.
Non-const arguments passed in to list_sort() will still work and we can
avoid having an extern with const but an implementation without (not
sure why that's not giving warnings anyway).
Or am I misreading the change?
Reviewed by: manu
Approved by: manu
Differential Revision: https://reviews.freebsd.org/D38082
---
sys/compat/linuxkpi/common/include/linux/list.h | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/sys/compat/linuxkpi/common/include/linux/list.h
b/sys/compat/linuxkpi/common/include/linux/list.h
index 80ac57fecf6d..6ec715291807 100644
--- a/sys/compat/linuxkpi/common/include/linux/list.h
+++ b/sys/compat/linuxkpi/common/include/linux/list.h
@@ -504,7 +504,12 @@ static inline int list_is_last(const struct list_head
*list,
(pos) && ({ n = (pos)->member.next; 1; }); \
pos = hlist_entry_safe(n, typeof(*(pos)), member))
+#if defined(LINUXKPI_VERSION) && LINUXKPI_VERSION >= 51300
+extern void list_sort(void *priv, struct list_head *head, int (*cmp)(void
*priv,
+ const struct list_head *a, const struct list_head *b));
+#else
extern void list_sort(void *priv, struct list_head *head, int (*cmp)(void *priv,
struct list_head *a, struct list_head *b));
+#endif
#endif /* _LINUXKPI_LINUX_LIST_H_ */
--
Bjoern A. Zeeb r15:7