On Wed, 12 Jan 2022, Andy Shevchenko wrote:
On Tue, Jan 11, 2022 at 08:55:58PM -0800, Martinez, Ricardo wrote:
quoted
On 12/16/2021 3:08 AM, Ilpo Järvinen wrote:
quoted
On Mon, 6 Dec 2021, Ricardo Martinez wrote:
quoted
quoted
quoted
+ if (req->entry.next == &ring->gpd_ring)
+ return list_first_entry(&ring->gpd_ring, struct cldma_request, entry);
+
+ return list_next_entry(req, entry);
...
quoted
quoted
quoted
+ if (req->entry.prev == &ring->gpd_ring)
+ return list_last_entry(&ring->gpd_ring, struct cldma_request, entry);
+
+ return list_prev_entry(req, entry);
...
quoted
quoted
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?
quoted
#define list_next_entry_circular(pos, ptr, member) \
quoted
((pos)->member.next == (ptr) ? \
I believe this is list_entry_is_head().
It takes .next so it's not the same as list_entry_is_head() and
list_entry_is_last() doesn't exist.
--
i.
quoted
list_first_entry(ptr, typeof(*(pos)), member) : \
list_next_entry(pos, member))