summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorWBI\nxf44444 <[email protected]>2022-01-26 01:43:05 +0800
committerWBI\nxf44444 <[email protected]>2022-01-26 01:43:05 +0800
commit8b0f50b7e211ee32ab08ba085ecd74588c3a3c63 (patch)
tree75440be5ecd30cc1403a9387851c0530ed057981 /include
parent3be35fecae513b07c35bd6f3992bf7824434bdd6 (diff)
parent32a5668593c578b85560338c29d76f3a252c8dbc (diff)
Update i2c driver, add read ACK and BUS status check
Diffstat (limited to 'include')
-rw-r--r--include/libc/libc_dirent.h14
-rw-r--r--include/libc/libc_errno.h206
-rw-r--r--include/libc/libc_fcntl.h98
-rw-r--r--include/libc/libc_fdset.h60
-rw-r--r--include/libc/libc_ioctl.h229
-rw-r--r--include/libc/libc_limits.h25
-rw-r--r--include/libc/libc_signal.h184
-rw-r--r--include/libc/libc_stat.h107
-rw-r--r--include/libc/libc_stdio.h22
-rw-r--r--include/rtdbg.h4
-rw-r--r--include/rtdebug.h23
-rw-r--r--include/rtdef.h206
-rw-r--r--include/rthw.h4
-rw-r--r--include/rtlibc.h37
-rw-r--r--include/rtm.h9
-rw-r--r--include/rtservice.h2
-rw-r--r--include/rtthread.h145
17 files changed, 275 insertions, 1100 deletions
diff --git a/include/libc/libc_dirent.h b/include/libc/libc_dirent.h
deleted file mode 100644
index c3a19878ec..0000000000
--- a/include/libc/libc_dirent.h
+++ /dev/null
@@ -1,14 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef LIBC_DIRENT_H__
-#define LIBC_DIRENT_H__
-
-#define DT_UNKNOWN 0x00
-#define DT_REG 0x01
-#define DT_DIR 0x02
-
-#endif
diff --git a/include/libc/libc_errno.h b/include/libc/libc_errno.h
deleted file mode 100644
index 9143c841f2..0000000000
--- a/include/libc/libc_errno.h
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2016-11-12 Bernard The first version
- */
-
-#ifndef LIBC_ERRNO_H__
-#define LIBC_ERRNO_H__
-
-#include <rtconfig.h>
-
-#if defined(RT_USING_NEWLIB) || defined(_WIN32) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
-/* use errno.h file in toolchains */
-#include <errno.h>
-#endif
-
-#if defined(__CC_ARM)
-/*
-defined in armcc/errno.h
-
-#define EDOM 1
-#define ERANGE 2
-#define EILSEQ 4
-#define ESIGNUM 3
-#define EINVAL 5
-#define ENOMEM 6
-*/
-#define ERROR_BASE_NO 7
-
-#elif defined(__IAR_SYSTEMS_ICC__)
-/* defined in iar/errno.h
-#define EDOM 33
-#define ERANGE 34
-#define EFPOS 35
-#define EILSEQ 36
-*/
-#define ERROR_BASE_NO 36
-
-#else
-
-#define ERROR_BASE_NO 0
-#endif
-
-#if !defined(RT_USING_NEWLIB) && !defined(_WIN32) && !(defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
-
-#define EPERM (ERROR_BASE_NO + 1)
-#define ENOENT (ERROR_BASE_NO + 2)
-#define ESRCH (ERROR_BASE_NO + 3)
-#define EINTR (ERROR_BASE_NO + 4)
-#define EIO (ERROR_BASE_NO + 5)
-#define ENXIO (ERROR_BASE_NO + 6)
-#define E2BIG (ERROR_BASE_NO + 7)
-#define ENOEXEC (ERROR_BASE_NO + 8)
-#define EBADF (ERROR_BASE_NO + 9)
-#define ECHILD (ERROR_BASE_NO + 10)
-#define EAGAIN (ERROR_BASE_NO + 11)
-
-#ifndef ENOMEM
-#define ENOMEM (ERROR_BASE_NO + 12)
-#endif
-
-#define EACCES (ERROR_BASE_NO + 13)
-#define EFAULT (ERROR_BASE_NO + 14)
-#define ENOTBLK (ERROR_BASE_NO + 15)
-#define EBUSY (ERROR_BASE_NO + 16)
-#define EEXIST (ERROR_BASE_NO + 17)
-#define EXDEV (ERROR_BASE_NO + 18)
-#define ENODEV (ERROR_BASE_NO + 19)
-#define ENOTDIR (ERROR_BASE_NO + 20)
-#define EISDIR (ERROR_BASE_NO + 21)
-
-#ifndef EINVAL
-#define EINVAL (ERROR_BASE_NO + 22)
-#endif
-
-#define ENFILE (ERROR_BASE_NO + 23)
-#define EMFILE (ERROR_BASE_NO + 24)
-#define ENOTTY (ERROR_BASE_NO + 25)
-#define ETXTBSY (ERROR_BASE_NO + 26)
-#define EFBIG (ERROR_BASE_NO + 27)
-#define ENOSPC (ERROR_BASE_NO + 28)
-#define ESPIPE (ERROR_BASE_NO + 29)
-#define EROFS (ERROR_BASE_NO + 30)
-#define EMLINK (ERROR_BASE_NO + 31)
-#define EPIPE (ERROR_BASE_NO + 32)
-
-#ifndef EDOM
-#define EDOM (ERROR_BASE_NO + 33)
-#endif
-
-#ifndef ERANGE
-#define ERANGE (ERROR_BASE_NO + 34)
-#endif
-
-#define EDEADLK (ERROR_BASE_NO + 35)
-#define ENAMETOOLONG (ERROR_BASE_NO + 36)
-#define ENOLCK (ERROR_BASE_NO + 37)
-#define ENOSYS (ERROR_BASE_NO + 38)
-#define ENOTEMPTY (ERROR_BASE_NO + 39)
-#define ELOOP (ERROR_BASE_NO + 40)
-#define EWOULDBLOCK EAGAIN
-#define ENOMSG (ERROR_BASE_NO + 42)
-#define EIDRM (ERROR_BASE_NO + 43)
-#define ECHRNG (ERROR_BASE_NO + 44)
-#define EL2NSYNC (ERROR_BASE_NO + 45)
-#define EL3HLT (ERROR_BASE_NO + 46)
-#define EL3RST (ERROR_BASE_NO + 47)
-#define ELNRNG (ERROR_BASE_NO + 48)
-#define EUNATCH (ERROR_BASE_NO + 49)
-#define ENOCSI (ERROR_BASE_NO + 50)
-#define EL2HLT (ERROR_BASE_NO + 51)
-#define EBADE (ERROR_BASE_NO + 52)
-#define EBADR (ERROR_BASE_NO + 53)
-#define EXFULL (ERROR_BASE_NO + 54)
-#define ENOANO (ERROR_BASE_NO + 55)
-#define EBADRQC (ERROR_BASE_NO + 56)
-#define EBADSLT (ERROR_BASE_NO + 57)
-#define EDEADLOCK EDEADLK
-#define EBFONT (ERROR_BASE_NO + 59)
-#define ENOSTR (ERROR_BASE_NO + 60)
-#define ENODATA (ERROR_BASE_NO + 61)
-#define ETIME (ERROR_BASE_NO + 62)
-#define ENOSR (ERROR_BASE_NO + 63)
-#define ENONET (ERROR_BASE_NO + 64)
-#define ENOPKG (ERROR_BASE_NO + 65)
-#define EREMOTE (ERROR_BASE_NO + 66)
-#define ENOLINK (ERROR_BASE_NO + 67)
-#define EADV (ERROR_BASE_NO + 68)
-#define ESRMNT (ERROR_BASE_NO + 69)
-#define ECOMM (ERROR_BASE_NO + 70)
-#define EPROTO (ERROR_BASE_NO + 71)
-#define EMULTIHOP (ERROR_BASE_NO + 72)
-#define EDOTDOT (ERROR_BASE_NO + 73)
-#define EBADMSG (ERROR_BASE_NO + 74)
-#define EOVERFLOW (ERROR_BASE_NO + 75)
-#define ENOTUNIQ (ERROR_BASE_NO + 76)
-#define EBADFD (ERROR_BASE_NO + 77)
-#define EREMCHG (ERROR_BASE_NO + 78)
-#define ELIBACC (ERROR_BASE_NO + 79)
-#define ELIBBAD (ERROR_BASE_NO + 80)
-#define ELIBSCN (ERROR_BASE_NO + 81)
-#define ELIBMAX (ERROR_BASE_NO + 82)
-#define ELIBEXEC (ERROR_BASE_NO + 83)
-
-#ifndef EILSEQ
-#define EILSEQ (ERROR_BASE_NO + 84)
-#endif
-
-#define ERESTART (ERROR_BASE_NO + 85)
-#define ESTRPIPE (ERROR_BASE_NO + 86)
-#define EUSERS (ERROR_BASE_NO + 87)
-#define ENOTSOCK (ERROR_BASE_NO + 88)
-#define EDESTADDRREQ (ERROR_BASE_NO + 89)
-#define EMSGSIZE (ERROR_BASE_NO + 90)
-#define EPROTOTYPE (ERROR_BASE_NO + 91)
-#define ENOPROTOOPT (ERROR_BASE_NO + 92)
-#define EPROTONOSUPPORT (ERROR_BASE_NO + 93)
-#define ESOCKTNOSUPPORT (ERROR_BASE_NO + 94)
-#define EOPNOTSUPP (ERROR_BASE_NO + 95)
-#define ENOTSUP EOPNOTSUPP
-#define EPFNOSUPPORT (ERROR_BASE_NO + 96)
-#define EAFNOSUPPORT (ERROR_BASE_NO + 97)
-#define EADDRINUSE (ERROR_BASE_NO + 98)
-#define EADDRNOTAVAIL (ERROR_BASE_NO + 99)
-#define ENETDOWN (ERROR_BASE_NO + 100)
-#define ENETUNREACH (ERROR_BASE_NO + 101)
-#define ENETRESET (ERROR_BASE_NO + 102)
-#define ECONNABORTED (ERROR_BASE_NO + 103)
-#define ECONNRESET (ERROR_BASE_NO + 104)
-#define ENOBUFS (ERROR_BASE_NO + 105)
-#define EISCONN (ERROR_BASE_NO + 106)
-#define ENOTCONN (ERROR_BASE_NO + 107)
-#define ESHUTDOWN (ERROR_BASE_NO + 108)
-#define ETOOMANYREFS (ERROR_BASE_NO + 109)
-#define ETIMEDOUT (ERROR_BASE_NO + 110)
-#define ECONNREFUSED (ERROR_BASE_NO + 111)
-#define EHOSTDOWN (ERROR_BASE_NO + 112)
-#define EHOSTUNREACH (ERROR_BASE_NO + 113)
-#define EALREADY (ERROR_BASE_NO + 114)
-#define EINPROGRESS (ERROR_BASE_NO + 115)
-#define ESTALE (ERROR_BASE_NO + 116)
-#define EUCLEAN (ERROR_BASE_NO + 117)
-#define ENOTNAM (ERROR_BASE_NO + 118)
-#define ENAVAIL (ERROR_BASE_NO + 119)
-#define EISNAM (ERROR_BASE_NO + 120)
-#define EREMOTEIO (ERROR_BASE_NO + 121)
-#define EDQUOT (ERROR_BASE_NO + 122)
-#define ENOMEDIUM (ERROR_BASE_NO + 123)
-#define EMEDIUMTYPE (ERROR_BASE_NO + 124)
-#define ECANCELED (ERROR_BASE_NO + 125)
-#define ENOKEY (ERROR_BASE_NO + 126)
-#define EKEYEXPIRED (ERROR_BASE_NO + 127)
-#define EKEYREVOKED (ERROR_BASE_NO + 128)
-#define EKEYREJECTED (ERROR_BASE_NO + 129)
-#define EOWNERDEAD (ERROR_BASE_NO + 130)
-#define ENOTRECOVERABLE (ERROR_BASE_NO + 131)
-#define ERFKILL (ERROR_BASE_NO + 132)
-#define EHWPOISON (ERROR_BASE_NO + 133)
-
-#endif
-
-#endif
diff --git a/include/libc/libc_fcntl.h b/include/libc/libc_fcntl.h
deleted file mode 100644
index d149d86964..0000000000
--- a/include/libc/libc_fcntl.h
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2018-02-07 Bernard Add O_DIRECTORY definition in NEWLIB mode.
- * 2018-02-09 Bernard Add O_BINARY definition
- */
-
-#ifndef LIBC_FCNTL_H__
-#define LIBC_FCNTL_H__
-
-#if defined(RT_USING_NEWLIB) || defined(_WIN32) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
-#include <fcntl.h>
-
-#ifndef O_NONBLOCK
-#define O_NONBLOCK 0x4000
-#endif
-
-#if defined(_WIN32)
-#define O_ACCMODE (_O_RDONLY | _O_WRONLY | _O_RDWR)
-#endif
-
-#ifndef F_GETFL
-#define F_GETFL 3
-#endif
-#ifndef F_SETFL
-#define F_SETFL 4
-#endif
-
-#ifndef O_DIRECTORY
-#define O_DIRECTORY 0x200000
-#endif
-
-#ifndef O_BINARY
-#ifdef _O_BINARY
-#define O_BINARY _O_BINARY
-#else
-#define O_BINARY 0
-#endif
-#endif
-
-#else
-#define O_RDONLY 00
-#define O_WRONLY 01
-#define O_RDWR 02
-
-#define O_CREAT 0100
-#define O_EXCL 0200
-#define O_NOCTTY 0400
-#define O_TRUNC 01000
-#define O_APPEND 02000
-#define O_NONBLOCK 04000
-#define O_DSYNC 010000
-#define O_SYNC 04010000
-#define O_RSYNC 04010000
-#define O_BINARY 0100000
-#define O_DIRECTORY 0200000
-#define O_NOFOLLOW 0400000
-#define O_CLOEXEC 02000000
-
-#define O_ASYNC 020000
-#define O_DIRECT 040000
-#define O_LARGEFILE 0100000
-#define O_NOATIME 01000000
-#define O_PATH 010000000
-#define O_TMPFILE 020200000
-#define O_NDELAY O_NONBLOCK
-
-#define O_SEARCH O_PATH
-#define O_EXEC O_PATH
-
-#define O_ACCMODE (03|O_SEARCH)
-
-#define F_DUPFD 0
-#define F_GETFD 1
-#define F_SETFD 2
-#define F_GETFL 3
-#define F_SETFL 4
-
-#define F_SETOWN 8
-#define F_GETOWN 9
-#define F_SETSIG 10
-#define F_GETSIG 11
-
-#define F_GETLK 12
-#define F_SETLK 13
-#define F_SETLKW 14
-
-#define F_SETOWN_EX 15
-#define F_GETOWN_EX 16
-
-#define F_GETOWNER_UIDS 17
-#endif
-
-#endif
diff --git a/include/libc/libc_fdset.h b/include/libc/libc_fdset.h
deleted file mode 100644
index 9700c7e83e..0000000000
--- a/include/libc/libc_fdset.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-10-30 Bernard The first version
- */
-
-#ifndef LIBC_FDSET_H__
-#define LIBC_FDSET_H__
-
-#include <rtconfig.h>
-
-#if defined(RT_USING_NEWLIB) || defined(_WIN32) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
-#include <sys/types.h>
-#if defined(HAVE_SYS_SELECT_H)
-#include <sys/select.h>
-#endif
-
-#else
-
-#ifdef SAL_USING_POSIX
-
-#ifdef FD_SETSIZE
-#undef FD_SETSIZE
-#endif
-
-#define FD_SETSIZE DFS_FD_MAX
-#endif
-
-# ifndef FD_SETSIZE
-# define FD_SETSIZE 32
-# endif
-
-# define NBBY 8 /* number of bits in a byte */
-
-typedef long fd_mask;
-# define NFDBITS (sizeof (fd_mask) * NBBY) /* bits per mask */
-# ifndef howmany
-# define howmany(x,y) (((x)+((y)-1))/(y))
-# endif
-
-/* We use a macro for fd_set so that including Sockets.h afterwards
- can work. */
-typedef struct _types_fd_set {
- fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
-} _types_fd_set;
-
-#define fd_set _types_fd_set
-
-# define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1L << ((n) % NFDBITS)))
-# define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1L << ((n) % NFDBITS)))
-# define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1L << ((n) % NFDBITS)))
-# define FD_ZERO(p) memset((void*)(p), 0, sizeof(*(p)))
-
-#endif
-
-#endif
diff --git a/include/libc/libc_ioctl.h b/include/libc/libc_ioctl.h
deleted file mode 100644
index 812a119507..0000000000
--- a/include/libc/libc_ioctl.h
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-01-21 Bernard the first version
- */
-
-#ifndef LIBC_IOCTL_H__
-#define LIBC_IOCTL_H__
-
-#define _IOC(a,b,c,d) ( ((a)<<30) | ((b)<<8) | (c) | ((d)<<16) )
-#define _IOC_NONE 0U
-#define _IOC_WRITE 1U
-#define _IOC_READ 2U
-
-#ifndef _WIN32
-#define _IO(a,b) _IOC(_IOC_NONE,(a),(b),0)
-#define _IOW(a,b,c) _IOC(_IOC_WRITE,(a),(b),sizeof(c))
-#define _IOR(a,b,c) _IOC(_IOC_READ,(a),(b),sizeof(c))
-#define _IOWR(a,b,c) _IOC(_IOC_READ|_IOC_WRITE,(a),(b),sizeof(c))
-
-#define FIONREAD _IOR('f', 127, int) /* get # bytes to read */
-#define FIONBIO _IOW('f', 126, int) /* set/clear non-blocking i/o */
-#define FIONWRITE _IOR('f', 121, int) /* get # bytes outstanding
- * in send queue. */
-#endif
-
-#define TCGETS 0x5401
-#define TCSETS 0x5402
-#define TCSETSW 0x5403
-#define TCSETSF 0x5404
-#define TCGETA 0x5405
-#define TCSETA 0x5406
-#define TCSETAW 0x5407
-#define TCSETAF 0x5408
-#define TCSBRK 0x5409
-#define TCXONC 0x540A
-#define TCFLSH 0x540B
-#define TIOCEXCL 0x540C
-#define TIOCNXCL 0x540D
-#define TIOCSCTTY 0x540E
-#define TIOCGPGRP 0x540F
-#define TIOCSPGRP 0x5410
-#define TIOCOUTQ 0x5411
-#define TIOCSTI 0x5412
-#define TIOCGWINSZ 0x5413
-#define TIOCSWINSZ 0x5414
-#define TIOCMGET 0x5415
-#define TIOCMBIS 0x5416
-#define TIOCMBIC 0x5417
-#define TIOCMSET 0x5418
-#define TIOCGSOFTCAR 0x5419
-#define TIOCSSOFTCAR 0x541A
-// #define FIONREAD 0x541B
-#define TIOCINQ FIONREAD
-#define TIOCLINUX 0x541C
-#define TIOCCONS 0x541D
-#define TIOCGSERIAL 0x541E
-#define TIOCSSERIAL 0x541F
-#define TIOCPKT 0x5420
-// #define FIONBIO 0x5421
-#define TIOCNOTTY 0x5422
-#define TIOCSETD 0x5423
-#define TIOCGETD 0x5424
-#define TCSBRKP 0x5425
-#define TIOCSBRK 0x5427
-#define TIOCCBRK 0x5428
-#define TIOCGSID 0x5429
-#define TIOCGRS485 0x542E
-#define TIOCSRS485 0x542F
-#define TIOCGPTN 0x80045430
-#define TIOCSPTLCK 0x40045431
-#define TIOCGDEV 0x80045432
-#define TCGETX 0x5432
-#define TCSETX 0x5433
-#define TCSETXF 0x5434
-#define TCSETXW 0x5435
-#define TIOCSIG 0x40045436
-#define TIOCVHANGUP 0x5437
-#define TIOCGPKT 0x80045438
-#define TIOCGPTLCK 0x80045439
-#define TIOCGEXCL 0x80045440
-
-#define FIONCLEX 0x5450
-#define FIOCLEX 0x5451
-
-#ifndef _WIN32
-#define FIOASYNC 0x5452
-#endif
-
-#define TIOCSERCONFIG 0x5453
-#define TIOCSERGWILD 0x5454
-#define TIOCSERSWILD 0x5455
-#define TIOCGLCKTRMIOS 0x5456
-#define TIOCSLCKTRMIOS 0x5457
-#define TIOCSERGSTRUCT 0x5458
-#define TIOCSERGETLSR 0x5459
-#define TIOCSERGETMULTI 0x545A
-#define TIOCSERSETMULTI 0x545B
-
-#define TIOCMIWAIT 0x545C
-#define TIOCGICOUNT 0x545D
-#define FIOQSIZE 0x5460
-
-#define TIOCPKT_DATA 0
-#define TIOCPKT_FLUSHREAD 1
-#define TIOCPKT_FLUSHWRITE 2
-#define TIOCPKT_STOP 4
-#define TIOCPKT_START 8
-#define TIOCPKT_NOSTOP 16
-#define TIOCPKT_DOSTOP 32
-#define TIOCPKT_IOCTL 64
-
-#define TIOCSER_TEMT 0x01
-
-struct winsize {
- unsigned short ws_row;
- unsigned short ws_col;
- unsigned short ws_xpixel;
- unsigned short ws_ypixel;
-};
-
-#define TIOCM_LE 0x001
-#define TIOCM_DTR 0x002
-#define TIOCM_RTS 0x004
-#define TIOCM_ST 0x008
-#define TIOCM_SR 0x010
-#define TIOCM_CTS 0x020
-#define TIOCM_CAR 0x040
-#define TIOCM_RNG 0x080
-#define TIOCM_DSR 0x100
-#define TIOCM_CD TIOCM_CAR
-#define TIOCM_RI TIOCM_RNG
-#define TIOCM_OUT1 0x2000
-#define TIOCM_OUT2 0x4000
-#define TIOCM_LOOP 0x8000
-
-#define N_TTY 0
-#define N_SLIP 1
-#define N_MOUSE 2
-#define N_PPP 3
-#define N_STRIP 4
-#define N_AX25 5
-#define N_X25 6
-#define N_6PACK 7
-#define N_MASC 8
-#define N_R3964 9
-#define N_PROFIBUS_FDL 10
-#define N_IRDA 11
-#define N_SMSBLOCK 12
-#define N_HDLC 13
-#define N_SYNC_PPP 14
-#define N_HCI 15
-
-#define FIOSETOWN 0x8901
-#define SIOCSPGRP 0x8902
-#define FIOGETOWN 0x8903
-#define SIOCGPGRP 0x8904
-// #define SIOCATMARK 0x8905
-#define SIOCGSTAMP 0x8906
-#define SIOCGSTAMPNS 0x8907
-
-#define SIOCADDRT 0x890B
-#define SIOCDELRT 0x890C
-#define SIOCRTMSG 0x890D
-
-#define SIOCGIFNAME 0x8910
-#define SIOCSIFLINK 0x8911
-#define SIOCGIFCONF 0x8912
-#define SIOCGIFFLAGS 0x8913
-#define SIOCSIFFLAGS 0x8914
-#define SIOCGIFADDR 0x8915
-#define SIOCSIFADDR 0x8916
-#define SIOCGIFDSTADDR 0x8917
-#define SIOCSIFDSTADDR 0x8918
-#define SIOCGIFBRDADDR 0x8919
-#define SIOCSIFBRDADDR 0x891a
-#define SIOCGIFNETMASK 0x891b
-#define SIOCSIFNETMASK 0x891c
-#define SIOCGIFMETRIC 0x891d
-#define SIOCSIFMETRIC 0x891e
-#define SIOCGIFMEM 0x891f
-#define SIOCSIFMEM 0x8920
-#define SIOCGIFMTU 0x8921
-#define SIOCSIFMTU 0x8922
-#define SIOCSIFNAME 0x8923
-#define SIOCSIFHWADDR 0x8924
-#define SIOCGIFENCAP 0x8925
-#define SIOCSIFENCAP 0x8926
-#define SIOCGIFHWADDR 0x8927
-#define SIOCGIFSLAVE 0x8929
-#define SIOCSIFSLAVE 0x8930
-#define SIOCADDMULTI 0x8931
-#define SIOCDELMULTI 0x8932
-#define SIOCGIFINDEX 0x8933
-#define SIOGIFINDEX SIOCGIFINDEX
-#define SIOCSIFPFLAGS 0x8934
-#define SIOCGIFPFLAGS 0x8935
-#define SIOCDIFADDR 0x8936
-#define SIOCSIFHWBROADCAST 0x8937
-#define SIOCGIFCOUNT 0x8938
-
-#define SIOCGIFBR 0x8940
-#define SIOCSIFBR 0x8941
-
-#define SIOCGIFTXQLEN 0x8942
-#define SIOCSIFTXQLEN 0x8943
-
-#define SIOCDARP 0x8953
-#define SIOCGARP 0x8954
-#define SIOCSARP 0x8955
-
-#define SIOCDRARP 0x8960
-#define SIOCGRARP 0x8961
-#define SIOCSRARP 0x8962
-
-#define SIOCGIFMAP 0x8970
-#define SIOCSIFMAP 0x8971
-
-#define SIOCADDDLCI 0x8980
-#define SIOCDELDLCI 0x8981
-
-#define SIOCDEVPRIVATE 0x89F0
-#define SIOCPROTOPRIVATE 0x89E0
-
-#endif
diff --git a/include/libc/libc_limits.h b/include/libc/libc_limits.h
deleted file mode 100644
index b8368160df..0000000000
--- a/include/libc/libc_limits.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-09-05 Meco Manthe first version
- */
-
-#ifndef LIBC_LIMITS_H__
-#define LIBC_LIMITS_H__
-
-#include <limits.h>
-#include <rtconfig.h>
-
-#ifdef RT_USING_POSIX
-
-#ifndef SSIZE_MAX
-# define SSIZE_MAX LONG_MAX
-#endif
-
-#endif
-
-#endif
diff --git a/include/libc/libc_signal.h b/include/libc/libc_signal.h
deleted file mode 100644
index 539685de3e..0000000000
--- a/include/libc/libc_signal.h
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-09-12 Bernard The first version
- */
-
-#ifndef LIBC_SIGNAL_H__
-#define LIBC_SIGNAL_H__
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-#include <stdint.h>
-#ifdef HAVE_CCONFIG_H
-#include <cconfig.h>
-#endif
-
-#ifndef HAVE_SIGVAL
-/* Signal Generation and Delivery, P1003.1b-1993, p. 63
- NOTE: P1003.1c/D10, p. 34 adds sigev_notify_function and
- sigev_notify_attributes to the sigevent structure. */
-
-union sigval
-{
- int sival_int; /* Integer signal value */
- void *sival_ptr; /* Pointer signal value */
-};
-#endif
-
-#ifndef HAVE_SIGEVENT
-struct sigevent
-{
- int sigev_notify; /* Notification type */
- int sigev_signo; /* Signal number */
- union sigval sigev_value; /* Signal value */
- void (*sigev_notify_function)( union sigval );
- /* Notification function */
- void *sigev_notify_attributes; /* Notification Attributes, really pthread_attr_t */
-};
-#endif
-
-#ifndef HAVE_SIGINFO
-struct siginfo
-{
- uint16_t si_signo;
- uint16_t si_code;
-
- union sigval si_value;
-};
-typedef struct siginfo siginfo_t;
-#endif
-
-#define SI_USER 0x01 /* Signal sent by kill(). */
-#define SI_QUEUE 0x02 /* Signal sent by sigqueue(). */
-#define SI_TIMER 0x03 /* Signal generated by expiration of a
- timer set by timer_settime(). */
-#define SI_ASYNCIO 0x04 /* Signal generated by completion of an
- asynchronous I/O request. */
-#define SI_MESGQ 0x05 /* Signal generated by arrival of a
- message on an empty message queue. */
-
-#if !defined(RT_USING_NEWLIB)
-typedef void (*_sig_func_ptr)(int);
-typedef unsigned long sigset_t;
-#endif
-
-#include <signal.h>
-
-#if defined(__CC_ARM) || defined(__CLANG_ARM)
-
-#define SIGHUP 1
-/* #define SIGINT 2 */
-#define SIGQUIT 3
-/* #define SIGILL 4 */
-#define SIGTRAP 5
-/* #define SIGABRT 6 */
-#define SIGEMT 7
-/* #define SIGFPE 8 */
-#define SIGKILL 9
-#define SIGBUS 10
-/* #define SIGSEGV 11 */
-#define SIGSYS 12
-#define SIGPIPE 13
-#define SIGALRM 14
-/* #define SIGTERM 15 */
-#define SIGURG 16
-#define SIGSTOP 17
-#define SIGTSTP 18
-#define SIGCONT 19
-#define SIGCHLD 20
-#define SIGTTIN 21
-#define SIGTTOU 22
-#define SIGPOLL 23
-#define SIGWINCH 24
-/* #define SIGUSR1 25 */
-/* #define SIGUSR2 26 */
-#define SIGRTMIN 27
-#define SIGRTMAX 31
-#define NSIG 32
-
-#define SIG_SETMASK 0 /* set mask with sigprocmask() */
-#define SIG_BLOCK 1 /* set of signals to block */
-#define SIG_UNBLOCK 2 /* set of signals to, well, unblock */
-
-struct sigaction
-{
- _sig_func_ptr sa_handler;
- sigset_t sa_mask;
- int sa_flags;
-};
-
-#define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0)
-#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0)
-#define sigemptyset(what) (*(what) = 0, 0)
-#define sigfillset(what) (*(what) = ~(0), 0)
-#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0)
-
-int sigprocmask (int how, const sigset_t *set, sigset_t *oset);
-int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
-
-#elif defined(__IAR_SYSTEMS_ICC__)
-
-#define SIGHUP 1
-#define SIGINT 2
-#define SIGQUIT 3
-#define SIGILL 4
-#define SIGTRAP 5
-/* #define SIGABRT 6 */
-#define SIGEMT 7
-#define SIGFPE 8
-#define SIGKILL 9
-#define SIGBUS 10
-#define SIGSEGV 11
-#define SIGSYS 12
-#define SIGPIPE 13
-#define SIGALRM 14
-#define SIGTERM 15
-#define SIGURG 16
-#define SIGSTOP 17
-#define SIGTSTP 18
-#define SIGCONT 19
-#define SIGCHLD 20
-#define SIGTTIN 21
-#define SIGTTOU 22
-#define SIGPOLL 23
-#define SIGWINCH 24
-#define SIGUSR1 25
-#define SIGUSR2 26
-#define SIGRTMIN 27
-#define SIGRTMAX 31
-#define NSIG 32
-
-#define SIG_SETMASK 0 /* set mask with sigprocmask() */
-#define SIG_BLOCK 1 /* set of signals to block */
-#define SIG_UNBLOCK 2 /* set of signals to, well, unblock */
-
-struct sigaction
-{
- _sig_func_ptr sa_handler;
- sigset_t sa_mask;
- int sa_flags;
-};
-
-#define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0)
-#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0)
-#define sigemptyset(what) (*(what) = 0, 0)
-#define sigfillset(what) (*(what) = ~(0), 0)
-#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0)
-
-int sigprocmask (int how, const sigset_t *set, sigset_t *oset);
-int sigaction(int signum, const struct sigaction *act, struct sigaction *oldact);
-#endif
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
-
diff --git a/include/libc/libc_stat.h b/include/libc/libc_stat.h
deleted file mode 100644
index 6497cfe12c..0000000000
--- a/include/libc/libc_stat.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- */
-
-#ifndef LIBC_STAT_H__
-#define LIBC_STAT_H__
-
-#include <rtconfig.h>
-
-#if defined(RT_USING_NEWLIB) || (defined( __GNUC__ ) && !defined(__ARMCC_VERSION))
-/* use header file of newlib */
-#include <sys/stat.h>
-
-#elif defined(_WIN32)
-#include <sys/stat.h>
-
-#define S_IRWXU 00700
-#define S_IRUSR 00400
-#define S_IWUSR 00200
-#define S_IXUSR 00100
-
-#define S_IRWXG 00070
-#define S_IRGRP 00040
-#define S_IWGRP 00020
-#define S_IXGRP 00010
-
-#define S_IRWXO 00007
-#define S_IROTH 00004
-#define S_IWOTH 00002
-#define S_IXOTH 00001
-
-#define S_IFSOCK 0140000
-#define S_IFLNK 0120000
-#define S_IFBLK 0060000
-#define S_IFIFO 0010000
-#define S_ISUID 0004000
-#define S_ISGID 0002000
-#define S_ISVTX 0001000
-
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-
-#else
-#define S_IFMT 00170000
-#define S_IFSOCK 0140000
-#define S_IFLNK 0120000
-#define S_IFREG 0100000
-#define S_IFBLK 0060000
-#define S_IFDIR 0040000
-#define S_IFCHR 0020000
-#define S_IFIFO 0010000
-#define S_ISUID 0004000
-#define S_ISGID 0002000
-#define S_ISVTX 0001000
-
-#define S_ISLNK(m) (((m) & S_IFMT) == S_IFLNK)
-#define S_ISREG(m) (((m) & S_IFMT) == S_IFREG)
-#define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
-#define S_ISCHR(m) (((m) & S_IFMT) == S_IFCHR)
-#define S_ISBLK(m) (((m) & S_IFMT) == S_IFBLK)
-#define S_ISFIFO(m) (((m) & S_IFMT) == S_IFIFO)
-#define S_ISSOCK(m) (((m) & S_IFMT) == S_IFSOCK)
-
-#define S_IRWXU 00700
-#define S_IRUSR 00400
-#define S_IWUSR 00200
-#define S_IXUSR 00100
-
-#define S_IRWXG 00070
-#define S_IRGRP 00040
-#define S_IWGRP 00020
-#define S_IXGRP 00010
-
-#define S_IRWXO 00007
-#define S_IROTH 00004
-#define S_IWOTH 00002
-#define S_IXOTH 00001
-
-/* stat structure */
-#include <stdint.h>
-#include <time.h>
-
-struct stat
-{
- struct rt_device *st_dev;
- uint16_t st_ino;
- uint16_t st_mode;
- uint16_t st_nlink;
- uint16_t st_uid;
- uint16_t st_gid;
- struct rt_device *st_rdev;
- uint32_t st_size;
- time_t st_atime;
- long st_spare1;
- time_t st_mtime;
- long st_spare2;
- time_t st_ctime;
- long st_spare3;
- uint32_t st_blksize;
- uint32_t st_blocks;
- long st_spare4[2];
-};
-
-#endif
-
-#endif
diff --git a/include/libc/libc_stdio.h b/include/libc/libc_stdio.h
deleted file mode 100644
index 85ba509852..0000000000
--- a/include/libc/libc_stdio.h
+++ /dev/null
@@ -1,22 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2020-09-05 Meco Manthe first version
- */
-
-#ifndef LIBC_STDIO_H__
-#define LIBC_STDIO_H__
-
-#include <rtconfig.h>
-
-#ifdef RT_USING_POSIX_GETLINE
-
-#include <posix_getline.h>
-
-#endif
-
-#endif
diff --git a/include/rtdbg.h b/include/rtdbg.h
index be5a57f312..6a6ea3d670 100644
--- a/include/rtdbg.h
+++ b/include/rtdbg.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -178,6 +178,8 @@ extern "C" {
#define LOG_RAW(...) dbg_raw(__VA_ARGS__)
+#define LOG_HEX(name, width, buf, size)
+
#endif /* defined(RT_USING_ULOG) && define(DBG_ENABLE) */
#ifdef __cplusplus
diff --git a/include/rtdebug.h b/include/rtdebug.h
index b66cd6fc69..0858a5bbf1 100644
--- a/include/rtdebug.h
+++ b/include/rtdebug.h
@@ -1,7 +1,10 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
*/
#ifndef __RTDEBUG_H__
@@ -9,24 +12,6 @@
#include <rtconfig.h>
-/* settings depend check */
-#ifdef RT_USING_POSIX
-#if !defined(RT_USING_DFS) || !defined(RT_USING_DFS_DEVFS)
-#error "POSIX poll/select, stdin need file system(RT_USING_DFS) and device file system(RT_USING_DFS_DEVFS)"
-#endif
-
-#if !defined(RT_USING_LIBC)
-#error "POSIX layer need standard C library(RT_USING_LIBC)"
-#endif
-
-#endif
-
-#ifdef RT_USING_POSIX_TERMIOS
-#if !defined(RT_USING_POSIX)
-#error "termios need POSIX layer(RT_USING_POSIX)"
-#endif
-#endif
-
/* Using this macro to control all kernel debug features. */
#ifdef RT_DEBUG
diff --git a/include/rtdef.h b/include/rtdef.h
index e4ddbd37d3..66d30001a0 100644
--- a/include/rtdef.h
+++ b/include/rtdef.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -34,6 +34,13 @@
* 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-03-19 Meco Man add security devices
+ * 2021-05-10 armink change version number to v4.0.4
+ * 2021-11-19 Meco Man change version number to v4.1.0
+ * 2021-12-21 Meco Man re-implement RT_UNUSED
+ * 2022-01-01 Gabriel improve hooking method
+ * 2022-01-07 Gabriel move some __on_rt_xxxxx_hook to dedicated c soure files
+ * 2022-01-12 Meco Man remove RT_THREAD_BLOCK
*/
#ifndef __RT_DEF_H__
@@ -54,8 +61,8 @@ 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_SUBVERSION 1L /**< minor version number */
+#define RT_REVISION 0L /**< revise version number */
/* RT-Thread version */
#define RTTHREAD_VERSION ((RT_VERSION * 10000) + \
@@ -73,11 +80,13 @@ typedef unsigned int rt_uint32_t; /**< 32bit unsigned inte
#ifdef ARCH_CPU_64BIT
typedef signed long rt_int64_t; /**< 64bit integer type */
typedef unsigned long rt_uint64_t; /**< 64bit unsigned integer type */
+typedef unsigned long rt_size_t; /**< Type for size number */
#else
typedef signed long long rt_int64_t; /**< 64bit integer type */
typedef unsigned long long rt_uint64_t; /**< 64bit unsigned integer type */
-#endif
-#endif
+typedef unsigned int rt_size_t; /**< Type for size number */
+#endif /* ARCH_CPU_64BIT */
+#endif /* RT_USING_ARCH_DATA_TYPE */
typedef int rt_bool_t; /**< boolean type */
typedef long rt_base_t; /**< Nbit CPU related date type */
@@ -87,7 +96,6 @@ typedef rt_base_t rt_err_t; /**< Type for error numb
typedef rt_uint32_t rt_time_t; /**< Type for time stamp */
typedef rt_uint32_t rt_tick_t; /**< Type for tick count */
typedef rt_base_t rt_flag_t; /**< Type for flags */
-typedef rt_ubase_t rt_size_t; /**< Type for size number */
typedef rt_ubase_t rt_dev_t; /**< Type for device */
typedef rt_base_t rt_off_t; /**< Type for offset */
@@ -110,18 +118,14 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define RT_MB_ENTRY_MAX RT_UINT16_MAX /**< Maxium number of mailbox .entry */
#define RT_MQ_ENTRY_MAX RT_UINT16_MAX /**< Maxium number of message queue .entry */
-#if defined (__ARMCC_VERSION) && (__ARMCC_VERSION >= 6010050)
-#define __CLANG_ARM
-#endif
+#define RT_UNUSED(x) ((void)x)
/* Compiler Related Definitions */
-#if defined(__CC_ARM) || defined(__CLANG_ARM) /* ARM Compiler */
+#if defined(__ARMCC_VERSION) /* ARM Compiler */
#include <stdarg.h>
- #define SECTION(x) __attribute__((section(x)))
- #define RT_UNUSED __attribute__((unused))
+ #define RT_SECTION(x) __attribute__((section(x)))
#define RT_USED __attribute__((used))
#define ALIGN(n) __attribute__((aligned(n)))
-
#define RT_WEAK __attribute__((weak))
#define rt_inline static __inline
/* module compiling */
@@ -129,19 +133,16 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define RTT_API __declspec(dllimport)
#else
#define RTT_API __declspec(dllexport)
- #endif
-
+ #endif /* RT_USING_MODULE */
#elif defined (__IAR_SYSTEMS_ICC__) /* for IAR Compiler */
#include <stdarg.h>
- #define SECTION(x) @ x
- #define RT_UNUSED
+ #define RT_SECTION(x) @ x
#define RT_USED __root
#define PRAGMA(x) _Pragma(#x)
#define ALIGN(n) PRAGMA(data_alignment=n)
#define RT_WEAK __weak
#define rt_inline static inline
#define RTT_API
-
#elif defined (__GNUC__) /* GNU GCC Compiler */
#ifdef RT_USING_NEWLIB
#include <stdarg.h>
@@ -152,10 +153,8 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define va_start(v,l) __builtin_va_start(v,l)
#define va_end(v) __builtin_va_end(v)
#define va_arg(v,l) __builtin_va_arg(v,l)
- #endif
-
- #define SECTION(x) __attribute__((section(x)))
- #define RT_UNUSED __attribute__((unused))
+ #endif /* RT_USING_NEWLIB */
+ #define RT_SECTION(x) __attribute__((section(x)))
#define RT_USED __attribute__((used))
#define ALIGN(n) __attribute__((aligned(n)))
#define RT_WEAK __attribute__((weak))
@@ -163,8 +162,7 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define RTT_API
#elif defined (__ADSPBLACKFIN__) /* for VisualDSP++ Compiler */
#include <stdarg.h>
- #define SECTION(x) __attribute__((section(x)))
- #define RT_UNUSED __attribute__((unused))
+ #define RT_SECTION(x) __attribute__((section(x)))
#define RT_USED __attribute__((used))
#define ALIGN(n) __attribute__((aligned(n)))
#define RT_WEAK __attribute__((weak))
@@ -172,8 +170,7 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
#define RTT_API
#elif defined (_MSC_VER)
#include <stdarg.h>
- #define SECTION(x)
- #define RT_UNUSED
+ #define RT_SECTION(x)
#define RT_USED
#define ALIGN(n) __declspec(align(n))
#define RT_WEAK
@@ -184,14 +181,22 @@ typedef rt_base_t rt_off_t; /**< Type for offset */
/* The way that TI compiler set section is different from other(at least
* GCC and MDK) compilers. See ARM Optimizing C/C++ Compiler 5.9.3 for more
* details. */
- #define SECTION(x)
- #define RT_UNUSED
+ #define RT_SECTION(x)
#define RT_USED
#define PRAGMA(x) _Pragma(#x)
#define ALIGN(n)
#define RT_WEAK
#define rt_inline static inline
#define RTT_API
+#elif defined (__TASKING__)
+ #include <stdarg.h>
+ #define RT_SECTION(x) __attribute__((section(x)))
+ #define RT_USED __attribute__((used, protect))
+ #define PRAGMA(x) _Pragma(#x)
+ #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
@@ -200,7 +205,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
@@ -210,11 +240,11 @@ typedef int (*init_fn_t)(void);
};
#define INIT_EXPORT(fn, level) \
const char __rti_##fn##_name[] = #fn; \
- RT_USED const struct rt_init_desc __rt_init_desc_##fn SECTION(".rti_fn." level) = \
+ RT_USED const struct rt_init_desc __rt_init_desc_##fn RT_SECTION(".rti_fn." level) = \
{ __rti_##fn##_name, fn};
#else
#define INIT_EXPORT(fn, level) \
- RT_USED const init_fn_t __rt_init_##fn SECTION(".rti_fn." level) = fn
+ RT_USED const init_fn_t __rt_init_##fn RT_SECTION(".rti_fn." level) = fn
#endif
#endif
#else
@@ -240,7 +270,6 @@ typedef int (*init_fn_t)(void);
/* define these to empty, even if not include finsh.h file */
#define FINSH_FUNCTION_EXPORT(name, desc)
#define FINSH_FUNCTION_EXPORT_ALIAS(name, alias, desc)
-#define FINSH_VAR_EXPORT(name, type, desc)
#define MSH_CMD_EXPORT(command, desc)
#define MSH_CMD_EXPORT_ALIAS(command, alias, desc)
@@ -393,7 +422,8 @@ enum rt_object_class_type
RT_Object_Class_Device = 0x09, /**< The object is a device. */
RT_Object_Class_Timer = 0x0a, /**< The object is a timer. */
RT_Object_Class_Module = 0x0b, /**< The object is a module. */
- RT_Object_Class_Unknown = 0x0c, /**< The object is unknown. */
+ RT_Object_Class_Memory = 0x0c, /**< The object is a memory. */
+ RT_Object_Class_Unknown = 0x0e, /**< The object is unknown. */
RT_Object_Class_Static = 0x80 /**< The object is a static object. */
};
@@ -410,12 +440,28 @@ struct rt_object_information
/**
* The hook function call macro
*/
-#ifdef RT_USING_HOOK
-#define RT_OBJECT_HOOK_CALL(func, argv) \
- do { if ((func) != RT_NULL) func argv; } while (0)
+#ifndef RT_USING_HOOK
+ #define __ON_HOOK_ARGS(__hook, argv)
+ #define RT_OBJECT_HOOK_CALL(func, argv)
#else
-#define RT_OBJECT_HOOK_CALL(func, argv)
+ #define RT_OBJECT_HOOK_CALL(func, argv) __on_##func argv
+ #ifdef RT_HOOK_USING_FUNC_PTR
+ #define __ON_HOOK_ARGS(__hook, argv) do {if ((__hook) != RT_NULL) __hook argv; } while (0)
+ #else
+ #define __ON_HOOK_ARGS(__hook, argv)
+ #endif
+#endif
+
+#ifndef __on_rt_interrupt_switch_hook
+ #define __on_rt_interrupt_switch_hook() __ON_HOOK_ARGS(rt_interrupt_switch_hook, ())
+#endif
+#ifndef __on_rt_malloc_hook
+ #define __on_rt_malloc_hook(addr, size) __ON_HOOK_ARGS(rt_malloc_hook, (addr, size))
#endif
+#ifndef __on_rt_free_hook
+ #define __on_rt_free_hook(rmem) __ON_HOOK_ARGS(rt_free_hook, (rmem))
+#endif
+
/**@}*/
@@ -441,6 +487,7 @@ struct rt_object_information
#define RT_TIMER_CTRL_SET_ONESHOT 0x2 /**< change timer to one shot */
#define RT_TIMER_CTRL_SET_PERIODIC 0x3 /**< change timer to periodic */
#define RT_TIMER_CTRL_GET_STATE 0x4 /**< get timer run state active or deactive*/
+#define RT_TIMER_CTRL_GET_REMAIN_TIME 0x5 /**< get the remaining hang time */
#ifndef RT_TIMER_SKIP_LIST_LEVEL
#define RT_TIMER_SKIP_LIST_LEVEL 1
@@ -474,7 +521,7 @@ typedef struct rt_timer *rt_timer_t;
* @addtogroup Signal
*/
#ifdef RT_USING_SIGNALS
-#include <libc/libc_signal.h>
+#include <sys/signal.h>
typedef unsigned long rt_sigset_t;
typedef void (*rt_sighandler_t)(int signo);
typedef siginfo_t rt_siginfo_t;
@@ -500,7 +547,6 @@ typedef siginfo_t rt_siginfo_t;
#define RT_THREAD_READY 0x01 /**< Ready status */
#define RT_THREAD_SUSPEND 0x02 /**< Suspend status */
#define RT_THREAD_RUNNING 0x03 /**< Running status */
-#define RT_THREAD_BLOCK RT_THREAD_SUSPEND /**< Blocked status */
#define RT_THREAD_CLOSE 0x04 /**< Closed status */
#define RT_THREAD_STAT_MASK 0x07
@@ -531,6 +577,10 @@ typedef siginfo_t rt_siginfo_t;
#define RT_SCHEDULE_IPI 0
#endif
+#ifndef RT_STOP_IPI
+#define RT_STOP_IPI 1
+#endif
+
/**
* CPUs definitions
*
@@ -587,7 +637,7 @@ struct rt_thread
#ifdef RT_USING_SMP
rt_uint8_t bind_cpu; /**< thread is bind to cpu */
- rt_uint8_t oncpu; /**< process on cpu` */
+ rt_uint8_t oncpu; /**< process on cpu */
rt_uint16_t scheduler_lock_nest; /**< scheduler lock count */
rt_uint16_t cpus_lock_nest; /**< cpus lock count */
@@ -596,7 +646,6 @@ struct rt_thread
/* priority */
rt_uint8_t current_priority; /**< current priority */
- rt_uint8_t init_priority; /**< initialized priority */
#if RT_THREAD_PRIORITY_MAX > 32
rt_uint8_t number;
rt_uint8_t high_mask;
@@ -623,6 +672,10 @@ struct rt_thread
rt_ubase_t init_tick; /**< thread's initialized tick */
rt_ubase_t remaining_tick; /**< remaining tick */
+#ifdef RT_USING_CPU_USAGE
+ rt_uint64_t duration_tick; /**< cpu usage tick */
+#endif
+
struct rt_timer thread_timer; /**< built-in thread timer */
void (*cleanup)(struct rt_thread *tid); /**< cleanup function when thread exit */
@@ -771,11 +824,35 @@ typedef struct rt_messagequeue *rt_mq_t;
/**@{*/
+#ifdef RT_USING_HEAP
+/*
+ * memory structure
+ */
+struct rt_memory
+{
+ struct rt_object parent; /**< inherit from rt_object */
+ const char * algorithm; /**< Memory management algorithm name */
+ rt_ubase_t address; /**< memory start address */
+ rt_size_t total; /**< memory size */
+ rt_size_t used; /**< size used */
+ rt_size_t max; /**< maximum usage */
+};
+typedef struct rt_memory *rt_mem_t;
+#endif
+
/*
* memory management
* heap & partition
*/
+#ifdef RT_USING_SMALL_MEM
+typedef rt_mem_t rt_smem_t;
+#endif
+
+#ifdef RT_USING_SLAB
+typedef rt_mem_t rt_slab_t;
+#endif
+
#ifdef RT_USING_MEMHEAP
/**
* memory item on the heap
@@ -790,6 +867,9 @@ struct rt_memheap_item
struct rt_memheap_item *next_free; /**< next free memheap item */
struct rt_memheap_item *prev_free; /**< prev free memheap item */
+#ifdef RT_USING_MEMTRACE
+ rt_uint8_t owner_thread_name[4]; /**< owner thread name */
+#endif
};
/**
@@ -801,9 +881,9 @@ struct rt_memheap
void *start_addr; /**< pool start address and size */
- rt_uint32_t pool_size; /**< pool size */
- rt_uint32_t available_size; /**< available size */
- rt_uint32_t max_used_size; /**< maximum allocated size */
+ rt_size_t pool_size; /**< pool size */
+ rt_size_t available_size; /**< available size */
+ rt_size_t max_used_size; /**< maximum allocated size */
struct rt_memheap_item *block_list; /**< used block list */
@@ -811,6 +891,7 @@ struct rt_memheap
struct rt_memheap_item free_header; /**< free block list header */
struct rt_semaphore lock; /**< semaphore lock */
+ rt_bool_t locked; /**< External lock mark */
};
#endif
@@ -861,6 +942,7 @@ enum rt_device_class_type
RT_Device_Class_I2CBUS, /**< I2C bus device */
RT_Device_Class_USBDevice, /**< USB slave device */
RT_Device_Class_USBHost, /**< USB host bus */
+ RT_Device_Class_USBOTG, /**< USB OTG bus */
RT_Device_Class_SPIBUS, /**< SPI bus device */
RT_Device_Class_SPIDevice, /**< SPI device */
RT_Device_Class_SDIO, /**< SDIO bus device */
@@ -872,6 +954,7 @@ enum rt_device_class_type
RT_Device_Class_Sensor, /**< Sensor device */
RT_Device_Class_Touch, /**< Touch device */
RT_Device_Class_PHY, /**< PHY device */
+ RT_Device_Class_Security, /**< Security device */
RT_Device_Class_Unknown /**< unknown device */
};
@@ -917,17 +1000,13 @@ enum rt_device_class_type
/**
* special device commands
*/
-#define RT_DEVICE_CTRL_CHAR_STREAM 0x10 /**< stream mode on char device */
-#define RT_DEVICE_CTRL_BLK_GETGEOME 0x10 /**< get geometry information */
-#define RT_DEVICE_CTRL_BLK_SYNC 0x11 /**< flush data to block device */
-#define RT_DEVICE_CTRL_BLK_ERASE 0x12 /**< erase block on block device */
-#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_CHAR_STREAM 0x20 /**< stream mode on char device */
+#define RT_DEVICE_CTRL_BLK_GETGEOME 0x20 /**< get geometry information */
+#define RT_DEVICE_CTRL_BLK_SYNC 0x21 /**< flush data to block device */
+#define RT_DEVICE_CTRL_BLK_ERASE 0x22 /**< erase block on block device */
+#define RT_DEVICE_CTRL_BLK_AUTOREFRESH 0x23 /**< block device : enter/exit auto refresh mode */
+#define RT_DEVICE_CTRL_NETIF_GETMAC 0x20 /**< get mac address */
+#define RT_DEVICE_CTRL_MTD_FORMAT 0x20 /**< format a MTD device */
typedef struct rt_device *rt_device_t;
@@ -987,7 +1066,7 @@ struct rt_device
rt_err_t (*control)(rt_device_t dev, int cmd, void *args);
#endif
-#if defined(RT_USING_POSIX)
+#ifdef RT_USING_POSIX_DEVIO
const struct dfs_file_ops *fops;
struct rt_wqueue wait_queue;
#endif
@@ -1029,6 +1108,12 @@ struct rt_device_blk_sectors
#define RTGRAPHIC_CTRL_GET_INFO 3
#define RTGRAPHIC_CTRL_SET_MODE 4
#define RTGRAPHIC_CTRL_GET_EXT 5
+#define RTGRAPHIC_CTRL_SET_BRIGHTNESS 6
+#define RTGRAPHIC_CTRL_GET_BRIGHTNESS 7
+#define RTGRAPHIC_CTRL_GET_MODE 8
+#define RTGRAPHIC_CTRL_GET_STATUS 9
+#define RTGRAPHIC_CTRL_PAN_DISPLAY 10
+#define RTGRAPHIC_CTRL_WAIT_VSYNC 11
/* graphic deice */
enum
@@ -1045,9 +1130,7 @@ enum
RTGRAPHIC_PIXEL_FORMAT_RGB888,
RTGRAPHIC_PIXEL_FORMAT_ARGB888,
RTGRAPHIC_PIXEL_FORMAT_ABGR888,
- RTGRAPHIC_PIXEL_FORMAT_ARGB565,
- RTGRAPHIC_PIXEL_FORMAT_ALPHA,
- RTGRAPHIC_PIXEL_FORMAT_COLOR,
+ RTGRAPHIC_PIXEL_FORMAT_RESERVED,
};
/**
@@ -1062,7 +1145,7 @@ struct rt_device_graphic_info
{
rt_uint8_t pixel_format; /**< graphic format */
rt_uint8_t bits_per_pixel; /**< bits per pixel */
- rt_uint16_t reserved; /**< reserved field */
+ rt_uint16_t pitch; /**< bytes per line */
rt_uint16_t width; /**< width of graphic device */
rt_uint16_t height; /**< height of graphic device */
@@ -1099,9 +1182,6 @@ struct rt_device_graphic_ops
/**@}*/
#endif
-/* definitions for libc */
-#include "rtlibc.h"
-
#ifdef __cplusplus
}
#endif
diff --git a/include/rthw.h b/include/rthw.h
index 89877faf90..5672a8f992 100644
--- a/include/rthw.h
+++ b/include/rthw.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -181,7 +181,7 @@ void rt_hw_secondary_cpu_up(void);
void rt_hw_secondary_cpu_idle_exec(void);
#else
-#define RT_DEFINE_SPINLOCK(x)
+#define RT_DEFINE_SPINLOCK(x)
#define RT_DECLARE_SPINLOCK(x) rt_ubase_t x
#define rt_hw_spin_lock(lock) *(lock) = rt_hw_interrupt_disable()
diff --git a/include/rtlibc.h b/include/rtlibc.h
deleted file mode 100644
index fb8c782095..0000000000
--- a/include/rtlibc.h
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
- *
- * SPDX-License-Identifier: Apache-2.0
- *
- * Change Logs:
- * Date Author Notes
- * 2017-01-21 Bernard the first version
- */
-
-#ifndef RTLIBC_H__
-#define RTLIBC_H__
-
-/* definitions for libc if toolchain has no these definitions */
-#include "libc/libc_stat.h"
-#include "libc/libc_errno.h"
-
-#include "libc/libc_fcntl.h"
-#include "libc/libc_ioctl.h"
-#include "libc/libc_dirent.h"
-#include "libc/libc_signal.h"
-#include "libc/libc_fdset.h"
-#include "libc/libc_limits.h"
-#include "libc/libc_stdio.h"
-
-#if defined(__CC_ARM) || defined(__CLANG_ARM) || defined(__IAR_SYSTEMS_ICC__)
-typedef signed long off_t;
-typedef int mode_t;
-#endif
-
-#if defined(__MINGW32__) || defined(_WIN32)
-typedef signed long off_t;
-typedef int mode_t;
-#endif
-
-#endif
-
diff --git a/include/rtm.h b/include/rtm.h
index 7e07a2239c..ec05662416 100644
--- a/include/rtm.h
+++ b/include/rtm.h
@@ -1,7 +1,10 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date Author Notes
*/
#ifndef __RTM_H__
@@ -28,8 +31,8 @@ __declspec(allocate("RTMSymTab$f"))const char __rtmsym_##symbol##_name[] = "__vs
#else
#define RTM_EXPORT(symbol) \
-const char __rtmsym_##symbol##_name[] SECTION(".rodata.name") = #symbol; \
-const struct rt_module_symtab __rtmsym_##symbol SECTION("RTMSymTab")= \
+const char __rtmsym_##symbol##_name[] RT_SECTION(".rodata.name") = #symbol; \
+const struct rt_module_symtab __rtmsym_##symbol RT_SECTION("RTMSymTab")= \
{ \
(void *)&symbol, \
__rtmsym_##symbol##_name \
diff --git a/include/rtservice.h b/include/rtservice.h
index 5bd2b1c23b..d0bad85de1 100644
--- a/include/rtservice.h
+++ b/include/rtservice.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
diff --git a/include/rtthread.h b/include/rtthread.h
index 1e0094e73b..45a7655be9 100644
--- a/include/rtthread.h
+++ b/include/rtthread.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2006-2018, RT-Thread Development Team
+ * Copyright (c) 2006-2021, RT-Thread Development Team
*
* SPDX-License-Identifier: Apache-2.0
*
@@ -14,6 +14,8 @@
* 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
+ * 2021-11-14 Meco Man add rtlegacy.h for compatibility
*/
#ifndef __RT_THREAD_H__
@@ -24,6 +26,9 @@
#include <rtdef.h>
#include <rtservice.h>
#include <rtm.h>
+#ifdef RT_USING_LEGACY
+#include <rtlegacy.h>
+#endif
#ifdef __cplusplus
extern "C" {
@@ -47,9 +52,11 @@ void rt_object_init(struct rt_object *object,
enum rt_object_class_type type,
const char *name);
void rt_object_detach(rt_object_t object);
+#ifdef RT_USING_HEAP
rt_object_t rt_object_allocate(enum rt_object_class_type type,
const char *name);
void rt_object_delete(rt_object_t object);
+#endif
rt_bool_t rt_object_is_systemobject(rt_object_t object);
rt_uint8_t rt_object_get_type(rt_object_t object);
rt_object_t rt_object_find(const char *name, rt_uint8_t type);
@@ -89,12 +96,14 @@ void rt_timer_init(rt_timer_t timer,
rt_tick_t time,
rt_uint8_t flag);
rt_err_t rt_timer_detach(rt_timer_t timer);
+#ifdef RT_USING_HEAP
rt_timer_t rt_timer_create(const char *name,
void (*timeout)(void *parameter),
void *parameter,
rt_tick_t time,
rt_uint8_t flag);
rt_err_t rt_timer_delete(rt_timer_t timer);
+#endif
rt_err_t rt_timer_start(rt_timer_t timer);
rt_err_t rt_timer_stop(rt_timer_t timer);
rt_err_t rt_timer_control(rt_timer_t timer, int cmd, void *arg);
@@ -127,17 +136,18 @@ rt_err_t rt_thread_init(struct rt_thread *thread,
rt_uint8_t priority,
rt_uint32_t tick);
rt_err_t rt_thread_detach(rt_thread_t thread);
+#ifdef RT_USING_HEAP
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_err_t rt_thread_delete(rt_thread_t thread);
+#endif
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);
-
rt_err_t rt_thread_yield(void);
rt_err_t rt_thread_delay(rt_tick_t tick);
rt_err_t rt_thread_delay_until(rt_tick_t *tick, rt_tick_t inc_tick);
@@ -145,7 +155,6 @@ rt_err_t rt_thread_mdelay(rt_int32_t ms);
rt_err_t rt_thread_control(rt_thread_t thread, int 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);
#ifdef RT_USING_SIGNALS
void rt_thread_alloc_sig(rt_thread_t tid);
@@ -167,7 +176,6 @@ void rt_thread_idle_init(void);
rt_err_t rt_thread_idle_sethook(void (*hook)(void));
rt_err_t rt_thread_idle_delhook(void (*hook)(void));
#endif
-void rt_thread_idle_excute(void);
rt_thread_t rt_thread_idle_gethandler(void);
/*
@@ -186,6 +194,7 @@ rt_uint16_t rt_critical_level(void);
#ifdef RT_USING_HOOK
void rt_scheduler_sethook(void (*hook)(rt_thread_t from, rt_thread_t to));
+void rt_scheduler_switch_sethook(void (*hook)(struct rt_thread *tid));
#endif
#ifdef RT_USING_SMP
@@ -227,10 +236,12 @@ rt_err_t rt_mp_init(struct rt_mempool *mp,
rt_size_t size,
rt_size_t block_size);
rt_err_t rt_mp_detach(struct rt_mempool *mp);
+#ifdef RT_USING_HEAP
rt_mp_t rt_mp_create(const char *name,
rt_size_t block_count,
rt_size_t block_size);
rt_err_t rt_mp_delete(rt_mp_t mp);
+#endif
void *rt_mp_alloc(rt_mp_t mp, rt_int32_t time);
void rt_mp_free(void *block);
@@ -255,11 +266,11 @@ void *rt_calloc(rt_size_t count, rt_size_t size);
void *rt_malloc_align(rt_size_t size, rt_size_t align);
void rt_free_align(void *ptr);
-void rt_memory_info(rt_uint32_t *total,
- rt_uint32_t *used,
- rt_uint32_t *max_used);
+void rt_memory_info(rt_size_t *total,
+ rt_size_t *used,
+ rt_size_t *max_used);
-#ifdef RT_USING_SLAB
+#if defined(RT_USING_SLAB) && defined(RT_USING_SLAB_AS_HEAP)
void *rt_page_alloc(rt_size_t npages);
void rt_page_free(void *addr, rt_size_t npages);
#endif
@@ -271,6 +282,19 @@ void rt_free_sethook(void (*hook)(void *ptr));
#endif
+#ifdef RT_USING_SMALL_MEM
+/**
+ * small memory object interface
+ */
+rt_smem_t rt_smem_init(const char *name,
+ void *begin_addr,
+ rt_size_t size);
+rt_err_t rt_smem_detach(rt_smem_t m);
+void *rt_smem_alloc(rt_smem_t m, rt_size_t size);
+void *rt_smem_realloc(rt_smem_t m, void *rmem, rt_size_t newsize);
+void rt_smem_free(void *rmem);
+#endif
+
#ifdef RT_USING_MEMHEAP
/**
* memory heap object interface
@@ -283,6 +307,23 @@ rt_err_t rt_memheap_detach(struct rt_memheap *heap);
void *rt_memheap_alloc(struct rt_memheap *heap, rt_size_t size);
void *rt_memheap_realloc(struct rt_memheap *heap, void *ptr, rt_size_t newsize);
void rt_memheap_free(void *ptr);
+void rt_memheap_info(struct rt_memheap *heap,
+ rt_size_t *total,
+ rt_size_t *used,
+ rt_size_t *max_used);
+#endif
+
+#ifdef RT_USING_SLAB
+/**
+ * slab object interface
+ */
+rt_slab_t rt_slab_init(const char *name, void *begin_addr, rt_size_t size);
+rt_err_t rt_slab_detach(rt_slab_t m);
+void *rt_slab_page_alloc(rt_slab_t m, rt_size_t npages);
+void rt_slab_page_free(rt_slab_t m, void *addr, rt_size_t npages);
+void *rt_slab_alloc(rt_slab_t m, rt_size_t size);
+void *rt_slab_realloc(rt_slab_t m, void *ptr, rt_size_t size);
+void rt_slab_free(rt_slab_t m, void *ptr);
#endif
/**@}*/
@@ -302,8 +343,10 @@ rt_err_t rt_sem_init(rt_sem_t sem,
rt_uint32_t value,
rt_uint8_t flag);
rt_err_t rt_sem_detach(rt_sem_t sem);
+#ifdef RT_USING_HEAP
rt_sem_t rt_sem_create(const char *name, rt_uint32_t value, rt_uint8_t flag);
rt_err_t rt_sem_delete(rt_sem_t sem);
+#endif
rt_err_t rt_sem_take(rt_sem_t sem, rt_int32_t time);
rt_err_t rt_sem_trytake(rt_sem_t sem);
@@ -317,10 +360,13 @@ rt_err_t rt_sem_control(rt_sem_t sem, int cmd, void *arg);
*/
rt_err_t rt_mutex_init(rt_mutex_t mutex, const char *name, rt_uint8_t flag);
rt_err_t rt_mutex_detach(rt_mutex_t mutex);
+#ifdef RT_USING_HEAP
rt_mutex_t rt_mutex_create(const char *name, rt_uint8_t flag);
rt_err_t rt_mutex_delete(rt_mutex_t mutex);
+#endif
rt_err_t rt_mutex_take(rt_mutex_t mutex, rt_int32_t time);
+rt_err_t rt_mutex_trytake(rt_mutex_t mutex);
rt_err_t rt_mutex_release(rt_mutex_t mutex);
rt_err_t rt_mutex_control(rt_mutex_t mutex, int cmd, void *arg);
#endif
@@ -331,8 +377,10 @@ rt_err_t rt_mutex_control(rt_mutex_t mutex, int cmd, void *arg);
*/
rt_err_t rt_event_init(rt_event_t event, const char *name, rt_uint8_t flag);
rt_err_t rt_event_detach(rt_event_t event);
+#ifdef RT_USING_HEAP
rt_event_t rt_event_create(const char *name, rt_uint8_t flag);
rt_err_t rt_event_delete(rt_event_t event);
+#endif
rt_err_t rt_event_send(rt_event_t event, rt_uint32_t set);
rt_err_t rt_event_recv(rt_event_t event,
@@ -353,13 +401,16 @@ rt_err_t rt_mb_init(rt_mailbox_t mb,
rt_size_t size,
rt_uint8_t flag);
rt_err_t rt_mb_detach(rt_mailbox_t mb);
+#ifdef RT_USING_HEAP
rt_mailbox_t rt_mb_create(const char *name, rt_size_t size, rt_uint8_t flag);
rt_err_t rt_mb_delete(rt_mailbox_t mb);
+#endif
rt_err_t rt_mb_send(rt_mailbox_t mb, rt_ubase_t value);
rt_err_t rt_mb_send_wait(rt_mailbox_t mb,
rt_ubase_t value,
rt_int32_t timeout);
+rt_err_t rt_mb_urgent(rt_mailbox_t mb, rt_ubase_t value);
rt_err_t rt_mb_recv(rt_mailbox_t mb, rt_ubase_t *value, rt_int32_t timeout);
rt_err_t rt_mb_control(rt_mailbox_t mb, int cmd, void *arg);
#endif
@@ -375,11 +426,13 @@ rt_err_t rt_mq_init(rt_mq_t mq,
rt_size_t pool_size,
rt_uint8_t flag);
rt_err_t rt_mq_detach(rt_mq_t mq);
+#ifdef RT_USING_HEAP
rt_mq_t rt_mq_create(const char *name,
rt_size_t msg_size,
rt_size_t max_msgs,
rt_uint8_t flag);
rt_err_t rt_mq_delete(rt_mq_t mq);
+#endif
rt_err_t rt_mq_send(rt_mq_t mq, const void *buffer, rt_size_t size);
rt_err_t rt_mq_send_wait(rt_mq_t mq,
@@ -394,6 +447,10 @@ rt_err_t rt_mq_recv(rt_mq_t mq,
rt_err_t rt_mq_control(rt_mq_t mq, int cmd, void *arg);
#endif
+/* defunct */
+void rt_thread_defunct_enqueue(rt_thread_t thread);
+rt_thread_t rt_thread_defunct_dequeue(void);
+
/*
* spinlock
*/
@@ -434,10 +491,10 @@ rt_err_t rt_device_register(rt_device_t dev,
rt_uint16_t flags);
rt_err_t rt_device_unregister(rt_device_t dev);
+#ifdef RT_USING_HEAP
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);
+#endif
rt_err_t
rt_device_set_rx_indicate(rt_device_t dev,
@@ -514,13 +571,14 @@ void rt_components_board_init(void);
#define rt_kprintf(...)
#define rt_kputs(str)
#else
-void rt_kprintf(const char *fmt, ...);
+int 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, ...);
+
+int rt_vsprintf(char *dest, const char *format, va_list arg_ptr);
+int rt_vsnprintf(char *buf, rt_size_t size, const char *fmt, va_list args);
+int rt_sprintf(char *buf, const char *format, ...);
+int rt_snprintf(char *buf, rt_size_t size, const char *format, ...);
#if defined(RT_USING_DEVICE) && defined(RT_USING_CONSOLE)
rt_device_t rt_console_set_device(const char *name);
@@ -538,25 +596,54 @@ int *_rt_errno(void);
int __rt_ffs(int value);
+#ifndef RT_KSERVICE_USING_STDLIB_MEMSET
void *rt_memset(void *src, int c, rt_ubase_t n);
+#endif /* RT_KSERVICE_USING_STDLIB_MEMSET */
+#ifndef RT_KSERVICE_USING_STDLIB_MEMCPY
void *rt_memcpy(void *dest, const void *src, rt_ubase_t n);
+#endif /* RT_KSERVICE_USING_STDLIB_MEMCPY */
+char *rt_strdup(const char *s);
-rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_ubase_t count);
+#ifndef RT_KSERVICE_USING_STDLIB
+void *rt_memmove(void *dest, const void *src, rt_size_t n);
+rt_int32_t rt_memcmp(const void *cs, const void *ct, rt_size_t count);
+char *rt_strstr(const char *str1, const char *str2);
+rt_int32_t rt_strcasecmp(const char *a, const char *b);
+char *rt_strcpy(char *dst, const char *src);
+char *rt_strncpy(char *dest, const char *src, rt_size_t n);
+rt_int32_t rt_strncmp(const char *cs, const char *ct, rt_size_t count);
rt_int32_t rt_strcmp(const char *cs, const char *ct);
rt_size_t rt_strlen(const char *src);
+#else
+#include <string.h>
+#ifdef RT_KSERVICE_USING_STDLIB_MEMSET
+#define rt_memset(s, c, count) memset(s, c, count)
+#endif /* RT_KSERVICE_USING_STDLIB_MEMSET */
+#ifdef RT_KSERVICE_USING_STDLIB_MEMCPY
+#define rt_memcpy(dst, src, count) memcpy(dst, src, count)
+#endif /* RT_KSERVICE_USING_STDLIB_MEMCPY */
+#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_strcpy(dest, src) strcpy(dest, src)
+#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_strlen(src) strlen(src)
+#endif /*RT_KSERVICE_USING_STDLIB*/
+
+#if !defined(RT_KSERVICE_USING_STDLIB) || defined(__ARMCC_VERSION)
rt_size_t rt_strnlen(const char *s, rt_ubase_t maxlen);
-char *rt_strdup(const char *s);
-#if defined(__CC_ARM) || defined(__CLANG_ARM)
-/* leak strdup interface */
-char* strdup(const char* str);
-#endif
+#else
+#define rt_strnlen(s, maxlen) strnlen(s, maxlen)
+#endif /* !defined(RT_KSERVICE_USING_STDLIB) || defined(__ARMCC_VERSION) */
-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);
+#ifdef __ARMCC_VERSION
+/* MDK doesn't have these APIs */
+char* strdup(const char* str);
+rt_size_t strnlen(const char *s, rt_size_t maxlen);
+#endif /* __ARMCC_VERSION */
void rt_show_version(void);
@@ -568,7 +655,7 @@ void rt_assert_handler(const char *ex, const char *func, rt_size_t line);
#endif /* RT_DEBUG */
#ifdef RT_USING_FINSH
-#include <finsh_api.h>
+#include <finsh.h>
#endif
/**@}*/