Re: git: a83b3ec719eb - main - linuxkpi: list_sort()'s callback now takes list arguments
Date: Tue, 31 Jan 2023 23:34:33 UTC
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? > 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