mirror of
https://github.com/RT-Thread/rt-thread.git
synced 2026-06-12 20:24:15 +08:00
[libc] remove RT_USING_LIBC
This commit is contained in:
@@ -31,7 +31,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_RTC
|
||||
choice
|
||||
|
||||
@@ -37,7 +37,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_RTC
|
||||
choice
|
||||
|
||||
@@ -204,7 +204,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
config RTC_USING_INTERNAL_CLK
|
||||
|
||||
@@ -918,7 +918,6 @@ GD32 BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和
|
||||
- 系统空闲线程栈大小统一设置为 256(宏:IDLE_THREAD_STACK_SIZE)
|
||||
- 开启组件自动初始化(宏:RT_USING_COMPONENTS_INIT)
|
||||
- 需要开启 user main 选项(宏:RT_USING_USER_MAIN)
|
||||
- 默认关闭 libc(宏:RT_USING_LIBC)
|
||||
- FinSH 默认只使用 MSH 模式(宏:FINSH_USING_MSH_ONLY)
|
||||
|
||||
#### 4.1.3 IDE 配置
|
||||
|
||||
@@ -219,7 +219,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
if BSP_USING_RTC
|
||||
|
||||
@@ -31,7 +31,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_RTC
|
||||
choice
|
||||
|
||||
@@ -137,7 +137,6 @@ menu "On-chip Peripheral Drivers"
|
||||
select RT_USING_SDIO
|
||||
select RT_USING_DFS
|
||||
select RT_USING_DFS_ELMFAT
|
||||
select RT_LIBC_USING_TIME
|
||||
default y
|
||||
|
||||
config BSP_USING_RTC
|
||||
|
||||
@@ -84,7 +84,6 @@ menu "On-chip Peripheral Drivers"
|
||||
config BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
endmenu
|
||||
|
||||
@@ -390,7 +390,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
config NRFX_CLOCK_ENABLED
|
||||
|
||||
@@ -374,7 +374,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
|
||||
|
||||
@@ -221,7 +221,6 @@ The specifications of making STM32 BSP are mainly divided into three aspects: en
|
||||
- The system idle thread stack size is uniformly set to 256 (Macro: IDLE_THREAD_STACK_SIZE)
|
||||
- Turn on automatic component initialization (Macro: RT_USING_COMPONENTS_INIT)
|
||||
- Need to enable the user main option (Macro: RT_USING_USER_MAIN)
|
||||
- Disable libc by default (Macro: RT_USING_LIBC)
|
||||
- FinSH only uses MSH mode by default (Macro: FINSH_USING_MSH_ONLY)
|
||||
|
||||
#### 4.1.3 IDE configuration
|
||||
|
||||
@@ -269,7 +269,6 @@ STM32 BSP 的制作规范主要分为 3 个方面:工程配置,ENV 配置和
|
||||
- 系统空闲线程栈大小统一设置为 256(宏:IDLE_THREAD_STACK_SIZE)
|
||||
- 开启组件自动初始化(宏:RT_USING_COMPONENTS_INIT)
|
||||
- 需要开启 user main 选项(宏:RT_USING_USER_MAIN)
|
||||
- 默认关闭 libc(宏:RT_USING_LIBC)
|
||||
- FinSH 默认只使用 MSH 模式(宏:FINSH_USING_MSH_ONLY)
|
||||
|
||||
#### 4.1.3 IDE 配置
|
||||
|
||||
@@ -187,7 +187,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -143,7 +143,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -151,7 +151,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -162,7 +162,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -193,7 +193,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -148,7 +148,6 @@ menu "Onboard Peripheral Drivers"
|
||||
select RT_USING_WIFI
|
||||
select RT_WLAN_PROT_LWIP_PBUF_FORCE
|
||||
select RT_USING_LWIP
|
||||
select RT_USING_LIBC
|
||||
select RT_USING_DFS
|
||||
select DFS_USING_POSIX
|
||||
select PKG_USING_FAL
|
||||
|
||||
@@ -236,7 +236,6 @@ menu "On-chip Peripheral Drivers"
|
||||
config BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_SPI
|
||||
|
||||
@@ -236,7 +236,6 @@ menu "On-chip Peripheral Drivers"
|
||||
config BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
menuconfig BSP_USING_SPI
|
||||
|
||||
@@ -167,7 +167,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
|
||||
if BSP_USING_RTC
|
||||
|
||||
@@ -283,7 +283,6 @@ menu "On-chip Peripheral Drivers"
|
||||
menuconfig BSP_USING_ONCHIP_RTC
|
||||
bool "Enable RTC"
|
||||
select RT_USING_RTC
|
||||
select RT_USING_LIBC
|
||||
default n
|
||||
if BSP_USING_ONCHIP_RTC
|
||||
choice
|
||||
|
||||
@@ -9,8 +9,8 @@ if RT_USING_CPLUSPLUS
|
||||
config RT_USING_CPLUSPLUS11
|
||||
bool "Enable c++11 threading feature support"
|
||||
default n
|
||||
select RT_USING_LIBC
|
||||
select RT_LIBC_USING_FILEIO
|
||||
select RT_USING_POSIX_FS
|
||||
select RT_USING_POSIX_DEVIO
|
||||
select RT_USING_PTHREADS
|
||||
select RT_USING_RTC
|
||||
|
||||
|
||||
@@ -11,8 +11,6 @@ Because RT-Thread RTOS is used in embedded system mostly, there are some rules f
|
||||
4. Static class variables are discouraged. The time and place to call their constructor function could not be precisely controlled and make multi-threaded programming a nightmare.
|
||||
5. Multiple inheritance is strongly discouraged, as it can cause intolerable confusion.
|
||||
|
||||
*NOTE*: The libc (RT_USING_LIBC in rtconfig.h) must be enable.
|
||||
|
||||
About GNU GCC compiler
|
||||
|
||||
please add following string in your ld link script:
|
||||
|
||||
@@ -95,8 +95,8 @@ extern "C" unsigned __ARM_TPL_thread_hw_concurrency()
|
||||
extern "C" int __ARM_TPL_tls_create(__ARM_TPL_tls_key *__key,
|
||||
void (*__at_exit)(void *))
|
||||
{
|
||||
pthread_key_t key;
|
||||
|
||||
pthread_key_t key;
|
||||
|
||||
if (pthread_key_create(&key, __at_exit) == 0)
|
||||
{
|
||||
*__key = key;
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#error "C++ version lower than C++11"
|
||||
#endif
|
||||
|
||||
//#if defined(RT_USING_LIBC) && defined(RT_USING_PTHREADS)
|
||||
//#if defined(RT_USING_PTHREADS)
|
||||
|
||||
#include <pthread.h>
|
||||
|
||||
@@ -509,4 +509,4 @@ namespace std
|
||||
}
|
||||
}
|
||||
|
||||
//#endif // (RT_USING_LIBC) && (RT_USING_PTHREADS)
|
||||
//#endif //(RT_USING_PTHREADS)
|
||||
@@ -34,7 +34,7 @@ namespace std
|
||||
get_once_functor_lock_ptr() = m_ptr;
|
||||
}
|
||||
|
||||
extern "C"
|
||||
extern "C"
|
||||
{
|
||||
void once_proxy()
|
||||
{
|
||||
@@ -42,7 +42,7 @@ namespace std
|
||||
function<void()> once_call = std::move(once_functor);
|
||||
|
||||
// no need to hold the lock anymore
|
||||
unique_lock<mutex>* lock_ptr = get_once_functor_lock_ptr();
|
||||
unique_lock<mutex>* lock_ptr = get_once_functor_lock_ptr();
|
||||
get_once_functor_lock_ptr() = nullptr;
|
||||
lock_ptr->unlock();
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
#error "C++ version lower than C++11"
|
||||
#endif
|
||||
|
||||
//#if defined(RT_USING_LIBC) && defined(RT_USING_PTHREADS)
|
||||
//#if defined(RT_USING_PTHREADS)
|
||||
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
|
||||
@@ -35,17 +35,17 @@ namespace std
|
||||
{
|
||||
auto raw_ptr = b.get();
|
||||
// transfer the ownership of the invoker to the new thread
|
||||
raw_ptr->this_ptr = std::move(b);
|
||||
raw_ptr->this_ptr = std::move(b);
|
||||
int err = pthread_create(&_m_thr.__cpp_thread_t, NULL,
|
||||
&execute_native_thread_routine, raw_ptr);
|
||||
|
||||
if (err)
|
||||
if (err)
|
||||
{
|
||||
raw_ptr->this_ptr.reset();
|
||||
throw_system_error(err, "Failed to create a thread");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
thread::~thread()
|
||||
{
|
||||
@@ -59,12 +59,12 @@ namespace std
|
||||
|
||||
if (joinable())
|
||||
err = pthread_join(native_handle(), NULL);
|
||||
|
||||
if (err)
|
||||
|
||||
if (err)
|
||||
{
|
||||
throw_system_error(err, "thread::join failed");
|
||||
}
|
||||
|
||||
|
||||
_m_thr = id();
|
||||
}
|
||||
|
||||
@@ -78,14 +78,14 @@ namespace std
|
||||
{
|
||||
throw_system_error(err, "thread::detach failed");
|
||||
}
|
||||
|
||||
|
||||
_m_thr = id();
|
||||
}
|
||||
|
||||
// TODO: not yet actually implemented.
|
||||
// The standard states that the returned value should only be considered a hint.
|
||||
unsigned thread::hardware_concurrency() noexcept
|
||||
{
|
||||
unsigned thread::hardware_concurrency() noexcept
|
||||
{
|
||||
int __n = _RT_NPROCS;
|
||||
if (__n < 0)
|
||||
__n = 0;
|
||||
|
||||
@@ -945,7 +945,6 @@ DWORD get_fattime(void)
|
||||
{
|
||||
DWORD fat_time = 0;
|
||||
|
||||
#if defined(RT_LIBC_USING_TIME) || defined(RT_USING_LIBC)
|
||||
time_t now;
|
||||
struct tm *p_tm;
|
||||
struct tm tm_now;
|
||||
@@ -968,7 +967,6 @@ DWORD get_fattime(void)
|
||||
(DWORD)tm_now.tm_hour << 11 |
|
||||
(DWORD)tm_now.tm_min << 5 |
|
||||
(DWORD)tm_now.tm_sec / 2 ;
|
||||
#endif /* defined(RT_LIBC_USING_TIME) || defined(RT_USING_LIBC) */
|
||||
|
||||
return fat_time;
|
||||
}
|
||||
|
||||
+5
-27
@@ -1,38 +1,16 @@
|
||||
menu "POSIX layer and C standard library"
|
||||
|
||||
config RT_USING_LIBC
|
||||
bool "Enable libc APIs from the toolchain"
|
||||
config RT_USING_MODULE
|
||||
bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
|
||||
default n
|
||||
|
||||
if RT_USING_LIBC
|
||||
config RT_LIBC_USING_TIME
|
||||
default y
|
||||
|
||||
config RT_LIBC_USING_FILEIO
|
||||
bool "Enable libc with file operation, eg.fopen/fwrite/fread/getchar/STDIO"
|
||||
select RT_USING_POSIX_FS
|
||||
select RT_USING_POSIX_DEVIO
|
||||
if RT_USING_MODULE
|
||||
config RT_USING_CUSTOM_DLMODULE
|
||||
bool "Enable load dynamic module by custom"
|
||||
default n
|
||||
|
||||
config RT_USING_MODULE
|
||||
bool "Enable dynamic module with dlopen/dlsym/dlclose feature"
|
||||
default n
|
||||
|
||||
if RT_USING_MODULE
|
||||
config RT_USING_CUSTOM_DLMODULE
|
||||
bool "Enable load dynamic module by custom"
|
||||
default n
|
||||
endif
|
||||
endif
|
||||
|
||||
if RT_USING_LIBC != y
|
||||
config RT_LIBC_USING_TIME
|
||||
bool "Enable time functions without compiler's libc"
|
||||
default y
|
||||
endif
|
||||
|
||||
config RT_LIBC_DEFAULT_TIMEZONE
|
||||
depends on (RT_LIBC_USING_TIME || RT_USING_LIBC)
|
||||
int "Set the default time zone (UTC+)"
|
||||
range -12 12
|
||||
default 8
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
# ARMLIB (Keil-MDK) porting for RT-Thread
|
||||
|
||||
Please define RT_USING_LIBC and compile RT-Thread with Keil-MDK compiler.
|
||||
|
||||
|
||||
|
||||
## More Information
|
||||
|
||||
https://www.keil.com/support/man/docs/armlib/
|
||||
@@ -7,6 +7,6 @@ group = []
|
||||
CPPDEFINES = ['RT_USING_ARM_LIBC']
|
||||
|
||||
if rtconfig.PLATFORM == 'armcc' or rtconfig.PLATFORM == 'armclang':
|
||||
group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPDEFINES = CPPDEFINES)
|
||||
group = DefineGroup('compiler-libc', src, depend = [], CPPDEFINES = CPPDEFINES)
|
||||
|
||||
Return('group')
|
||||
|
||||
+1
-1
@@ -13,7 +13,7 @@
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef RT_USING_HEAP
|
||||
#define DBG_TAG "armlibc.mem"
|
||||
#define DBG_TAG "armlibc.syscall.mem"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/stat.h>
|
||||
#include <compiler_private.h>
|
||||
#ifdef RT_USING_POSIX_DEVIO
|
||||
#include "libc.h"
|
||||
#endif /* RT_USING_POSIX_DEVIO */
|
||||
@@ -69,6 +70,7 @@ FILEHANDLE _sys_open(const char *name, int openmode)
|
||||
return (STDERR);
|
||||
|
||||
#ifndef DFS_USING_POSIX
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0; /* error */
|
||||
#else
|
||||
/* Correct openmode from fopen to open */
|
||||
@@ -113,6 +115,7 @@ int _sys_close(FILEHANDLE fh)
|
||||
|
||||
return close(fh);
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -152,12 +155,13 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
|
||||
#ifdef RT_USING_POSIX_DEVIO
|
||||
if (libc_stdio_get_console() < 0)
|
||||
{
|
||||
LOG_W("Do not invoke standard output before initializing libc");
|
||||
LOG_W("Do not invoke standard output before initializing compiler-libc");
|
||||
return 0; /* error, but keep going */
|
||||
}
|
||||
size = read(STDIN_FILENO, buf, len);
|
||||
return len - size; /* success */
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_devio);
|
||||
return 0; /* error */
|
||||
#endif /* RT_USING_POSIX_DEVIO */
|
||||
}
|
||||
@@ -178,6 +182,7 @@ int _sys_read(FILEHANDLE fh, unsigned char *buf, unsigned len, int mode)
|
||||
}
|
||||
}
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0; /* error */
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -228,6 +233,7 @@ int _sys_write(FILEHANDLE fh, const unsigned char *buf, unsigned len, int mode)
|
||||
return 0; /* error */
|
||||
}
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0; /* error */
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -246,6 +252,7 @@ int _sys_seek(FILEHANDLE fh, long pos)
|
||||
/* position is relative to the start of file fh */
|
||||
return lseek(fh, pos, 0);
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0; /* error */
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -301,6 +308,7 @@ long _sys_flen(FILEHANDLE fh)
|
||||
fstat(fh, &stat);
|
||||
return stat.st_size;
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -318,6 +326,7 @@ int remove(const char *filename)
|
||||
#ifdef DFS_USING_POSIX
|
||||
return unlink(filename);
|
||||
#else
|
||||
LOG_W("%s: %s", __func__, warning_without_fs);
|
||||
return 0; /* error */
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
@@ -345,13 +354,14 @@ int fgetc(FILE *f)
|
||||
|
||||
if (libc_stdio_get_console() < 0)
|
||||
{
|
||||
LOG_W("Do not invoke standard output before initializing libc");
|
||||
LOG_W("Do not invoke standard output before initializing compiler-libc");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if(read(STDIN_FILENO, &ch, 1) == 1)
|
||||
return ch;
|
||||
#endif /* RT_USING_POSIX_DEVIO */
|
||||
LOG_W("%s: %s", __func__, warning_without_devio);
|
||||
return 0; /* error */
|
||||
}
|
||||
|
||||
|
||||
@@ -10,12 +10,9 @@ CPPDEFINES = []
|
||||
if rtconfig.CROSS_TOOL == 'keil':
|
||||
CPPDEFINES += ['__CLK_TCK=RT_TICK_PER_SECOND']
|
||||
|
||||
if GetDepend('RT_USING_LIBC'):
|
||||
src += Glob('*.c')
|
||||
elif GetDepend('RT_LIBC_USING_TIME'):
|
||||
src += ['time.c']
|
||||
src += Glob('*.c')
|
||||
|
||||
group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
|
||||
group = DefineGroup('compiler-libc', src, depend = [], CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
|
||||
|
||||
list = os.listdir(cwd)
|
||||
for item in list:
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2021-12-26 Meco Man First Version
|
||||
*/
|
||||
#include "compiler_private.h"
|
||||
|
||||
const char *warning_without_fs = "Please enable RT_USING_POSIX_FS";
|
||||
const char *warning_without_devio = "Please enable RT_USING_POSIX_FS and RT_USING_POSIX_DEVIO";
|
||||
@@ -0,0 +1,18 @@
|
||||
/*
|
||||
* Copyright (c) 2006-2021, RT-Thread Development Team
|
||||
*
|
||||
* SPDX-License-Identifier: Apache-2.0
|
||||
*
|
||||
* Change Logs:
|
||||
* Date Author Notes
|
||||
* 2021-12-26 Meco Man First Version
|
||||
*/
|
||||
#ifndef __COMPILER_PRIVATE_H__
|
||||
#define __COMPILER_PRIVATE_H__
|
||||
|
||||
#include <rtconfig.h>
|
||||
|
||||
extern const char *warning_without_fs;
|
||||
extern const char *warning_without_devio;
|
||||
|
||||
#endif /* __COMPILER_PRIVATE_H__ */
|
||||
@@ -7,9 +7,8 @@ cwd = GetCurrentDir()
|
||||
CPPPATH = [cwd]
|
||||
group = []
|
||||
|
||||
if GetDepend('RT_USING_LIBC'):
|
||||
src += Glob('*.c')
|
||||
src += Glob('*.c')
|
||||
|
||||
if rtconfig.PLATFORM != 'gcc' or rtconfig.ARCH == 'sim':
|
||||
group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH)
|
||||
group = DefineGroup('compiler-libc', src, depend = [], CPPPATH = CPPPATH)
|
||||
Return('group')
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
#include <sys/errno.h>
|
||||
#include <rtthread.h>
|
||||
#include <rthw.h>
|
||||
#ifdef RT_USING_DEVICE
|
||||
#ifdef RT_USING_RTC
|
||||
#include <rtdevice.h>
|
||||
#endif
|
||||
|
||||
@@ -33,6 +33,8 @@
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
#define WARNING_NO_RTC "Cannot find a RTC device!"
|
||||
|
||||
/* seconds per day */
|
||||
#define SPD 24*60*60
|
||||
|
||||
@@ -108,7 +110,7 @@ static rt_err_t get_timeval(struct timeval *tv)
|
||||
else
|
||||
{
|
||||
/* LOG_W will cause a recursive printing if ulog timestamp function is enabled */
|
||||
rt_kprintf("Cannot find a RTC device to provide time!\r\n");
|
||||
rt_kprintf(WARNING_NO_RTC);
|
||||
return -RT_ENOSYS;
|
||||
}
|
||||
|
||||
@@ -116,7 +118,7 @@ static rt_err_t get_timeval(struct timeval *tv)
|
||||
|
||||
#else
|
||||
/* LOG_W will cause a recursive printing if ulog timestamp function is enabled */
|
||||
rt_kprintf("Cannot find a RTC device to provide time!\r\n");
|
||||
rt_kprintf(WARNING_NO_RTC);
|
||||
return -RT_ENOSYS;
|
||||
#endif /* RT_USING_RTC */
|
||||
}
|
||||
@@ -153,14 +155,14 @@ static int set_timeval(struct timeval *tv)
|
||||
}
|
||||
else
|
||||
{
|
||||
LOG_W("Cannot find a RTC device to provide time!");
|
||||
LOG_W(WARNING_NO_RTC);
|
||||
return -RT_ENOSYS;
|
||||
}
|
||||
|
||||
return rst;
|
||||
|
||||
#else
|
||||
LOG_W("Cannot find a RTC device to provide time!");
|
||||
LOG_W(WARNING_NO_RTC);
|
||||
return -RT_ENOSYS;
|
||||
#endif /* RT_USING_RTC */
|
||||
}
|
||||
@@ -525,7 +527,7 @@ INIT_COMPONENT_EXPORT(_rt_clock_time_system_init);
|
||||
int clock_getres(clockid_t clockid, struct timespec *res)
|
||||
{
|
||||
#ifndef RT_USING_RTC
|
||||
LOG_W("Cannot find a RTC device to save time!");
|
||||
LOG_W(WARNING_NO_RTC);
|
||||
return -1;
|
||||
#else
|
||||
int ret = 0;
|
||||
@@ -564,7 +566,7 @@ RTM_EXPORT(clock_getres);
|
||||
int clock_gettime(clockid_t clockid, struct timespec *tp)
|
||||
{
|
||||
#ifndef RT_USING_RTC
|
||||
LOG_W("Cannot find a RTC device to save time!");
|
||||
LOG_W(WARNING_NO_RTC);
|
||||
return -1;
|
||||
#else
|
||||
int ret = 0;
|
||||
@@ -628,7 +630,7 @@ int clock_nanosleep(clockid_t clockid, int flags, const struct timespec *rqtp, s
|
||||
int clock_settime(clockid_t clockid, const struct timespec *tp)
|
||||
{
|
||||
#ifndef RT_USING_RTC
|
||||
LOG_W("Cannot find a RTC device to save time!");
|
||||
LOG_W(WARNING_NO_RTC);
|
||||
return -1;
|
||||
#else
|
||||
register rt_base_t level;
|
||||
|
||||
@@ -1,9 +1,3 @@
|
||||
# DLIB (IAR) porting for RT-Thread
|
||||
|
||||
Please define RT_USING_LIBC and compile RT-Thread with IAR compiler.
|
||||
|
||||
|
||||
|
||||
## More Information
|
||||
|
||||
http://www.iarsys.co.jp/download/LMS2/arm/7502/ewarm7502doc/arm/doc/EWARM_DevelopmentGuide.ENU.pdf P.130
|
||||
@@ -15,6 +15,6 @@ if rtconfig.PLATFORM == 'iar':
|
||||
if LooseVersion(IARVersion()) < LooseVersion("8.20.1"):
|
||||
CPPDEFINES = CPPDEFINES + ['_DLIB_THREAD_SUPPORT']
|
||||
|
||||
group = DefineGroup('libc', src, depend = ['RT_USING_LIBC'], CPPDEFINES = CPPDEFINES)
|
||||
group = DefineGroup('compiler-libc', src, depend = [], CPPDEFINES = CPPDEFINES)
|
||||
|
||||
Return('group')
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
#include <rtthread.h>
|
||||
#include <LowLevelIOInterface.h>
|
||||
#include <unistd.h>
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.close"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
/*
|
||||
* The "__close" function should close the file corresponding to
|
||||
@@ -27,6 +31,7 @@ int __close(int handle)
|
||||
#ifdef DFS_USING_POSIX
|
||||
return close(handle);
|
||||
#else
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
#include <rtthread.h>
|
||||
#include <LowLevelIOInterface.h>
|
||||
#include <unistd.h>
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.lseek"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
/*
|
||||
* The "__lseek" function makes the next file operation (__read or
|
||||
@@ -36,6 +40,7 @@ long __lseek(int handle, long offset, int whence)
|
||||
#ifdef DFS_USING_POSIX
|
||||
return lseek(handle, offset, whence);
|
||||
#else
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
#include <stddef.h>
|
||||
|
||||
#ifndef RT_USING_HEAP
|
||||
#define DBG_TAG "dlib.syscall_mem"
|
||||
#define DBG_TAG "dlib.syscall.mem"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
#define _NO_HEAP_ERROR() do{LOG_E("Please enable RT_USING_HEAP");\
|
||||
|
||||
@@ -11,6 +11,10 @@
|
||||
#include <rtthread.h>
|
||||
#include <LowLevelIOInterface.h>
|
||||
#include <fcntl.h>
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.open"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
/*
|
||||
* The "__open" function opens the file named "filename" as specified
|
||||
@@ -22,56 +26,58 @@
|
||||
int __open(const char *filename, int mode)
|
||||
{
|
||||
#ifdef DFS_USING_POSIX
|
||||
int handle;
|
||||
int open_mode = O_RDONLY;
|
||||
int handle;
|
||||
int open_mode = O_RDONLY;
|
||||
|
||||
if (mode & _LLIO_CREAT)
|
||||
{
|
||||
open_mode |= O_CREAT;
|
||||
|
||||
/* Check what we should do with it if it exists. */
|
||||
if (mode & _LLIO_APPEND)
|
||||
if (mode & _LLIO_CREAT)
|
||||
{
|
||||
/* Append to the existing file. */
|
||||
open_mode |= O_APPEND;
|
||||
open_mode |= O_CREAT;
|
||||
|
||||
/* Check what we should do with it if it exists. */
|
||||
if (mode & _LLIO_APPEND)
|
||||
{
|
||||
/* Append to the existing file. */
|
||||
open_mode |= O_APPEND;
|
||||
}
|
||||
|
||||
if (mode & _LLIO_TRUNC)
|
||||
{
|
||||
/* Truncate the existsing file. */
|
||||
open_mode |= O_TRUNC;
|
||||
}
|
||||
}
|
||||
|
||||
if (mode & _LLIO_TRUNC)
|
||||
if (mode & _LLIO_TEXT)
|
||||
{
|
||||
/* Truncate the existsing file. */
|
||||
open_mode |= O_TRUNC;
|
||||
/* we didn't support text mode */
|
||||
}
|
||||
}
|
||||
|
||||
if (mode & _LLIO_TEXT)
|
||||
{
|
||||
/* we didn't support text mode */
|
||||
}
|
||||
switch (mode & _LLIO_RDWRMASK)
|
||||
{
|
||||
case _LLIO_RDONLY:
|
||||
break;
|
||||
|
||||
switch (mode & _LLIO_RDWRMASK)
|
||||
{
|
||||
case _LLIO_RDONLY:
|
||||
break;
|
||||
case _LLIO_WRONLY:
|
||||
open_mode |= O_WRONLY;
|
||||
break;
|
||||
|
||||
case _LLIO_WRONLY:
|
||||
open_mode |= O_WRONLY;
|
||||
break;
|
||||
case _LLIO_RDWR:
|
||||
/* The file should be opened for both reads and writes. */
|
||||
open_mode |= O_RDWR;
|
||||
break;
|
||||
|
||||
case _LLIO_RDWR:
|
||||
/* The file should be opened for both reads and writes. */
|
||||
open_mode |= O_RDWR;
|
||||
break;
|
||||
default:
|
||||
return _LLIO_ERROR;
|
||||
}
|
||||
|
||||
default:
|
||||
return _LLIO_ERROR;
|
||||
}
|
||||
|
||||
handle = open(filename, open_mode, 0);
|
||||
if (handle < 0)
|
||||
return _LLIO_ERROR;
|
||||
|
||||
return handle;
|
||||
handle = open(filename, open_mode, 0);
|
||||
if (handle < 0)
|
||||
{
|
||||
return _LLIO_ERROR;
|
||||
}
|
||||
return handle;
|
||||
#else
|
||||
return _LLIO_ERROR;
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -14,8 +14,8 @@
|
||||
#ifdef RT_USING_POSIX_DEVIO
|
||||
#include "libc.h"
|
||||
#endif /* RT_USING_POSIX_DEVIO */
|
||||
|
||||
#define DBG_TAG "dlib.syscall_read"
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.read"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
@@ -42,11 +42,12 @@ size_t __read(int handle, unsigned char *buf, size_t len)
|
||||
#ifdef RT_USING_POSIX_DEVIO
|
||||
if (libc_stdio_get_console() < 0)
|
||||
{
|
||||
LOG_W("Do not invoke standard input before initializing libc");
|
||||
LOG_W("Do not invoke standard input before initializing compiler-libc");
|
||||
return 0; /* error, but keep going */
|
||||
}
|
||||
return read(STDIN_FILENO, buf, len); /* return the length of the data read */
|
||||
#else
|
||||
LOG_W(warning_without_devio);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* RT_USING_POSIX_DEVIO */
|
||||
}
|
||||
@@ -58,6 +59,7 @@ size_t __read(int handle, unsigned char *buf, size_t len)
|
||||
size = read(handle, buf, len);
|
||||
return size; /* return the length of the data read */
|
||||
#else
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -10,6 +10,10 @@
|
||||
#include <rtthread.h>
|
||||
#include <LowLevelIOInterface.h>
|
||||
#include <unistd.h>
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.remove"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
/*
|
||||
* The "remove" function should remove the file named "filename". It
|
||||
@@ -23,6 +27,7 @@ int remove(const char *filename)
|
||||
#ifdef DFS_USING_POSIX
|
||||
return unlink(filename);
|
||||
#else
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
#include <rtthread.h>
|
||||
#include <LowLevelIOInterface.h>
|
||||
#include <unistd.h>
|
||||
#define DBG_TAG "dlib.syscall_write"
|
||||
#include <compiler_private.h>
|
||||
#define DBG_TAG "dlib.syscall.write"
|
||||
#define DBG_LVL DBG_INFO
|
||||
#include <rtdbg.h>
|
||||
|
||||
@@ -63,6 +64,7 @@ size_t __write(int handle, const unsigned char *buf, size_t len)
|
||||
size = write(handle, buf, len);
|
||||
return size; /* return the length of the data written */
|
||||
#else
|
||||
LOG_W(warning_without_fs);
|
||||
return _LLIO_ERROR;
|
||||
#endif /* DFS_USING_POSIX */
|
||||
}
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
# NEWLIB (GCC) porting for RT-Thread
|
||||
|
||||
Please define RT_USING_LIBC and compile RT-Thread with GCC compiler.
|
||||
|
||||
|
||||
|
||||
## More Information
|
||||
|
||||
https://sourceware.org/newlib/libc.html#Reentrancy
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user