From d3ac388846f8e8ba0592c25e3171fa6562c8f2b2 Mon Sep 17 00:00:00 2001 From: armink Date: Thu, 19 Oct 2017 09:28:17 +0800 Subject: [PATCH] [rtservice] Add `rt_list_len` and `rt_slist_len` to rtservice.h . --- components/finsh/cmd.c | 13 ------------- include/rtservice.h | 30 ++++++++++++++++++++++++++++++ 2 files changed, 30 insertions(+), 13 deletions(-) diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c index 9197c90ad..995ec2a10 100644 --- a/components/finsh/cmd.c +++ b/components/finsh/cmd.c @@ -49,19 +49,6 @@ #include #include "finsh.h" -rt_inline unsigned int rt_list_len(const rt_list_t *l) -{ - unsigned int len = 0; - const rt_list_t *p = l; - while (p->next != l) - { - p = p->next; - len ++; - } - - return len; -} - long hello(void) { rt_kprintf("Hello RT-Thread!\n"); diff --git a/include/rtservice.h b/include/rtservice.h index 0ace555cd..2c6682076 100644 --- a/include/rtservice.h +++ b/include/rtservice.h @@ -104,6 +104,23 @@ rt_inline int rt_list_isempty(const rt_list_t *l) return l->next == l; } +/** + * @brief get the list length + * @param l the list to get. + */ +rt_inline unsigned int rt_list_len(const rt_list_t *l) +{ + unsigned int len = 0; + const rt_list_t *p = l; + while (p->next != l) + { + p = p->next; + len ++; + } + + return len; +} + /** * @brief get the struct for this entry * @param node the entry point @@ -177,6 +194,19 @@ rt_inline rt_slist_t *rt_slist_remove(rt_slist_t *l, rt_slist_t *n) return l; } +rt_inline unsigned int rt_slist_len(const rt_slist_t *l) +{ + unsigned int len = 0; + const rt_slist_t *list = l->next; + while (list != RT_NULL) + { + list = list->next; + len ++; + } + + return len; +} + /** * @brief get the struct for this single list node * @param node the entry point