mirror of https://gerrit.osmocom.org/libosmocore
linuxlist.h: add llist_count()
After subchan_demux.c in libosmo-abis, osmo-bts/common/vty.c and openbsc's gtphub_test.c, more places would like to count the llist items (mostly unit tests). Instead of proliferating numerous local implementations, add here. NOTE: other than the previous llist_len() implementations, this one returns an *unsigned* length, which might need some adjusting of current callers. Call this llist_count() rather than llist_len() to highlight the fact that this is actively iterating. This also avoids a potential naming conflict when library versions mismatch. Change-Id: Ic49adc7a346f5722bf624d7d3b4a735e4220ae15
This commit is contained in:
parent
b0a4234c49
commit
505a22fc51
|
@ -351,6 +351,22 @@ static inline void llist_splice_init(struct llist_head *llist,
|
|||
for ((pos) = (pos)->next, prefetch((pos)->next); (pos) != (head); \
|
||||
(pos) = (pos)->next, ({ smp_read_barrier_depends(); 0;}), prefetch((pos)->next))
|
||||
|
||||
/*! \brief count nr of llist items by iterating.
|
||||
* \param head The llist head to count items of.
|
||||
* \returns Number of items.
|
||||
*
|
||||
* This function is not efficient, mostly useful for small lists and non time
|
||||
* critical cases like unit tests.
|
||||
*/
|
||||
static inline unsigned int llist_count(struct llist_head *head)
|
||||
{
|
||||
struct llist_head *entry;
|
||||
unsigned int i = 0;
|
||||
llist_for_each(entry, head)
|
||||
i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
/*!
|
||||
* }@
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue