Przeglądaj źródła

Merge pull request #5053 from mysterywolf/posix

[libc标准化] 将dfs_posix.h的函数声明转移到unix标准头文件中
Bernard Xiong 3 lat temu
rodzic
commit
38baf89da4

+ 1 - 7
components/dfs/include/dfs.h

@@ -18,6 +18,7 @@
 #include <dirent.h>
 #include <fcntl.h>
 #include <sys/stat.h>
+#include <sys/statfs.h>
 #include <sys/time.h>
 #include <rtdevice.h>
 
@@ -68,13 +69,6 @@ extern "C" {
 #define DFS_F_EOF               0x04000000
 #define DFS_F_ERR               0x08000000
 
-struct statfs
-{
-    size_t f_bsize;   /* block size */
-    size_t f_blocks;  /* total data blocks in file system */
-    size_t f_bfree;   /* free blocks in file system */
-};
-
 struct dfs_fdtable
 {
     uint32_t maxfd;

+ 3 - 38
components/dfs/include/dfs_posix.h

@@ -16,44 +16,9 @@
 #define __DFS_POSIX_H__
 
 #include <dfs_file.h>
+#include <unistd.h>
+#include <stdio.h> /* rename() */
 #include <sys/stat.h>
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-/* file api*/
-
-int close(int d);
-
-#if defined(RT_USING_NEWLIB) && defined(_EXFUN)
-_READ_WRITE_RETURN_TYPE _EXFUN(read, (int __fd, void *__buf, size_t __nbyte));
-_READ_WRITE_RETURN_TYPE _EXFUN(write, (int __fd, const void *__buf, size_t __nbyte));
-#else
-int read(int fd, void *buf, size_t len);
-int write(int fd, const void *buf, size_t len);
-#endif
-
-off_t lseek(int fd, off_t offset, int whence);
-int rename(const char *from, const char *to);
-int unlink(const char *pathname);
-int fsync(int fildes);
-int ftruncate(int fd, off_t length);
-
-/* directory api*/
-int rmdir(const char *path);
-int chdir(const char *path);
-char *getcwd(char *buf, size_t size);
-
-/* file system api */
-int statfs(const char *path, struct statfs *buf);
-
-int access(const char *path, int amode);
-int pipe(int fildes[2]);
-
-#ifdef __cplusplus
-}
-#endif
+#include <sys/statfs.h> /* statfs() */
 
 #endif

+ 2 - 10
components/dfs/src/dfs_posix.c

@@ -110,11 +110,7 @@ RTM_EXPORT(close);
  * @return the actual read data buffer length. If the returned value is 0, it
  * may be reach the end of file, please check errno.
  */
-#if defined(RT_USING_NEWLIB) && defined(_EXFUN)
-_READ_WRITE_RETURN_TYPE _EXFUN(read, (int fd, void *buf, size_t len))
-#else
-int read(int fd, void *buf, size_t len)
-#endif
+ssize_t read(int fd, void *buf, size_t len)
 {
     int result;
     struct dfs_fd *d;
@@ -154,11 +150,7 @@ RTM_EXPORT(read);
  *
  * @return the actual written data buffer length.
  */
-#if defined(RT_USING_NEWLIB) && defined(_EXFUN)
-_READ_WRITE_RETURN_TYPE _EXFUN(write, (int fd, const void *buf, size_t len))
-#else
-int write(int fd, const void *buf, size_t len)
-#endif
+ssize_t write(int fd, const void *buf, size_t len)
 {
     int result;
     struct dfs_fd *d;

+ 1 - 0
components/libc/compilers/common/none-gcc/sys/types.h

@@ -12,6 +12,7 @@
 #define __SYS_TYPES_H__
 
 #include <stdint.h>
+#include <stddef.h>
 
 typedef int32_t          clockid_t;
 typedef int32_t          key_t;         /* Used for interprocess communication. */

+ 17 - 53
components/libc/compilers/common/none-gcc/sys/unistd.h

@@ -6,68 +6,32 @@
  * Change Logs:
  * Date           Author       Notes
  * 2020-12-16     Meco Man     add usleep
+ * 2021-09-11     Meco Man     move functions from dfs_posix.h to unistd.h
  */
 #ifndef __SYS_UNISTD_H__
 #define __SYS_UNISTD_H__
 
-#include <rtconfig.h>
-#include "types.h"
-
-#ifdef RT_USING_DFS
+#include <stddef.h>
+#include "types.h" /* <sys/types.h> */
 
 #define STDIN_FILENO    0       /* standard input file descriptor */
 #define STDOUT_FILENO   1       /* standard output file descriptor */
 #define STDERR_FILENO   2       /* standard error file descriptor */
 
-#include <dfs_posix.h>
-#else
-#define _FREAD      0x0001  /* read enabled */
-#define _FWRITE     0x0002  /* write enabled */
-#define _FAPPEND    0x0008  /* append (writes guaranteed at the end) */
-#define _FMARK      0x0010  /* internal; mark during gc() */
-#define _FDEFER     0x0020  /* internal; defer for next gc pass */
-#define _FASYNC     0x0040  /* signal pgrp when data ready */
-#define _FSHLOCK    0x0080  /* BSD flock() shared lock present */
-#define _FEXLOCK    0x0100  /* BSD flock() exclusive lock present */
-#define _FCREAT     0x0200  /* open with file create */
-#define _FTRUNC     0x0400  /* open with truncation */
-#define _FEXCL      0x0800  /* error on open if file exists */
-#define _FNBIO      0x1000  /* non blocking I/O (sys5 style) */
-#define _FSYNC      0x2000  /* do all writes synchronously */
-#define _FNONBLOCK  0x4000  /* non blocking I/O (POSIX style) */
-#define _FNDELAY    _FNONBLOCK  /* non blocking I/O (4.2 style) */
-#define _FNOCTTY    0x8000  /* don't assign a ctty on this open */
-
-
-#ifndef O_RDONLY
-#define O_RDONLY    0       /* +1 == FREAD */
-#endif
-#ifndef O_WRONLY
-#define O_WRONLY    1       /* +1 == FWRITE */
-#endif
-#ifndef O_RDWR
-#define O_RDWR      2       /* +1 == FREAD|FWRITE */
-#endif
-#ifndef O_APPEND
-#define O_APPEND    _FAPPEND
-#endif
-#ifndef O_CREAT
-#define O_CREAT     _FCREAT
-#endif
-#ifndef O_TRUNC
-#define O_TRUNC     _FTRUNC
-#endif
-#ifndef O_EXCL
-#define O_EXCL      _FEXCL
-#endif
-#ifndef O_SYNC
-#define O_SYNC      _FSYNC
-#endif
-
-#endif
-
-int     isatty      (int fd);
-char *  ttyname     (int desc);
+ssize_t read(int fd, void *buf, size_t len);
+ssize_t write(int fd, const void *buf, size_t len);
+off_t lseek(int fd, off_t offset, int whence);
+int fsync(int fildes);
+int unlink(const char *pathname);
+int close(int d);
+int ftruncate(int fd, off_t length);
+int rmdir(const char *path);
+int chdir(const char *path);
+char *getcwd(char *buf, size_t size);
+int access(const char *path, int amode);
+int pipe(int fildes[2]);
+int isatty(int fd);
+char *ttyname(int desc);
 unsigned int sleep(unsigned int seconds);
 int usleep(useconds_t usec);
 pid_t gettid(void);

+ 9 - 6
components/libc/compilers/common/sys/statfs.h

@@ -6,16 +6,19 @@
  * Change Logs:
  * Date           Author       Notes
  */
-#ifndef __RTT_STATFS_H__
-#define __RTT_STATFS_H__
+#ifndef __SYS_STATFS_H__
+#define __SYS_STATFS_H__
 
-#include <rtthread.h>
+#include <stddef.h>
 
 struct statfs
 {
-    rt_size_t f_bsize;   /* block size */
-    rt_size_t f_blocks;  /* total data blocks in file system */
-    rt_size_t f_bfree;   /* free blocks in file system */
+    size_t f_bsize;   /* block size */
+    size_t f_blocks;  /* total data blocks in file system */
+    size_t f_bfree;   /* free blocks in file system */
 };
 
+int statfs(const char *path, struct statfs *buf);
+int fstatfs(int fd, struct statfs *buf);
+
 #endif

+ 15 - 0
components/libc/compilers/common/sys/vfs.h

@@ -0,0 +1,15 @@
+/*
+ * Copyright (c) 2006-2021, RT-Thread Development Team
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ *
+ * Change Logs:
+ * Date           Author       Notes
+ * 2021-09-11     Meco Man     First version
+ */
+#ifndef __SYS_VFS_H__
+#define __SYS_VFS_H__
+
+#include "statfs.h" /* <sys/statfs.h> */
+
+#endif