diff options
| author | bernard <[email protected]> | 2017-10-17 22:27:06 +0800 |
|---|---|---|
| committer | bernard <[email protected]> | 2017-10-17 22:27:06 +0800 |
| commit | 8a38307e2cce628017e9eb7153ae7a2430a3d9ef (patch) | |
| tree | 1eb4cfdceddb9c542806acf226d463de62271abb /components/dfs/include | |
| parent | 947d8aa4d2d0742eb5ac1968406893f4e58a279b (diff) | |
[libc] Add RT_USING_POSIX macro.
1. Add macro check in rtdebug.h;
2. Use RT_USING_POSIX for poll/select, stdin etc.
3. Split dfs_posix.h to dfs_posix.h, dfs_poll.h and dfs_select.h;
Diffstat (limited to 'components/dfs/include')
| -rw-r--r-- | components/dfs/include/dfs_poll.h | 37 | ||||
| -rw-r--r-- | components/dfs/include/dfs_posix.h | 91 | ||||
| -rw-r--r-- | components/dfs/include/dfs_select.h | 65 |
3 files changed, 102 insertions, 91 deletions
diff --git a/components/dfs/include/dfs_poll.h b/components/dfs/include/dfs_poll.h new file mode 100644 index 0000000000..cfdf74fbe4 --- /dev/null +++ b/components/dfs/include/dfs_poll.h @@ -0,0 +1,37 @@ +#ifndef DFS_POLL_H__ +#define DFS_POLL_H__ + +#include <rtthread.h> + +#ifdef RT_USING_POSIX +#include <sys/time.h> /* for struct timeval */ + +#define POLLIN (0x01) +#define POLLRDNORM (0x01) +#define POLLRDBAND (0x01) +#define POLLPRI (0x01) + +#define POLLOUT (0x02) +#define POLLWRNORM (0x02) +#define POLLWRBAND (0x02) + +#define POLLERR (0x04) +#define POLLHUP (0x08) +#define POLLNVAL (0x10) + +#define POLLMASK_DEFAULT (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM) + +typedef unsigned int nfds_t; + +struct pollfd +{ + int fd; + short events; + short revents; +}; + +int poll(struct pollfd *fds, nfds_t nfds, int timeout); +#endif + +#endif + diff --git a/components/dfs/include/dfs_posix.h b/components/dfs/include/dfs_posix.h index e775474f0a..b0fe2041ab 100644 --- a/components/dfs/include/dfs_posix.h +++ b/components/dfs/include/dfs_posix.h @@ -28,7 +28,6 @@ #define __DFS_POSIX_H__ #include <dfs_file.h> -#include <sys/time.h> /* for struct timeval */ #ifdef __cplusplus extern "C" { @@ -81,96 +80,6 @@ int access(const char *path, int amode); int pipe(int fildes[2]); int mkfifo(const char *path, mode_t mode); -/* poll and select */ - -#define POLLIN (0x01) -#define POLLRDNORM (0x01) -#define POLLRDBAND (0x01) -#define POLLPRI (0x01) - -#define POLLOUT (0x02) -#define POLLWRNORM (0x02) -#define POLLWRBAND (0x02) - -#define POLLERR (0x04) -#define POLLHUP (0x08) -#define POLLNVAL (0x10) - -#define POLLMASK_DEFAULT (POLLIN | POLLOUT | POLLRDNORM | POLLWRNORM) - -typedef unsigned int nfds_t; - -struct pollfd -{ - int fd; - short events; - short revents; -}; - -int poll(struct pollfd *fds, nfds_t nfds, int timeout); - - -#ifdef RT_USING_LWIP -/* we use lwIP's structure definitions. */ -#include <lwip/sockets.h> -#else - -#ifndef FD_SET - -/* Get the total number of descriptors that we will have to support */ - -#define FD_SETSIZE (12) - -/* We will use a 32-bit bitsets to represent the set of descriptors. How - * many uint32_t's do we need to span all descriptors? - */ - -#if FD_SETSIZE <= 32 -# define __SELECT_NUINT32 1 -#elif FD_SETSIZE <= 64 -# define __SELECT_NUINT32 2 -#elif FD_SETSIZE <= 96 -# define __SELECT_NUINT32 3 -#elif FD_SETSIZE <= 128 -# define __SELECT_NUINT32 4 -#elif FD_SETSIZE <= 160 -# define __SELECT_NUINT32 5 -#elif FD_SETSIZE <= 192 -# define __SELECT_NUINT32 6 -#elif FD_SETSIZE <= 224 -# define __SELECT_NUINT32 7 -#elif FD_SETSIZE <= 256 -# define __SELECT_NUINT32 8 -#else -# warning "Larger fd_set needed" -#endif - -/* These macros map a file descriptor to an index and bit number */ - -#define _FD_NDX(fd) ((fd) >> 5) -#define _FD_BIT(fd) ((fd) & 0x1f) - -/* Standard helper macros */ - -#define FD_CLR(fd,set) \ - ((((fd_set*)(set))->arr)[_FD_NDX(fd)] &= ~(1 << _FD_BIT(fd))) -#define FD_SET(fd,set) \ - ((((fd_set*)(set))->arr)[_FD_NDX(fd)] |= (1 << _FD_BIT(fd))) -#define FD_ISSET(fd,set) \ - (((((fd_set*)(set))->arr)[_FD_NDX(fd)] & (1 << _FD_BIT(fd))) != 0) -#define FD_ZERO(set) \ - memset((set), 0, sizeof(fd_set)) - -typedef struct -{ - uint32_t arr[__SELECT_NUINT32]; -}fd_set; -#endif - -#endif - -int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); - #ifdef __cplusplus } #endif diff --git a/components/dfs/include/dfs_select.h b/components/dfs/include/dfs_select.h new file mode 100644 index 0000000000..0b5d6cef17 --- /dev/null +++ b/components/dfs/include/dfs_select.h @@ -0,0 +1,65 @@ +#ifndef DFS_SELECT_H__ +#define DFS_SELECT_H__ + +#ifdef RT_USING_LWIP +/* we use lwIP's structure definitions. */ +#include <lwip/sockets.h> +#elif defined(RT_USING_POSIX) + +#ifndef FD_SET + +/* Get the total number of descriptors that we will have to support */ + +#define FD_SETSIZE (12) + +/* We will use a 32-bit bitsets to represent the set of descriptors. How + * many uint32_t's do we need to span all descriptors? + */ + +#if FD_SETSIZE <= 32 +# define __SELECT_NUINT32 1 +#elif FD_SETSIZE <= 64 +# define __SELECT_NUINT32 2 +#elif FD_SETSIZE <= 96 +# define __SELECT_NUINT32 3 +#elif FD_SETSIZE <= 128 +# define __SELECT_NUINT32 4 +#elif FD_SETSIZE <= 160 +# define __SELECT_NUINT32 5 +#elif FD_SETSIZE <= 192 +# define __SELECT_NUINT32 6 +#elif FD_SETSIZE <= 224 +# define __SELECT_NUINT32 7 +#elif FD_SETSIZE <= 256 +# define __SELECT_NUINT32 8 +#else +# warning "Larger fd_set needed" +#endif + +/* These macros map a file descriptor to an index and bit number */ + +#define _FD_NDX(fd) ((fd) >> 5) +#define _FD_BIT(fd) ((fd) & 0x1f) + +/* Standard helper macros */ + +#define FD_CLR(fd,set) \ + ((((fd_set*)(set))->arr)[_FD_NDX(fd)] &= ~(1 << _FD_BIT(fd))) +#define FD_SET(fd,set) \ + ((((fd_set*)(set))->arr)[_FD_NDX(fd)] |= (1 << _FD_BIT(fd))) +#define FD_ISSET(fd,set) \ + (((((fd_set*)(set))->arr)[_FD_NDX(fd)] & (1 << _FD_BIT(fd))) != 0) +#define FD_ZERO(set) \ + memset((set), 0, sizeof(fd_set)) + +typedef struct +{ + uint32_t arr[__SELECT_NUINT32]; +}fd_set; +#endif + +int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); + +#endif /* end of RT_USING_LWIP */ + +#endif |
