Skip to content

Commit e81978c

Browse files
committed
[kernel] move std libc related to rtklibc.h
1 parent e25f287 commit e81978c

File tree

8 files changed

+1280
-1188
lines changed

8 files changed

+1280
-1188
lines changed

include/rtklibc.h

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/*
2+
* Copyright (c) 2006-2024, RT-Thread Development Team
3+
*
4+
* SPDX-License-Identifier: Apache-2.0
5+
*
6+
* Change Logs:
7+
* Date Author Notes
8+
* 2024-03-10 Meco Man the first version
9+
*/
10+
11+
#ifndef __RT_KLIBC_H__
12+
#define __RT_KLIBC_H__
13+
14+
#include <rtconfig.h>
15+
#include <rtdef.h>
16+
17+
#ifdef __cplusplus
18+
extern "C" {
19+
#endif
20+
21+
/* kstdio */
22+
23+
int rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
24+
int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args);
25+
int rt_sprintf(char *buf, const char *format, ...);
26+
int rt_snprintf(char *buf, rt_size_t size, const char *format, ...);
27+
28+
/* kstring */
29+
30+
#ifndef RT_KSERVICE_USING_STDLIB_MEMORY
31+
void *rt_memset(void *src, int c, rt_ubase_t n);
32+
void *rt_memcpy(void *dest, const void *src, rt_ubase_t n);
33+
void *rt_memmove(void *dest, const void *src, rt_size_t n);
34+
rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_size_t count);
35+
#endif /* RT_KSERVICE_USING_STDLIB_MEMORY */
36+
char *rt_strdup(const char *s);
37+
rt_size_t rt_strnlen(const char *s, rt_ubase_t maxlen);
38+
#ifndef RT_KSERVICE_USING_STDLIB
39+
char *rt_strstr(const char *str1, const char *str2);
40+
rt_int32_t rt_strcasecmp(const char *a, const char *b);
41+
char *rt_strcpy(char *dst, const char *src);
42+
char *rt_strncpy(char *dest, const char *src, rt_size_t n);
43+
rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_size_t count);
44+
rt_int32_t rt_strcmp(const char *cs, const char *ct);
45+
rt_size_t rt_strlen(const char *src);
46+
#else
47+
#include <string.h>
48+
#ifdef RT_KSERVICE_USING_STDLIB_MEMORY
49+
#define rt_memset(s, c, count) memset(s, c, count)
50+
#define rt_memcpy(dst, src, count) memcpy(dst, src, count)
51+
#define rt_memmove(dest, src, n) memmove(dest, src, n)
52+
#define rt_memcmp(cs, ct, count) memcmp(cs, ct, count)
53+
#endif /* RT_KSERVICE_USING_STDLIB_MEMORY */
54+
#define rt_strstr(str1, str2) strstr(str1, str2)
55+
#define rt_strcasecmp(a, b) strcasecmp(a, b)
56+
#define rt_strcpy(dest, src) strcpy(dest, src)
57+
#define rt_strncpy(dest, src, n) strncpy(dest, src, n)
58+
#define rt_strncmp(cs, ct, count) strncmp(cs, ct, count)
59+
#define rt_strcmp(cs, ct) strcmp(cs, ct)
60+
#define rt_strlen(src) strlen(src)
61+
#endif /*RT_KSERVICE_USING_STDLIB*/
62+
63+
#ifdef __cplusplus
64+
}
65+
#endif
66+
67+
#endif /* __RT_KLIBC_H__ */

include/rtsched.h

+8
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
#include "rttypes.h"
1515
#include "rtcompiler.h"
1616

17+
#ifdef __cplusplus
18+
extern "C" {
19+
#endif
20+
1721
struct rt_thread;
1822

1923
typedef rt_uint8_t rt_sched_thread_status_t;
@@ -169,4 +173,8 @@ void rt_sched_remove_thread(struct rt_thread *thread);
169173

170174
#endif /* defined(__RT_KERNEL_SOURCE__) || defined(__RT_IPC_SOURCE__) */
171175

176+
#ifdef __cplusplus
177+
}
178+
#endif
179+
172180
#endif /* __RT_SCHED_H__ */

include/rtthread.h

+2-38
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
* 2023-10-16 Shell Support a new backtrace framework
2323
* 2023-12-10 xqyjlj fix spinlock in up
2424
* 2024-01-25 Shell Add rt_susp_list for IPC primitives
25+
* 2024-03-10 Meco Man move std libc related functions to rtklibc
2526
*/
2627

