summaryrefslogtreecommitdiff
path: root/src/user/lib/tce/syscall.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/user/lib/tce/syscall.c')
-rw-r--r--src/user/lib/tce/syscall.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/user/lib/tce/syscall.c b/src/user/lib/tce/syscall.c
index c7965a9..4e81475 100644
--- a/src/user/lib/tce/syscall.c
+++ b/src/user/lib/tce/syscall.c
@@ -1,6 +1,7 @@
#include <tce/syscall.h>
#include <stdlib.h>
#include <sched.h>
+#include <tce/vfs.h>
static size_t call(size_t a, size_t b, size_t c, size_t d, size_t e, size_t f) {
size_t ret;
@@ -62,6 +63,8 @@ int proc_priv() {
return call(SC_PROC_PRIV, 0, 0, 0, 0, 0);
}
+// ******** memory
+
void* sbrk(size_t s) {
return (void*)call(SC_SBRK, s, 0, 0, 0, 0);
}
@@ -69,3 +72,41 @@ void* sbrk(size_t s) {
void brk(void* ptr) {
return call (SC_BRK, ptr, 0, 0, 0, 0);
}
+
+// ********** file
+
+FILE open(char* filename, int mode) {
+ return call(SC_OPEN, (unsigned)filename, mode, 0, 0, 0);
+}
+
+FILE open_relative(FILE root, char* filename, int mode) {
+ return call(SC_OPEN_RELATIVE, root, (unsigned) filename, mode, 0, 0);
+}
+
+int stat(char* filename, file_info *info) {
+ return call(SC_STAT, (unsigned) filename, (unsigned) info, 0, 0, 0);
+}
+
+int stat_relative(FILE root, char* filename, file_info *info) {
+ return call(SC_STAT_RELATIVE, root, (unsigned) filename, (unsigned) info, 0, 0);
+}
+
+int statf(FILE file, file_info *info) {
+ return call(SC_STATF, file, (unsigned)info, 0, 0, 0);
+}
+
+void close(FILE file) {
+ call(SC_CLOSE, file, 0, 0, 0, 0);
+}
+
+int read(FILE file, size_t offset, size_t len, char *buffer) {
+ return call(SC_READ, file, offset, len, (unsigned) buffer, 0);
+}
+
+int write(FILE file, size_t offset, size_t len, char* buffer) {
+ return call(SC_WRITE, file, offset, len, (unsigned) buffer, 0);
+}
+
+int link(char* from, char* to, int mode) {
+ return call(SC_LINK, (unsigned) from, (unsigned)to, mode, 0, 0);
+}