Re: git: a83b3ec719eb - main - linuxkpi: list_sort()'s callback now takes list arguments
Date: Tue, 31 Jan 2023 23:39:30 UTC
On Tue, 31 Jan 2023, Bjoern A. Zeeb wrote: > 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 <dumbbell@FreeBSD.org> >> AuthorDate: 2023-01-11 22:22:07 +0000 >> Commit: Jean-Sébastien Pédron <dumbbell@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? Never mind, I did. Too late. We could still fully pass the const through but that'll indeed need more #ifdef to the implementation. /bz > >> 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