summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--bsp/simulator/SConstruct3
-rw-r--r--components/finsh/cmd.c19
-rw-r--r--components/finsh/finsh.h7
-rw-r--r--components/finsh/finsh_vm.c9
-rw-r--r--examples/kernel/tc_comm.c4
5 files changed, 17 insertions, 25 deletions
diff --git a/bsp/simulator/SConstruct b/bsp/simulator/SConstruct
index c58b6c1acb..513a5a41ed 100644
--- a/bsp/simulator/SConstruct
+++ b/bsp/simulator/SConstruct
@@ -75,6 +75,9 @@ if GetDepend('RT_USING_RTGUI'):
objs = objs + SConscript(RTT_ROOT + '/examples/gui/SConscript',
variant_dir='build/examples/gui', duplicate=0)
+if GetDepend('RT_USING_TC'):
+ objs = objs + SConscript(RTT_ROOT + '/examples/kernel/SConscript', variant_dir = 'build/tc/kernel', duplicate=0)
+
# build program
program = env.Program(TARGET, objs)
diff --git a/components/finsh/cmd.c b/components/finsh/cmd.c
index 632577404e..4ebbfc62d6 100644
--- a/components/finsh/cmd.c
+++ b/components/finsh/cmd.c
@@ -32,21 +32,6 @@
#include <rtthread.h>
#include "finsh.h"
-#if defined(_MSC_VER)
-static struct finsh_syscall* _next_syscall(struct finsh_syscall* call)
-{
- unsigned int *ptr;
- ptr = (unsigned int*) (call + 1);
- while ((*ptr == 0) && ((unsigned int*)ptr < (unsigned int*) _syscall_table_end))
- ptr ++;
-
- return (struct finsh_syscall*)ptr;
-}
-#define _NEXT_SYSCALl(index) index=_next_syscall(index)
-#else
-#define _NEXT_SYSCALl(index) index++
-#endif
-
rt_inline unsigned int rt_list_len(const rt_list_t *l)
{
@@ -564,7 +549,7 @@ long list(void)
rt_kprintf("--Function List:\n");
{
struct finsh_syscall *index;
- for (index = _syscall_table_begin; index < _syscall_table_end; _NEXT_SYSCALl(index))
+ for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
{
#ifdef FINSH_USING_DESCRIPTION
rt_kprintf("%-16s -- %s\n", index->name, index->desc);
@@ -649,7 +634,7 @@ void list_prefix(char *prefix)
/* checks in system function call */
{
struct finsh_syscall* index;
- for (index = _syscall_table_begin; index < _syscall_table_end; _NEXT_SYSCALl(index))
+ for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
{
if (str_is_prefix(prefix, index->name) == 0)
{
diff --git a/components/finsh/finsh.h b/components/finsh/finsh.h
index 0ada00ea03..994509bd64 100644
--- a/components/finsh/finsh.h
+++ b/components/finsh/finsh.h
@@ -148,6 +148,13 @@ struct finsh_sysvar
void* var ; /* the address of variable */
};
+#if defined(_MSC_VER)
+struct finsh_syscall* finsh_syscall_next(struct finsh_syscall* call);
+#define FINSH_NEXT_SYSCALL(index) index=finsh_syscall_next(index)
+#else
+#define FINSH_NEXT_SYSCALL(index) index++
+#endif
+
/* system variable item */
struct finsh_sysvar_item
{
diff --git a/components/finsh/finsh_vm.c b/components/finsh/finsh_vm.c
index c5b6dcf632..845eb48919 100644
--- a/components/finsh/finsh_vm.c
+++ b/components/finsh/finsh_vm.c
@@ -83,8 +83,8 @@ void finsh_syscall_append(const char* name, syscall_func func)
}
#endif
-#if defined(_MSC_VER)
-static struct finsh_syscall* _next_syscall(struct finsh_syscall* call)
+#ifdef _MSC_VER
+struct finsh_syscall* finsh_syscall_next(struct finsh_syscall* call)
{
unsigned int *ptr;
ptr = (unsigned int*) (call + 1);
@@ -93,9 +93,6 @@ static struct finsh_syscall* _next_syscall(struct finsh_syscall* call)
return (struct finsh_syscall*)ptr;
}
-#define _NEXT_SYSCALL(index) index=_next_syscall(index)
-#else
-#define _NEXT_SYSCALL(index) index++
#endif
struct finsh_syscall* finsh_syscall_lookup(const char* name)
@@ -103,7 +100,7 @@ struct finsh_syscall* finsh_syscall_lookup(const char* name)
struct finsh_syscall* index;
struct finsh_syscall_item* item;
- for (index = _syscall_table_begin; index < _syscall_table_end; _NEXT_SYSCALL(index))
+ for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
{
if (strcmp(index->name, name) == 0)
return index;
diff --git a/examples/kernel/tc_comm.c b/examples/kernel/tc_comm.c
index 008be9b746..1ec48f5398 100644
--- a/examples/kernel/tc_comm.c
+++ b/examples/kernel/tc_comm.c
@@ -27,7 +27,7 @@ void tc_thread_entry(void* parameter)
while (_tc_stat & TC_STAT_RUNNING)
{
- for (index = _syscall_table_begin; index < _syscall_table_end; index ++)
+ for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
{
/* search testcase */
if (rt_strstr(index->name, _tc_prefix) == index->name)
@@ -158,7 +158,7 @@ void list_tc()
struct finsh_syscall* index;
rt_kprintf("TestCases List:\n");
- for (index = _syscall_table_begin; index < _syscall_table_end; index ++)
+ for (index = _syscall_table_begin; index < _syscall_table_end; FINSH_NEXT_SYSCALL(index))
{
/* search testcase */
if (rt_strstr(index->name, "_tc_") == index->name)