On Tue, Jan 11, 2022 at 08:55:58PM -0800, Martinez, Ricardo wrote: > On 12/16/2021 3:08 AM, Ilpo Järvinen wrote: > > On Mon, 6 Dec 2021, Ricardo Martinez wrote: > > > + if (req->entry.next == &ring->gpd_ring) > > > + return list_first_entry(&ring->gpd_ring, struct cldma_request, entry); > > > + > > > + return list_next_entry(req, entry); ... > > > + if (req->entry.prev == &ring->gpd_ring) > > > + return list_last_entry(&ring->gpd_ring, struct cldma_request, entry); > > > + > > > + return list_prev_entry(req, entry); ... > > Wouldn't these two seems generic enough to warrant adding something like > > list_next/prev_entry_circular(...) to list.h? > > Agree, in the upcoming version I'm planning to include something like this > to list.h as suggested: I think you mean for next and prev, i.o.w. two helpers, correct? > #define list_next_entry_circular(pos, ptr, member) \ > ((pos)->member.next == (ptr) ? \ I believe this is list_entry_is_head(). > list_first_entry(ptr, typeof(*(pos)), member) : \ > list_next_entry(pos, member)) -- With Best Regards, Andy Shevchenko