mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2025-01-30 21:30:24 +08:00
[finsh] Fix object name issue in list_* cmd.
This commit is contained in:
parent
4d93c31cce
commit
45c7f03035
@ -82,52 +82,47 @@ MSH_CMD_EXPORT(version, show RT-Thread version information);
|
|||||||
|
|
||||||
extern struct rt_object_information rt_object_container[];
|
extern struct rt_object_information rt_object_container[];
|
||||||
|
|
||||||
|
static int object_name_maxlen(struct rt_list_node *list)
|
||||||
|
{
|
||||||
|
struct rt_list_node *node;
|
||||||
|
struct rt_object *object = NULL;
|
||||||
|
int max_length = 0, length;
|
||||||
|
|
||||||
|
rt_enter_critical();
|
||||||
|
for (node = list->next; node != list; node = node->next)
|
||||||
|
{
|
||||||
|
object = rt_list_entry(node, struct rt_object, list);
|
||||||
|
|
||||||
|
length = rt_strlen(object->name);
|
||||||
|
if (length > max_length) max_length = length;
|
||||||
|
}
|
||||||
|
rt_exit_critical();
|
||||||
|
|
||||||
|
if (max_length > RT_NAME_MAX || max_length == 0) max_length = RT_NAME_MAX;
|
||||||
|
|
||||||
|
return max_length;
|
||||||
|
}
|
||||||
|
|
||||||
|
rt_inline void object_split(int len)
|
||||||
|
{
|
||||||
|
while (len--) rt_kprintf("-");
|
||||||
|
}
|
||||||
|
|
||||||
static long _list_thread(struct rt_list_node *list)
|
static long _list_thread(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
|
rt_uint8_t *ptr;
|
||||||
struct rt_thread *thread;
|
struct rt_thread *thread;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
rt_uint8_t *ptr, cur_max_name_len = 0, cur_thread_name_len;
|
|
||||||
char thread_header[RT_NAME_MAX], thread_split[RT_NAME_MAX];
|
|
||||||
const char * thread_str = "thread";
|
|
||||||
rt_size_t i, thread_str_len = rt_strlen(thread_str), thread_str_index;
|
|
||||||
|
|
||||||
/* calculate the maximum thread name length */
|
maxlen = object_name_maxlen(list);
|
||||||
for (node = list->next; node != list; node = node->next) {
|
|
||||||
thread = rt_list_entry(node, struct rt_thread, list);
|
|
||||||
cur_thread_name_len = rt_strlen(thread->name);
|
|
||||||
if(cur_max_name_len < cur_thread_name_len) {
|
|
||||||
cur_max_name_len = cur_thread_name_len;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (cur_max_name_len < thread_str_len) {
|
rt_kprintf("%-*.s pri status sp stack size max used left tick error\n", maxlen, "thread"); object_split(maxlen);
|
||||||
cur_max_name_len = thread_str_len;
|
rt_kprintf( " -- ------- ---------- ---------- ------ ---------- ---\n");
|
||||||
}
|
|
||||||
/* calculate the "thread" string in header index */
|
|
||||||
thread_str_index = (cur_max_name_len - thread_str_len) / 2;
|
|
||||||
|
|
||||||
for (i = 0; i < cur_max_name_len; i ++) {
|
|
||||||
thread_split[i] = '-';
|
|
||||||
if (thread_str_len < cur_max_name_len) {
|
|
||||||
if (i < thread_str_index) {
|
|
||||||
thread_header[i] = ' ';
|
|
||||||
thread_header[cur_max_name_len - i - 1] = ' ';
|
|
||||||
} else if (i < thread_str_index + thread_str_len) {
|
|
||||||
thread_header[i] = thread_str[i - thread_str_index];
|
|
||||||
} else {
|
|
||||||
thread_header[i] = ' ';
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
thread_header[cur_max_name_len] = '\0';
|
|
||||||
thread_split[cur_max_name_len] = '\0';
|
|
||||||
|
|
||||||
rt_kprintf("%s pri status sp stack size max used left tick error\n", thread_header);
|
|
||||||
rt_kprintf("%s -- ------- ---------- ---------- --- ---------- ---\n", thread_split);
|
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
thread = rt_list_entry(node, struct rt_thread, list);
|
thread = rt_list_entry(node, struct rt_thread, list);
|
||||||
rt_kprintf("%-*.*s %02d ", cur_max_name_len, cur_max_name_len, thread->name, thread->current_priority);
|
rt_kprintf("%-*.*s %02d ", maxlen, RT_NAME_MAX, thread->name, thread->current_priority);
|
||||||
|
|
||||||
if (thread->stat == RT_THREAD_READY) rt_kprintf(" ready ");
|
if (thread->stat == RT_THREAD_READY) rt_kprintf(" ready ");
|
||||||
else if (thread->stat == RT_THREAD_SUSPEND) rt_kprintf(" suspend");
|
else if (thread->stat == RT_THREAD_SUSPEND) rt_kprintf(" suspend");
|
||||||
@ -174,18 +169,22 @@ static void show_wait_queue(struct rt_list_node *list)
|
|||||||
#ifdef RT_USING_SEMAPHORE
|
#ifdef RT_USING_SEMAPHORE
|
||||||
static long _list_sem(struct rt_list_node *list)
|
static long _list_sem(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_semaphore *sem;
|
struct rt_semaphore *sem;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("semaphore v suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- --- --------------\n");
|
if (maxlen < 9) maxlen = 9;
|
||||||
|
|
||||||
|
rt_kprintf("%-*.s v suspend thread\n", maxlen, "semaphore"); object_split(maxlen);
|
||||||
|
rt_kprintf( " --- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
sem = (struct rt_semaphore *)(rt_list_entry(node, struct rt_object, list));
|
sem = (struct rt_semaphore *)(rt_list_entry(node, struct rt_object, list));
|
||||||
if (!rt_list_isempty(&sem->parent.suspend_thread))
|
if (!rt_list_isempty(&sem->parent.suspend_thread))
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %03d %d:",
|
rt_kprintf("%-*.*s %03d %d:",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
sem->parent.parent.name,
|
sem->parent.parent.name,
|
||||||
sem->value,
|
sem->value,
|
||||||
rt_list_len(&sem->parent.suspend_thread));
|
rt_list_len(&sem->parent.suspend_thread));
|
||||||
@ -194,8 +193,8 @@ static long _list_sem(struct rt_list_node *list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %03d %d\n",
|
rt_kprintf("%-*.*s %03d %d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
sem->parent.parent.name,
|
sem->parent.parent.name,
|
||||||
sem->value,
|
sem->value,
|
||||||
rt_list_len(&sem->parent.suspend_thread));
|
rt_list_len(&sem->parent.suspend_thread));
|
||||||
@ -216,18 +215,21 @@ MSH_CMD_EXPORT(list_sem, list semaphore in system);
|
|||||||
#ifdef RT_USING_EVENT
|
#ifdef RT_USING_EVENT
|
||||||
static long _list_event(struct rt_list_node *list)
|
static long _list_event(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_event *e;
|
struct rt_event *e;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("event set suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---------- --------------\n");
|
|
||||||
|
rt_kprintf("%-*.s set suspend thread\n", maxlen, "event"); object_split(maxlen);
|
||||||
|
rt_kprintf(" ---------- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
e = (struct rt_event *)(rt_list_entry(node, struct rt_object, list));
|
e = (struct rt_event *)(rt_list_entry(node, struct rt_object, list));
|
||||||
if (!rt_list_isempty(&e->parent.suspend_thread))
|
if (!rt_list_isempty(&e->parent.suspend_thread))
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s 0x%08x %03d:",
|
rt_kprintf("%-*.*s 0x%08x %03d:",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
e->parent.parent.name,
|
e->parent.parent.name,
|
||||||
e->set,
|
e->set,
|
||||||
rt_list_len(&e->parent.suspend_thread));
|
rt_list_len(&e->parent.suspend_thread));
|
||||||
@ -236,8 +238,8 @@ static long _list_event(struct rt_list_node *list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s 0x%08x 0\n",
|
rt_kprintf("%-*.*s 0x%08x 0\n",
|
||||||
RT_NAME_MAX, e->parent.parent.name, e->set);
|
maxlen, RT_NAME_MAX, e->parent.parent.name, e->set);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -255,16 +257,18 @@ MSH_CMD_EXPORT(list_event, list event in system);
|
|||||||
#ifdef RT_USING_MUTEX
|
#ifdef RT_USING_MUTEX
|
||||||
static long _list_mutex(struct rt_list_node *list)
|
static long _list_mutex(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_mutex *m;
|
struct rt_mutex *m;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("mutex owner hold suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- -------- ---- --------------\n");
|
rt_kprintf("%-*.s owner hold suspend thread\n", maxlen, "mutex"); object_split(maxlen);
|
||||||
|
rt_kprintf( " -------- ---- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
m = (struct rt_mutex *)(rt_list_entry(node, struct rt_object, list));
|
m = (struct rt_mutex *)(rt_list_entry(node, struct rt_object, list));
|
||||||
rt_kprintf("%-8.*s %-8.*s %04d %d\n",
|
rt_kprintf("%-*.*s %-8.*s %04d %d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
m->parent.parent.name,
|
m->parent.parent.name,
|
||||||
RT_NAME_MAX,
|
RT_NAME_MAX,
|
||||||
m->owner->name,
|
m->owner->name,
|
||||||
@ -286,18 +290,21 @@ MSH_CMD_EXPORT(list_mutex, list mutex in system);
|
|||||||
#ifdef RT_USING_MAILBOX
|
#ifdef RT_USING_MAILBOX
|
||||||
static long _list_mailbox(struct rt_list_node *list)
|
static long _list_mailbox(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_mailbox *m;
|
struct rt_mailbox *m;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("mailbox entry size suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---- ---- --------------\n");
|
|
||||||
|
rt_kprintf("%-*.s entry size suspend thread\n", maxlen, "mailbox"); object_split(maxlen);
|
||||||
|
rt_kprintf( " ---- ---- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
m = (struct rt_mailbox *)(rt_list_entry(node, struct rt_object, list));
|
m = (struct rt_mailbox *)(rt_list_entry(node, struct rt_object, list));
|
||||||
if (!rt_list_isempty(&m->parent.suspend_thread))
|
if (!rt_list_isempty(&m->parent.suspend_thread))
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %04d %d:",
|
rt_kprintf("%-*.*s %04d %04d %d:",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
m->parent.parent.name,
|
m->parent.parent.name,
|
||||||
m->entry,
|
m->entry,
|
||||||
m->size,
|
m->size,
|
||||||
@ -307,8 +314,8 @@ static long _list_mailbox(struct rt_list_node *list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %04d %d\n",
|
rt_kprintf("%-*.*s %04d %04d %d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
m->parent.parent.name,
|
m->parent.parent.name,
|
||||||
m->entry,
|
m->entry,
|
||||||
m->size,
|
m->size,
|
||||||
@ -330,18 +337,21 @@ MSH_CMD_EXPORT(list_mailbox, list mail box in system);
|
|||||||
#ifdef RT_USING_MESSAGEQUEUE
|
#ifdef RT_USING_MESSAGEQUEUE
|
||||||
static long _list_msgqueue(struct rt_list_node *list)
|
static long _list_msgqueue(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_messagequeue *m;
|
struct rt_messagequeue *m;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("msgqueue entry suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---- --------------\n");
|
|
||||||
|
rt_kprintf("%-*.s entry suspend thread\n", maxlen, "msgqueue"); object_split(maxlen);
|
||||||
|
rt_kprintf( " ---- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
m = (struct rt_messagequeue *)(rt_list_entry(node, struct rt_object, list));
|
m = (struct rt_messagequeue *)(rt_list_entry(node, struct rt_object, list));
|
||||||
if (!rt_list_isempty(&m->parent.suspend_thread))
|
if (!rt_list_isempty(&m->parent.suspend_thread))
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %d:",
|
rt_kprintf("%-*.*s %04d %d:",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
m->parent.parent.name,
|
m->parent.parent.name,
|
||||||
m->entry,
|
m->entry,
|
||||||
rt_list_len(&m->parent.suspend_thread));
|
rt_list_len(&m->parent.suspend_thread));
|
||||||
@ -350,8 +360,8 @@ static long _list_msgqueue(struct rt_list_node *list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %d\n",
|
rt_kprintf("%-*.*s %04d %d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
m->parent.parent.name,
|
m->parent.parent.name,
|
||||||
m->entry,
|
m->entry,
|
||||||
rt_list_len(&m->parent.suspend_thread));
|
rt_list_len(&m->parent.suspend_thread));
|
||||||
@ -372,17 +382,20 @@ MSH_CMD_EXPORT(list_msgqueue, list message queue in system);
|
|||||||
#ifdef RT_USING_MEMHEAP
|
#ifdef RT_USING_MEMHEAP
|
||||||
static long _list_memheap(struct rt_list_node *list)
|
static long _list_memheap(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_memheap *mh;
|
struct rt_memheap *mh;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("memheap pool size max used size available size\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---------- ------------- --------------\n");
|
|
||||||
|
rt_kprintf("%-*.s pool size max used size available size\n", maxlen, "memheap"); object_split(maxlen);
|
||||||
|
rt_kprintf( " ---------- ------------- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
mh = (struct rt_memheap *)rt_list_entry(node, struct rt_object, list);
|
mh = (struct rt_memheap *)rt_list_entry(node, struct rt_object, list);
|
||||||
|
|
||||||
rt_kprintf("%-8.*s %-010d %-013d %-05d\n",
|
rt_kprintf("%-*.*s %-010d %-013d %-05d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
mh->parent.name,
|
mh->parent.name,
|
||||||
mh->pool_size,
|
mh->pool_size,
|
||||||
mh->max_used_size,
|
mh->max_used_size,
|
||||||
@ -403,18 +416,21 @@ MSH_CMD_EXPORT(list_memheap, list memory heap in system);
|
|||||||
#ifdef RT_USING_MEMPOOL
|
#ifdef RT_USING_MEMPOOL
|
||||||
static long _list_mempool(struct rt_list_node *list)
|
static long _list_mempool(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_mempool *mp;
|
struct rt_mempool *mp;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("mempool block total free suspend thread\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---- ---- ---- --------------\n");
|
|
||||||
|
rt_kprintf("%-*.s block total free suspend thread\n", maxlen, "mempool"); object_split(maxlen);
|
||||||
|
rt_kprintf( " ---- ---- ---- --------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
mp = (struct rt_mempool *)rt_list_entry(node, struct rt_object, list);
|
mp = (struct rt_mempool *)rt_list_entry(node, struct rt_object, list);
|
||||||
if (mp->suspend_thread_count > 0)
|
if (mp->suspend_thread_count > 0)
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %04d %04d %d:",
|
rt_kprintf("%-*.*s %04d %04d %04d %d:",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
mp->parent.name,
|
mp->parent.name,
|
||||||
mp->block_size,
|
mp->block_size,
|
||||||
mp->block_total_count,
|
mp->block_total_count,
|
||||||
@ -425,8 +441,8 @@ static long _list_mempool(struct rt_list_node *list)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
rt_kprintf("%-8.*s %04d %04d %04d %d\n",
|
rt_kprintf("%-*.*s %04d %04d %04d %d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
mp->parent.name,
|
mp->parent.name,
|
||||||
mp->block_size,
|
mp->block_size,
|
||||||
mp->block_total_count,
|
mp->block_total_count,
|
||||||
@ -448,16 +464,19 @@ MSH_CMD_EXPORT(list_mempool, list memory pool in system);
|
|||||||
|
|
||||||
static long _list_timer(struct rt_list_node *list)
|
static long _list_timer(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_timer *timer;
|
struct rt_timer *timer;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
|
|
||||||
rt_kprintf("timer periodic timeout flag\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- ---------- ---------- -----------\n");
|
|
||||||
|
rt_kprintf("%-*.s periodic timeout flag\n", maxlen, "timer"); object_split(maxlen);
|
||||||
|
rt_kprintf( " ---------- ---------- -----------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
timer = (struct rt_timer *)(rt_list_entry(node, struct rt_object, list));
|
timer = (struct rt_timer *)(rt_list_entry(node, struct rt_object, list));
|
||||||
rt_kprintf("%-8.*s 0x%08x 0x%08x ",
|
rt_kprintf("%-*.*s 0x%08x 0x%08x ",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
timer->parent.name,
|
timer->parent.name,
|
||||||
timer->init_tick,
|
timer->init_tick,
|
||||||
timer->timeout_tick);
|
timer->timeout_tick);
|
||||||
@ -482,6 +501,7 @@ MSH_CMD_EXPORT(list_timer, list timer in system);
|
|||||||
#ifdef RT_USING_DEVICE
|
#ifdef RT_USING_DEVICE
|
||||||
static long _list_device(struct rt_list_node *list)
|
static long _list_device(struct rt_list_node *list)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_device *device;
|
struct rt_device *device;
|
||||||
struct rt_list_node *node;
|
struct rt_list_node *node;
|
||||||
char *const device_type_str[] =
|
char *const device_type_str[] =
|
||||||
@ -508,13 +528,15 @@ static long _list_device(struct rt_list_node *list)
|
|||||||
"Unknown"
|
"Unknown"
|
||||||
};
|
};
|
||||||
|
|
||||||
rt_kprintf("device type ref count\n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("-------- -------------------- ----------\n");
|
|
||||||
|
rt_kprintf("%-*.s type ref count\n", maxlen, "device"); object_split(maxlen);
|
||||||
|
rt_kprintf( " -------------------- ----------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
device = (struct rt_device *)(rt_list_entry(node, struct rt_object, list));
|
device = (struct rt_device *)(rt_list_entry(node, struct rt_object, list));
|
||||||
rt_kprintf("%-8.*s %-20s %-8d\n",
|
rt_kprintf("%-*.*s %-20s %-8d\n",
|
||||||
RT_NAME_MAX,
|
maxlen, RT_NAME_MAX,
|
||||||
device->parent.name,
|
device->parent.name,
|
||||||
(device->type <= RT_Device_Class_Unknown) ?
|
(device->type <= RT_Device_Class_Unknown) ?
|
||||||
device_type_str[device->type] :
|
device_type_str[device->type] :
|
||||||
@ -538,18 +560,22 @@ MSH_CMD_EXPORT(list_device, list device in system);
|
|||||||
|
|
||||||
int list_module(void)
|
int list_module(void)
|
||||||
{
|
{
|
||||||
|
int maxlen;
|
||||||
struct rt_module *module;
|
struct rt_module *module;
|
||||||
struct rt_list_node *list, *node;
|
struct rt_list_node *list, *node;
|
||||||
|
|
||||||
list = &rt_object_container[RT_Object_Class_Module].object_list;
|
list = &rt_object_container[RT_Object_Class_Module].object_list;
|
||||||
|
|
||||||
rt_kprintf("module name ref address \n");
|
maxlen = object_name_maxlen(list);
|
||||||
rt_kprintf("------------ -------- ------------\n");
|
|
||||||
|
rt_kprintf("%-*.s ref address \n", maxlen, "module"); object_split(maxlen);
|
||||||
|
rt_kprintf( " -------- ------------\n");
|
||||||
for (node = list->next; node != list; node = node->next)
|
for (node = list->next; node != list; node = node->next)
|
||||||
{
|
{
|
||||||
module = (struct rt_module *)(rt_list_entry(node, struct rt_object, list));
|
module = (struct rt_module *)(rt_list_entry(node, struct rt_object, list));
|
||||||
rt_kprintf("%-16.*s %-04d 0x%08x\n",
|
rt_kprintf("%-*.*s %-04d 0x%08x\n",
|
||||||
RT_NAME_MAX, module->parent.name, module->nref, module->module_space);
|
maxlen, RT_NAME_MAX,
|
||||||
|
module->parent.name, module->nref, module->module_space);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user