summaryrefslogtreecommitdiff
path: root/components/libc/dlib
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2015-05-04 20:35:28 +0800
committerBernard Xiong <[email protected]>2015-05-04 20:35:28 +0800
commit0af011101d896ec77ae1e4c6b4b986ac53a29a87 (patch)
treea3077c404e0fe2dcbe4b54252db7b26753b3475a /components/libc/dlib
parent10d3afde03b62b3e45bb871849aefd66f1d26e27 (diff)
[libc] Add more system header file for armlibc and dlib.
Diffstat (limited to 'components/libc/dlib')
-rw-r--r--components/libc/dlib/SConscript4
-rw-r--r--components/libc/dlib/sys/README.md1
-rw-r--r--components/libc/dlib/sys/errno.h77
-rw-r--r--components/libc/dlib/sys/time.h45
-rw-r--r--components/libc/dlib/sys/types.h12
-rw-r--r--components/libc/dlib/sys/unistd.h34
6 files changed, 173 insertions, 0 deletions
diff --git a/components/libc/dlib/SConscript b/components/libc/dlib/SConscript
index a6b7554a07..44be106e03 100644
--- a/components/libc/dlib/SConscript
+++ b/components/libc/dlib/SConscript
@@ -9,6 +9,10 @@ CPPPATH = [cwd]
CPPDEFINES = ['RT_USING_DLIBC']
if rtconfig.PLATFORM == 'iar':
+
+ if GetDepend('RT_USING_DFS'):
+ CPPDEFINES = CPPDEFINES + ['_DLIB_FILE_DESCRIPTOR', '_DLIB_THREAD_SUPPORT']
+
group = DefineGroup('dlib', src, depend = ['RT_USING_LIBC'],
CPPPATH = CPPPATH, CPPDEFINES = CPPDEFINES)
diff --git a/components/libc/dlib/sys/README.md b/components/libc/dlib/sys/README.md
new file mode 100644
index 0000000000..4f0d203180
--- /dev/null
+++ b/components/libc/dlib/sys/README.md
@@ -0,0 +1 @@
+Because IAR leaks some system header file, we put them in here. \ No newline at end of file
diff --git a/components/libc/dlib/sys/errno.h b/components/libc/dlib/sys/errno.h
new file mode 100644
index 0000000000..ee877c9006
--- /dev/null
+++ b/components/libc/dlib/sys/errno.h
@@ -0,0 +1,77 @@
+#ifndef SYS_ERRNO_H__
+#define SYS_ERRNO_H__
+
+#ifdef RT_USING_DFS
+
+#include <dfs_def.h>
+
+/* using device error codes */
+#define ENOENT DFS_STATUS_ENOENT
+#define EIO DFS_STATUS_EIO
+#define ENXIO DFS_STATUS_ENXIO
+#define EBADF DFS_STATUS_EBADF
+#define EAGAIN DFS_STATUS_EAGAIN
+#define ENOMEM DFS_STATUS_ENOMEM
+#define EBUSY DFS_STATUS_EBUSY
+#define EEXIST DFS_STATUS_EEXIST
+#define EXDEV DFS_STATUS_EXDEV
+#define ENODEV DFS_STATUS_ENODEV
+#define ENOTDIR DFS_STATUS_ENOTDIR
+#define EISDIR DFS_STATUS_EISDIR
+#define EINVAL DFS_STATUS_EINVAL
+#define ENOSPC DFS_STATUS_ENOSPC
+#define EROFS DFS_STATUS_EROFS
+#define ENOSYS DFS_STATUS_ENOSYS
+#define ENOTEMPTY DFS_STATUS_ENOTEMPTY
+
+#else
+
+/* error codes */
+#define ENOENT 2 /* No such file or directory */
+#define EIO 5 /* I/O error */
+#define ENXIO 6 /* No such device or address */
+#define EBADF 9 /* Bad file number */
+#define EAGAIN 11 /* Try again */
+#define ENOMEM 12 /* no memory */
+#define EBUSY 16 /* Device or resource busy */
+#define EEXIST 17 /* File exists */
+#define EXDEV 18 /* Cross-device link */
+#define ENODEV 19 /* No such device */
+#define ENOTDIR 20 /* Not a directory */
+#define EISDIR 21 /* Is a directory */
+#define EINVAL 22 /* Invalid argument */
+#define ENOSPC 28 /* No space left on device */
+#define EROFS 30 /* Read-only file system */
+#define ENOSYS 38 /* Function not implemented */
+#define ENOTEMPTY 39 /* Directory not empty */
+
+#endif
+
+#define EPERM 1 /* Not super-user */
+#define ESRCH 3 /* No such process */
+#define EINTR 4 /* Interrupted system call */
+#define EFAULT 14 /* Bad address */
+#define ENFILE 23 /* Too many open files in system */
+#define ERANGE 34 /* Math result not representable */
+#define EDEADLK 45 /* Deadlock condition */
+#define EBADMSG 77 /* Trying to read unreadable message */
+#define EMSGSIZE 90 /* Message too long */
+#define ENOPROTOOPT 92 /* Protocol not available */
+#define EOPNOTSUPP 95 /* Operation not supported on transport endpoint */
+#define EAFNOSUPPORT 97 /* Address family not supported by protocol */
+#define EADDRINUSE 98 /* Address already in use */
+#define ENETDOWN 100 /* Network is down */
+#define ENETUNREACH 101 /* Network is unreachable */
+#define ECONNABORTED 103 /* Software caused connection abort */
+#define ECONNRESET 104 /* Connection reset by peer */
+#define ENOBUFS 105 /* No buffer space available */
+#define ENOTCONN 107 /* Transport endpoint is not connected */
+#define EINPROGRESS 115 /* Operation now in progress */
+#define ETIMEDOUT 116 /* Connection timed out */
+#define EHOSTUNREACH 113 /* No route to host */
+#define EALREADY 114 /* Operation already in progress */
+#define ENOTSUP 134 /* Not supported */
+#define ENSRNOTFOUND 163 /* Domain name not found */
+#define EWOULDBLOCK EAGAIN /* Operation would block */
+
+#endif
diff --git a/components/libc/dlib/sys/time.h b/components/libc/dlib/sys/time.h
new file mode 100644
index 0000000000..2d60b37317
--- /dev/null
+++ b/components/libc/dlib/sys/time.h
@@ -0,0 +1,45 @@
+#ifndef _SYS_TIME_H_
+#define _SYS_TIME_H_
+
+#include <time.h>
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#ifndef _TIMEVAL_DEFINED
+#define _TIMEVAL_DEFINED
+/*
+ * Structure returned by gettimeofday(2) system call,
+ * and used in other calls.
+ */
+struct timeval {
+ long tv_sec; /* seconds */
+ long tv_usec; /* and microseconds */
+};
+#endif /* _TIMEVAL_DEFINED */
+
+#ifndef _TIMESPEC_DEFINED
+#define _TIMESPEC_DEFINED
+/*
+ * Structure defined by POSIX.1b to be like a timeval.
+ */
+struct timespec {
+ time_t tv_sec; /* seconds */
+ long tv_nsec; /* and nanoseconds */
+};
+#endif /* _TIMESPEC_DEFINED */
+
+struct timezone {
+ int tz_minuteswest; /* minutes west of Greenwich */
+ int tz_dsttime; /* type of dst correction */
+};
+
+int gettimeofday(struct timeval *tp, void *ignore);
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif /* _SYS_TIME_H_ */
diff --git a/components/libc/dlib/sys/types.h b/components/libc/dlib/sys/types.h
new file mode 100644
index 0000000000..b01d8283d4
--- /dev/null
+++ b/components/libc/dlib/sys/types.h
@@ -0,0 +1,12 @@
+#ifndef __TYPES_H__
+#define __TYPES_H__
+
+#include <stdint.h>
+#include <rtthread.h>
+
+typedef rt_int32_t clockid_t;
+typedef rt_int32_t key_t; /* Used for interprocess communication. */
+typedef rt_int32_t pid_t; /* Used for process IDs and process group IDs. */
+typedef signed long ssize_t; /* Used for a count of bytes or an error indication. */
+
+#endif
diff --git a/components/libc/dlib/sys/unistd.h b/components/libc/dlib/sys/unistd.h
new file mode 100644
index 0000000000..06a46746c0
--- /dev/null
+++ b/components/libc/dlib/sys/unistd.h
@@ -0,0 +1,34 @@
+#ifndef _SYS_UNISTD_H
+#define _SYS_UNISTD_H
+
+#ifdef RT_USING_DFS
+#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 */
+
+#define O_RDONLY 0 /* +1 == FREAD */
+#define O_WRONLY 1 /* +1 == FWRITE */
+#define O_RDWR 2 /* +1 == FREAD|FWRITE */
+#define O_APPEND _FAPPEND
+#define O_CREAT _FCREAT
+#define O_TRUNC _FTRUNC
+#define O_EXCL _FEXCL
+#define O_SYNC _FSYNC
+#endif
+
+#endif /* _SYS_UNISTD_H */