Browse Source

[fcntl] create new fcntl.h file for vs (#5860)

* [fcntl] create new fcntl.h file for vs
Man, Jianting (Meco) 3 years ago
parent
commit
6ce4a87492

+ 1 - 1
bsp/simulator/drivers/dfs_win32.c

@@ -246,7 +246,7 @@ static int dfs_win32_close(struct dfs_fd *file)
         WINDIR *wdirp = (WINDIR*)(file->data);
         RT_ASSERT(wdirp != RT_NULL);
         if (_findclose((intptr_t)wdirp->handle) == 0) {
-            free(wdirp->start); //NOTE: here we don't use rt_free!
+            free(wdirp->start); /* NOTE: here we don't use rt_free! */
             rt_free(wdirp);
             return 0;
         }

+ 1 - 1
bsp/simulator/readme.md

@@ -54,7 +54,7 @@ RTGUI的最新源码目前托管在github上:https://github.com/RT-Thread/RTGU
  nand.bin-模拟nand flash,挂载uffs,参数page=2048+64bytes,block=64pages,16M
  nor.bin--模拟nor flash,挂载jffs2,型号为sst25vf,2M
 第一次启动时,会看到fatfs挂在失败,因为文件系统没有格式化,需要键入以下命令:
-mkfs sd0
+`mkfs sd0`
 重启运行程序,可以正确挂载、使用FATFS文件系统。
 
 2) 测试RTGUI

+ 11 - 0
components/libc/compilers/common/extension/fcntl/msvc/SConscript

@@ -0,0 +1,11 @@
+from building import *
+Import('rtconfig')
+
+src   = []
+cwd   = GetCurrentDir()
+CPPPATH = [cwd]
+group = []
+
+if rtconfig.CROSS_TOOL == 'msvc':
+    group = DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH)
+Return('group')

+ 74 - 0
components/libc/compilers/common/extension/fcntl/msvc/fcntl.h

@@ -0,0 +1,74 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2022-09-02     Meco Man     First version
+ */
+
+#ifndef __FCNTL_H__
+#define __FCNTL_H__
+
+#include "sys/types.h"
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/* VS fcntl.h interent */
+#define O_RDONLY        0x0000  /* open for reading only */
+#define O_WRONLY        0x0001  /* open for writing only */
+#define O_RDWR          0x0002  /* open for reading and writing */
+#define O_APPEND        0x0008  /* writes done at eof */
+
+#define O_CREAT         0x0100  /* create and open file */
+#define O_TRUNC         0x0200  /* open and truncate */
+#define O_EXCL          0x0400  /* open only if file doesn't already exist */
+
+// O_TEXT files have <cr><lf> sequences translated to <lf> on read()'s and <lf>
+// sequences translated to <cr><lf> on write()'s
+#define O_TEXT          0x4000  /* file mode is text (translated) */
+
+#define O_BINARY        0x8000  /* file mode is binary (untranslated) */
+#define O_RAW           O_BINARY
+#define O_TEMPORARY     0x0040  /* temporary file bit (file is deleted when last handle is closed) */
+#define O_NOINHERIT     0x0080  /* child process doesn't inherit file */
+#define O_SEQUENTIAL    0x0020  /* file access is primarily sequential */
+#define O_RANDOM        0x0010  /* file access is primarily random */
+
+/* extension */
+#define	O_ACCMODE		0x0003	/* mask for above modes, from 4.4BSD https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.4BSD/usr/include/sys/fcntl.h */
+#define O_NONBLOCK		0x0004	/* non blocking I/O, from BSD apple https://opensource.apple.com/source/xnu/xnu-1228.0.2/bsd/sys/fcntl.h */
+#define O_DIRECTORY		0x200000 /* from Newlib */
+
+#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
+
+int open(const char *file, int flags, ...);
+int fcntl(int fildes, int cmd, ...);
+int creat(const char *path, mode_t mode);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif

+ 1 - 3
components/libc/compilers/common/extension/fcntl/octal/SConscript

@@ -6,8 +6,6 @@ cwd   = GetCurrentDir()
 CPPPATH = [cwd]
 group = []
 
-if rtconfig.PLATFORM in ['armcc', 'armclang'] or\
-   rtconfig.PLATFORM == 'iar' or\
-   rtconfig.CROSS_TOOL == 'msvc':
+if rtconfig.PLATFORM in ['armcc', 'armclang', 'iar']:
     group = DefineGroup('Compiler', src, depend = [''], CPPPATH = CPPPATH)
 Return('group')