diff options
author | Alex AUVOLAT <alexis211@gmail.com> | 2012-05-17 13:30:09 +0200 |
---|---|---|
committer | Alex AUVOLAT <alexis211@gmail.com> | 2012-05-17 13:30:09 +0200 |
commit | 7c9a48b4e6d66cf4f62e7bad9e22ab06923e47ef (patch) | |
tree | df44a926f105c913c77525d35441d20a632f1440 /src/common/include | |
parent | c6d35a5f4fdda6ae2e98498f19a4adaee6d95692 (diff) | |
download | TCE-7c9a48b4e6d66cf4f62e7bad9e22ab06923e47ef.tar.gz TCE-7c9a48b4e6d66cf4f62e7bad9e22ab06923e47ef.zip |
Beginning of a VFS implemented. C++ is great.
Diffstat (limited to 'src/common/include')
-rw-r--r-- | src/common/include/string.h | 2 | ||||
-rw-r--r-- | src/common/include/tce/syscalls.h | 27 | ||||
-rw-r--r-- | src/common/include/tce/vfs.h | 42 |
3 files changed, 66 insertions, 5 deletions
diff --git a/src/common/include/string.h b/src/common/include/string.h index e6aa86e..19e87c1 100644 --- a/src/common/include/string.h +++ b/src/common/include/string.h @@ -10,7 +10,7 @@ extern "C" { int strlen(const char *str); char *strcpy(char *dest, const char *src); -// char *strdup(const char *src); // uses malloc, that's bad +char *strdup(const char *src); // uses malloc, that's bad char *strchr(const char *str, char c); char *strcat(char *dest, const char *src); int strcmp(const char *s1, const char *s2); diff --git a/src/common/include/tce/syscalls.h b/src/common/include/tce/syscalls.h index 3b5b68f..6c67523 100644 --- a/src/common/include/tce/syscalls.h +++ b/src/common/include/tce/syscalls.h @@ -9,11 +9,30 @@ #define SC_THREAD_NEW 6 #define SC_IRQ_WAIT 7 #define SC_PROC_PRIV 8 -#define SC_SBRK 9 -#define SC_BRK 10 +#define SC_SBRK 10 +#define SC_BRK 11 // NOT YET IMPLEMENTED -#define SC_MMAP 11 -#define SC_MUNMAP 12 +#define SC_MMAP 12 +#define SC_MUNMAP 13 + +#define SC_OPEN 20 +#define SC_OPEN_RELATIVE 21 +#define SC_STAT 22 +#define SC_STAT_RELATIVE 23 +#define SC_STATF 24 +#define SC_CLOSE 25 +#define SC_READ 26 +#define SC_WRITE 27 +#define SC_LINK 28 + + +// ERRORS +#define E_NOT_IMPLEMENTED -1 +#define E_NOT_FOUND -2 +#define E_INVALID_FD -3 +#define E_TOO_SHORT -4 // not enough space for data to be copied to +#define E_INVALID_RANGE -5 +#define E_INVALID -6 // anything went wrong - invalid parameter, usually #endif diff --git a/src/common/include/tce/vfs.h b/src/common/include/tce/vfs.h new file mode 100644 index 0000000..20ea03b --- /dev/null +++ b/src/common/include/tce/vfs.h @@ -0,0 +1,42 @@ +#ifndef DEF_TCE_VFS_H +#define DEF_TCE_VFS_H + +#include <types.h> + +typedef size_t FILE; + +typedef struct _file_info { + uint32_t type; + uint32_t dev_type; + uint32_t mode; + uint32_t uid, gid; + size_t size; +} file_info; + +// file open flags +#define FM_READ 0x00000001 +#define FM_WRITE 0x00000002 +#define FM_APPEND 0x00000004 +#define FM_TRUNC 0x00000008 +#define FM_CREATE 0x00000010 +#define FM_DELETE 0x00000020 + +// link modes +#define LM_SYMLINK 1 +#define LM_HARDLINK 2 +#define LM_MOUNT 3 +#define LM_OUTPUT_TO 4 + +// file type flags +#define FT_FILE 0x00000001 +#define FT_DIR 0x00000002 +#define FT_SYMLINK 0x00000004 +#define FT_DEV 0x00000008 +#define FT_TERMINAL 0x00000010 + +// device types +#define DT_BLOCK 1 +#define DT_KEYBOARD 2 +#define DT_DISPLAY 3 + +#endif |