From 6ce4a87492571a6e2999eb1cfda4976ef3b4f655 Mon Sep 17 00:00:00 2001 From: "Man, Jianting (Meco)" <920369182@qq.com> Date: Sat, 23 Apr 2022 22:52:57 -0400 Subject: [PATCH] [fcntl] create new fcntl.h file for vs (#5860) * [fcntl] create new fcntl.h file for vs --- bsp/simulator/drivers/dfs_win32.c | 2 +- bsp/simulator/readme.md | 2 +- .../common/extension/fcntl/msvc/SConscript | 11 +++ .../common/extension/fcntl/msvc/fcntl.h | 74 +++++++++++++++++++ .../common/extension/fcntl/octal/SConscript | 4 +- 5 files changed, 88 insertions(+), 5 deletions(-) create mode 100644 components/libc/compilers/common/extension/fcntl/msvc/SConscript create mode 100644 components/libc/compilers/common/extension/fcntl/msvc/fcntl.h diff --git a/bsp/simulator/drivers/dfs_win32.c b/bsp/simulator/drivers/dfs_win32.c index 95bfba030f..f0e08a958d 100644 --- a/bsp/simulator/drivers/dfs_win32.c +++ b/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; } diff --git a/bsp/simulator/readme.md b/bsp/simulator/readme.md index 0daeb1e31e..07fa0b06f4 100644 --- a/bsp/simulator/readme.md +++ b/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 diff --git a/components/libc/compilers/common/extension/fcntl/msvc/SConscript b/components/libc/compilers/common/extension/fcntl/msvc/SConscript new file mode 100644 index 0000000000..bb1682d1bc --- /dev/null +++ b/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') diff --git a/components/libc/compilers/common/extension/fcntl/msvc/fcntl.h b/components/libc/compilers/common/extension/fcntl/msvc/fcntl.h new file mode 100644 index 0000000000..26a380119d --- /dev/null +++ b/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 sequences translated to on read()'s and +// sequences translated to 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 diff --git a/components/libc/compilers/common/extension/fcntl/octal/SConscript b/components/libc/compilers/common/extension/fcntl/octal/SConscript index 7494b19410..65e7cf264e 100644 --- a/components/libc/compilers/common/extension/fcntl/octal/SConscript +++ b/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') -- GitLab