summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorWayne Lin <[email protected]>2021-05-12 18:39:35 +0800
committerWayne Lin <[email protected]>2021-05-12 18:39:35 +0800
commitf068908728afbcf2ab69b5949c286891150f3aca (patch)
treead931747ed4df603de13176697daf6cdfbbd2e98 /include
parent0e9054f7952d5e521268df3919067f62f0e2724d (diff)
parent1c823b3fc07111e3ce46d09574ff9bcda87a4d7f (diff)
Merge branch 'master' of https://github.com/RT-Thread/rt-thread into nuvoton
Diffstat (limited to 'include')
-rw-r--r--include/rtdef.h52
-rw-r--r--include/rtlibc.h2
-rw-r--r--include/rtthread.h35
3 files changed, 65 insertions, 24 deletions
diff --git a/include/rtdef.h b/include/rtdef.h
index f5a09f815b..d125c970c9 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -34,6 +34,7 @@
* 2019-12-20 Bernard change version number to v4.0.3
* 2020-08-10 Meco Man add macro for struct rt_device_ops
* 2020-10-23 Meco Man define maximum value of ipc type
+ * 2021-05-10 armink change version number to v4.0.4
*/
#ifndef __RT_DEF_H__
@@ -55,7 +56,7 @@ extern "C" {
/* RT-Thread version information */
#define RT_VERSION 4L /**< major version number */
#define RT_SUBVERSION 0L /**< minor version number */
-#define RT_REVISION 3L /**< revise version number */
+#define RT_REVISION 4L /**< revise version number */
/* RT-Thread version */
#define RTTHREAD_VERSION ((RT_VERSION * 10000) + \
@@ -193,17 +194,15 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define rt_inline static inline
#define RTT_API
#elif defined (__TASKING__)
-
#include <stdarg.h>
- #define RT_SECTION(x)
- #define RT_UNUSED
- #define RT_USED
+ #define RT_SECTION(x) __attribute__((section(x)))
+ #define RT_UNUSED __attribute__((unused))
+ #define RT_USED __attribute__((used, protect))
#define PRAGMA(x) _Pragma(#x)
- #define ALIGN(n)
- #define RT_WEAK
+ #define ALIGN(n) __attribute__((__align(n)))
+ #define RT_WEAK __attribute__((weak))
#define rt_inline static inline
#define RTT_API
-
#else
#error not supported tool chain
#endif
@@ -212,7 +211,32 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#ifdef RT_USING_COMPONENTS_INIT
typedef int (*init_fn_t)(void);
#ifdef _MSC_VER /* we do not support MS VC++ compiler */
- #define INIT_EXPORT(fn, level)
+#pragma section("rti_fn$f",read)
+ #if RT_DEBUG_INIT
+ struct rt_init_desc
+ {
+ const char* level;
+ const init_fn_t fn;
+ const char* fn_name;
+ };
+ #define INIT_EXPORT(fn, level) \
+ const char __rti_level_##fn[] = level"__rt_init_"#fn; \
+ const char __rti_##fn##_name[] = #fn; \
+ __declspec(allocate("rti_fn$f")) \
+ RT_USED const struct rt_init_desc __rt_init_msc_##fn = \
+ {__rti_level_##fn, fn, __rti_##fn##_name};
+ #else
+ struct rt_init_desc
+ {
+ const char* level;
+ const init_fn_t fn;
+ };
+ #define INIT_EXPORT(fn, level) \
+ const char __rti_level_##fn[] = level"__rt_init_"#fn; \
+ __declspec(allocate("rti_fn$f")) \
+ RT_USED const struct rt_init_desc __rt_init_msc_##fn = \
+ {__rti_level_##fn, fn };
+ #endif
#else
#if RT_DEBUG_INIT
struct rt_init_desc
@@ -939,10 +963,12 @@ enum rt_device_class_type
#define RT_DEVICE_CTRL_BLK_AUTOREFRESH 0x13 /**< block device : enter/exit auto refresh mode */
#define RT_DEVICE_CTRL_NETIF_GETMAC 0x10 /**< get mac address */
#define RT_DEVICE_CTRL_MTD_FORMAT 0x10 /**< format a MTD device */
-#define RT_DEVICE_CTRL_RTC_GET_TIME 0x10 /**< get time */
-#define RT_DEVICE_CTRL_RTC_SET_TIME 0x11 /**< set time */
-#define RT_DEVICE_CTRL_RTC_GET_ALARM 0x12 /**< get alarm */
-#define RT_DEVICE_CTRL_RTC_SET_ALARM 0x13 /**< set alarm */
+#define RT_DEVICE_CTRL_RTC_GET_TIME 0x10 /**< get second time */
+#define RT_DEVICE_CTRL_RTC_SET_TIME 0x11 /**< set second time */
+#define RT_DEVICE_CTRL_RTC_GET_TIME_US 0x12 /**< get microsecond time */
+#define RT_DEVICE_CTRL_RTC_SET_TIME_US 0x13 /**< set microsecond time */
+#define RT_DEVICE_CTRL_RTC_GET_ALARM 0x14 /**< get alarm */
+#define RT_DEVICE_CTRL_RTC_SET_ALARM 0x15 /**< set alarm */
typedef struct rt_device *rt_device_t;
diff --git a/include/rtlibc.h b/include/rtlibc.h
index 5a260d250d..50bddc6ee8 100644
--- a/include/rtlibc.h
+++ b/include/rtlibc.h
@@ -23,10 +23,12 @@
#include "libc/libc_limits.h"
#include "libc/libc_stdio.h"
+#ifndef RT_USING_LIBC
#if defined(__CC_ARM) || defined(__CLANG_ARM) || defined(__IAR_SYSTEMS_ICC__)
typedef signed long off_t;
typedef int mode_t;
#endif
+#endif
#if defined(__MINGW32__) || defined(_WIN32)
typedef signed long off_t;
diff --git a/include/rtthread.h b/include/rtthread.h
index 9bcf05820c..784b208a76 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -14,6 +14,7 @@
* 2013-06-24 Bernard add rt_kprintf re-define when not use RT_USING_CONSOLE.
* 2016-08-09 ArdaFu add new thread and interrupt hook.
* 2018-11-22 Jesven add all cpu's lock and ipi handler
+ * 2021-02-28 Meco Man add RT_KSERVICE_USING_STDLIB
*/
#ifndef __RT_THREAD_H__
@@ -437,8 +438,6 @@ rt_err_t rt_device_unregister(rt_device_t dev);
rt_device_t rt_device_create(int type, int attach_size);
void rt_device_destroy(rt_device_t device);
-rt_err_t rt_device_init_all(void);
-
rt_err_t
rt_device_set_rx_indicate(rt_device_t dev,
rt_err_t (*rx_ind)(rt_device_t dev, rt_size_t size));
@@ -517,10 +516,12 @@ void rt_components_board_init(void);
void rt_kprintf(const char *fmt, ...);
void rt_kputs(const char *str);
#endif
+
rt_int32_t rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
rt_int32_t rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args);
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_sscanf(const char *buf, const char *fmt, ...);
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
rt_device_t rt_console_set_device(const char *name);
@@ -541,23 +542,35 @@ int __rt_ffs(int value);
void *rt_memset(void *src, int c, rt_ubase_t n);
void *rt_memcpy(void *dest, const void *src, rt_ubase_t n);
+#ifndef RT_KSERVICE_USING_STDLIB
+void *rt_memmove(void *dest, const void *src, rt_ubase_t n);
+rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_ubase_t count);
+char *rt_strstr(const char *str1, const char *str2);
+rt_int32_t rt_strcasecmp(const char *a, const char *b);
+char *rt_strncpy(char *dest, const char *src, rt_ubase_t n);
rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_ubase_t count);
rt_int32_t rt_strcmp(const char *cs, const char *ct);
-rt_size_t rt_strlen(const char *src);
rt_size_t rt_strnlen(const char *s, rt_ubase_t maxlen);
+rt_size_t rt_strlen(const char *src);
+#else
+#include <string.h>
+#define rt_memmove(dest, src, n) memmove(dest, src, n)
+#define rt_memcmp(cs, ct, count) memcmp(cs, ct, count)
+#define rt_strstr(str1, str2) strstr(str1, str2)
+#define rt_strcasecmp(a, b) strcasecmp(a, b)
+#define rt_strncpy(dest, src, n) strncpy(dest, src, n)
+#define rt_strncmp(cs, ct, count) strncmp(cs, ct, count)
+#define rt_strcmp(cs, ct) strcmp(cs, ct)
+#define rt_strnlen(s, maxlen) strnlen(s, maxlen)
+#define rt_strlen(src) strlen(src)
+#endif /*RT_KSERVICE_USING_STDLIB*/
+
char *rt_strdup(const char *s);
#if defined(__CC_ARM) || defined(__CLANG_ARM)
-/* leak strdup interface */
+/* lack strdup interface */
char* strdup(const char* str);
#endif
-char *rt_strstr(const char *str1, const char *str2);
-rt_int32_t rt_sscanf(const char *buf, const char *fmt, ...);
-char *rt_strncpy(char *dest, const char *src, rt_ubase_t n);
-void *rt_memmove(void *dest, const void *src, rt_ubase_t n);
-rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_ubase_t count);
-rt_int32_t rt_strcasecmp(const char *a, const char *b);
-
void rt_show_version(void);
#ifdef RT_DEBUG