summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
Diffstat (limited to 'include')
-rw-r--r--include/rtm.h24
-rw-r--r--include/rtthread.h42
2 files changed, 51 insertions, 15 deletions
diff --git a/include/rtm.h b/include/rtm.h
new file mode 100644
index 0000000000..596d5f7f07
--- /dev/null
+++ b/include/rtm.h
@@ -0,0 +1,24 @@
+#ifndef __RTM_H__
+#define __RTM_H__
+
+#include <rtdef.h>
+
+#ifdef RT_USING_MODULE
+#define RTM_EXPORT(symbol) \
+const char __rtmsym_##symbol##_name[] = #symbol; \
+const struct rt_module_symtab __rtmsym_##symbol SECTION("RTMSymTab")= \
+{ \
+ (rt_uint32_t)&symbol, \
+ __rtmsym_##symbol##_name, \
+};
+#else
+#define RTM_EXPORT(symbol)
+#endif
+
+struct rt_module_symtab
+{
+ rt_uint32_t addr;
+ const char* name;
+};
+
+#endif
diff --git a/include/rtthread.h b/include/rtthread.h
index 9cf3e49978..b3d6621e22 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -14,6 +14,8 @@
* 2006-08-10 Bernard add version information
* 2007-01-28 Bernard rename RT_OBJECT_Class_Static to RT_Object_Class_Static
* 2007-03-03 Bernard clean up the definitions to rtdef.h
+ * 2010-04-11 yi.qiu add module feature
+
*/
#ifndef __RT_THREAD_H__
@@ -25,6 +27,16 @@
extern "C" {
#endif
+#if defined(__CC_ARM)
+#ifdef RT_USING_MODULE
+#define RTT_API __declspec(dllimport)
+#else
+#define RTT_API __declspec(dllexport)
+#endif
+#elif defined(__GNUC__)
+#define RTT_API
+#endif
+
/**
* @addtogroup KernelObject
*/
@@ -91,27 +103,27 @@ void rt_timer_timeout_sethook(void (*hook)(struct rt_timer* timer));
/*
* thread interface
*/
-rt_err_t rt_thread_init(struct rt_thread* thread,
+RTT_API rt_err_t rt_thread_init(struct rt_thread* thread,
const char* name,
void (*entry)(void* parameter), void* parameter,
void* stack_start, rt_uint32_t stack_size,
rt_uint8_t priority, rt_uint32_t tick);
-rt_err_t rt_thread_detach(rt_thread_t thread);
-rt_thread_t rt_thread_create (const char* name,
+RTT_API rt_err_t rt_thread_detach(rt_thread_t thread);
+RTT_API rt_thread_t rt_thread_create (const char* name,
void (*entry)(void* parameter), void* parameter,
rt_uint32_t stack_size,
rt_uint8_t priority, rt_uint32_t tick);
-rt_thread_t rt_thread_self(void);
-rt_thread_t rt_thread_find(char* name);
-rt_err_t rt_thread_startup(rt_thread_t thread);
-rt_err_t rt_thread_delete(rt_thread_t thread);
+RTT_API rt_thread_t rt_thread_self(void);
+RTT_API rt_thread_t rt_thread_find(char* name);
+RTT_API rt_err_t rt_thread_startup(rt_thread_t thread);
+RTT_API rt_err_t rt_thread_delete(rt_thread_t thread);
-rt_err_t rt_thread_yield(void);
-rt_err_t rt_thread_delay(rt_tick_t tick);
-rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg);
-rt_err_t rt_thread_suspend(rt_thread_t thread);
-rt_err_t rt_thread_resume(rt_thread_t thread);
-void rt_thread_timeout(void* parameter);
+RTT_API rt_err_t rt_thread_yield(void);
+RTT_API rt_err_t rt_thread_delay(rt_tick_t tick);
+RTT_API rt_err_t rt_thread_control(rt_thread_t thread, rt_uint8_t cmd, void* arg);
+RTT_API rt_err_t rt_thread_suspend(rt_thread_t thread);
+RTT_API rt_err_t rt_thread_resume(rt_thread_t thread);
+RTT_API void rt_thread_timeout(void* parameter);
/*
* idle thread interface
@@ -312,8 +324,8 @@ void rt_interrupt_leave(void);
rt_int32_t rt_sprintf(char *buf ,const char *format,...);
rt_int32_t rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
rt_int32_t rt_sprintf(char *buf ,const char *format,...);
-rt_int32_t rt_snprintf(char *buf, rt_size_t size, const char *format, ...);
-
+rt_int32_t rt_snprintf(char *buf, rt_size_t size, const char *format, ...);
+
rt_device_t rt_console_set_device(const char* name);
void rt_kprintf(const char *fmt, ...);