未验证 提交 e4bdcef4 编写于 作者: B Bernard Xiong 提交者: GitHub

Merge pull request #1797 from armink/fix_slist

[slist] Add rt_slist_tail and rt_slist_tail_entry for slist.
...@@ -253,6 +253,13 @@ rt_inline rt_slist_t *rt_slist_first(rt_slist_t *l) ...@@ -253,6 +253,13 @@ rt_inline rt_slist_t *rt_slist_first(rt_slist_t *l)
return l->next; return l->next;
} }
rt_inline rt_slist_t *rt_slist_tail(rt_slist_t *l)
{
while (l->next) l = l->next;
return l;
}
rt_inline rt_slist_t *rt_slist_next(rt_slist_t *n) rt_inline rt_slist_t *rt_slist_next(rt_slist_t *n)
{ {
return n->next; return n->next;
...@@ -302,6 +309,17 @@ rt_inline int rt_slist_isempty(rt_slist_t *l) ...@@ -302,6 +309,17 @@ rt_inline int rt_slist_isempty(rt_slist_t *l)
#define rt_slist_first_entry(ptr, type, member) \ #define rt_slist_first_entry(ptr, type, member) \
rt_slist_entry((ptr)->next, type, member) rt_slist_entry((ptr)->next, type, member)
/**
* rt_slist_tail_entry - get the tail element from a slist
* @ptr: the slist head to take the element from.
* @type: the type of the struct this is embedded in.
* @member: the name of the slist_struct within the struct.
*
* Note, that slist is expected to be not empty.
*/
#define rt_slist_tail_entry(ptr, type, member) \
rt_slist_entry(rt_slist_tail(ptr), type, member)
/*@}*/ /*@}*/
#ifdef __cplusplus #ifdef __cplusplus
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册