Parcourir la source

[libc] 增加sys/select.h到partical/ls1

Meco Man il y a 3 ans
Parent
commit
5c058b624f

+ 11 - 6
components/libc/compilers/common/partial/ls1/SConscript

@@ -8,11 +8,16 @@ cwd   = GetCurrentDir()
 CPPPATH = [cwd]
 group = []
 
-# There is no 'sys/select.h' in these bsp's gcc toolchain; thus, we need to copy this file from 'nogcc/sys/select.h'
-if GetDepend('SOC_LS1B') or GetDepend('SOC_LS1C300'):
-    copy("../../nogcc/sys/select.h", "sys/select.h")
-    if GetDepend('RT_USING_LIBC'):
-        src += Glob('*.c')
-    group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH)
+if rtconfig.PLATFORM == 'gcc':
+    if GetDepend('SOC_LS1B') or GetDepend('SOC_LS1C300'):
+        try:
+            # There is no 'sys/select.h' in these bsp's gcc toolchain; thus, we need to copy this file from 'nogcc/sys/select.h'
+            copy("../../nogcc/sys/select.h", "./sys/select.h")
+        except:
+            pass
+        if GetDepend('RT_USING_LIBC'):
+            src += Glob('*.c')
+
+        group = DefineGroup('libc', src, depend = [], CPPPATH = CPPPATH)
 
 Return('group')

+ 5 - 1
components/libc/compilers/common/partial/ls1/readme.md

@@ -1,4 +1,8 @@
 This folder will be included when compiling the BSPs as follow:
 
 - ls1bdev
-- ls1cdev
+- ls1cdev
+
+These files will be generated by scons automatically , and **DO NOT** change them:
+
+- sys/select.h

+ 52 - 0
components/libc/compilers/common/partial/ls1/sys/select.h

@@ -0,0 +1,52 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-07-21     Meco Man     The first version
+ */
+
+#ifndef __SYS_SELECT_H__
+#define __SYS_SELECT_H__
+
+#include <rtconfig.h>
+#include <sys/types.h>
+#include <sys/time.h>
+
+#ifndef  FD_SETSIZE
+#define  FD_SETSIZE  32
+#endif
+
+#ifdef SAL_USING_POSIX
+#ifdef FD_SETSIZE
+#undef FD_SETSIZE
+#endif
+#define FD_SETSIZE      DFS_FD_MAX
+#endif /* SAL_USING_POSIX */
+
+#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
+
+#ifndef _SYS_TYPES_FD_SET /* MIPS */
+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 /* _SYS_TYPES_FD_SET */
+
+int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);
+
+#endif /* __SYS_SELECT_H__ */