2728
#ifndef __RT_THREAD_H__
@@ -32,6 +33,7 @@
3233
#include <rtservice.h>
3334
#include <rtm.h>
3435
#include <rtatomic.h>
36+
#include <rtklibc.h>
3537
#ifdef RT_USING_LEGACY
3638
#include <rtlegacy.h>
3739
#endif
@@ -736,11 +738,6 @@ rt_err_t rt_backtrace(void);
736738
rt_err_t rt_backtrace_thread(rt_thread_t thread);
737739
rt_err_t rt_backtrace_frame(struct rt_hw_backtrace_frame *frame);
738740

739-
int rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
740-
int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args);
741-
int rt_sprintf(char *buf, const char *format, ...);
742-
int rt_snprintf(char *buf, rt_size_t size, const char *format, ...);
743-
744741
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
745742
rt_device_t rt_console_set_device(const char *name);
746743
rt_device_t rt_console_get_device(void);
@@ -763,39 +760,6 @@ const char *rt_strerror(rt_err_t error);
763760

764761
int __rt_ffs(int value);
765762

766-
#ifndef RT_KSERVICE_USING_STDLIB_MEMORY
767-
void *rt_memset(void *src, int c, rt_ubase_t n);
768-
void *rt_memcpy(void *dest, const void *src, rt_ubase_t n);
769-
void *rt_memmove(void *dest, const void *src, rt_size_t n);
770-
rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_size_t count);
771-
#endif /* RT_KSERVICE_USING_STDLIB_MEMORY */
772-
char *rt_strdup(const char *s);
773-
rt_size_t rt_strnlen(const char *s, rt_ubase_t maxlen);
774-
#ifndef RT_KSERVICE_USING_STDLIB
775-
char *rt_strstr(const char *str1, const char *str2);
776-
rt_int32_t rt_strcasecmp(const char *a, const char *b);
777-
char *rt_strcpy(char *dst, const char *src);
778-
char *rt_strncpy(char *dest, const char *src, rt_size_t n);
779-
rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_size_t count);
780-
rt_int32_t rt_strcmp(const char *cs, const char *ct);
781-
rt_size_t rt_strlen(const char *src);
782-
#else
783-
#include <string.h>
784-
#ifdef RT_KSERVICE_USING_STDLIB_MEMORY
785-
#define rt_memset(s, c, count) memset(s, c, count)
786-
#define rt_memcpy(dst, src, count) memcpy(dst, src, count)
787-
#define rt_memmove(dest, src, n) memmove(dest, src, n)
788-
#define rt_memcmp(cs, ct, count) memcmp(cs, ct, count)
789-
#endif /* RT_KSERVICE_USING_STDLIB_MEMORY */
790-
#define rt_strstr(str1, str2) strstr(str1, str2)
791-
#define rt_strcasecmp(a, b) strcasecmp(a, b)
792-
#define rt_strcpy(dest, src) strcpy(dest, src)
793-
#define rt_strncpy(dest, src, n) strncpy(dest, src, n)
794-
#define rt_strncmp(cs, ct, count) strncmp(cs, ct, count)
795-
#define rt_strcmp(cs, ct) strcmp(cs, ct)
796-
#define rt_strlen(src) strlen(src)
797-
#endif /*RT_KSERVICE_USING_STDLIB*/
798-
799763
void rt_show_version(void);
800764

801765
#ifdef RT_USING_DEBUG

include/rttypes.h

+8
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,10 @@
2424
#endif /* defined(RT_USING_SIGNALS) || defined(RT_USING_SMART) */
2525
#endif /* RT_USING_NANO */
2626

27+
#ifdef __cplusplus
28+
extern "C" {
29+
#endif
30+
2731
/**
2832
* RT-Thread basic data types definition
2933
*/
@@ -220,4 +224,8 @@ typedef struct rt_spinlock rt_spinlock_t;
220224

221225
#define RT_DEFINE_SPINLOCK(x) struct rt_spinlock x = RT_SPINLOCK_INIT
222226

227+
#ifdef __cplusplus
228+
}
229+
#endif
230+
223231
#endif /* __RT_TYPES_H__ */

src/SConscript

+1
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ from building import *
22
import os
33

44
src = Glob('*.c')
5+
src += Glob('klibc/*.c')
56
cwd = GetCurrentDir()
67
inc = [os.path.join(cwd, '..', 'include')]
78

0 commit comments

Comments
 (0)