diff options
author | Jonathan Larmour <jifl@eCosCentric.com> | 2002-04-29 21:51:25 +0000 |
---|---|---|
committer | Jonathan Larmour <jifl@eCosCentric.com> | 2002-04-29 21:51:25 +0000 |
commit | 6990dc5f3b4f0a7765ef1995f02d8a51264277f6 (patch) | |
tree | 20089e3f07fb21b3cf7f285633b933e73a12d156 /libgloss/arm/redboot-syscalls.c | |
parent | 822afa537ae4e03136d6262269ee460912ddabb1 (diff) | |
download | cygnal-6990dc5f3b4f0a7765ef1995f02d8a51264277f6.tar.gz cygnal-6990dc5f3b4f0a7765ef1995f02d8a51264277f6.tar.bz2 cygnal-6990dc5f3b4f0a7765ef1995f02d8a51264277f6.zip |
* arm/syscall.h: New file. To define extra syscall values for RedBoot.
* arm/redboot-syscalls.c (_close): Fix setting of errno value.
(_lseek): Ditto.
(_open): Ditto.
(_write): Ditto.
(_read): Ditto.
(_rename): New function.
(_system): Ditto.
(_stat): Ditto.
(_unlink): Call a syscall for this now.
(isatty): Ditto.
(_fstat): Ditto.
(_gettimeofday): Ditto.
Diffstat (limited to 'libgloss/arm/redboot-syscalls.c')
-rw-r--r-- | libgloss/arm/redboot-syscalls.c | 105 |
1 files changed, 89 insertions, 16 deletions
diff --git a/libgloss/arm/redboot-syscalls.c b/libgloss/arm/redboot-syscalls.c index 1b990ffb2..3b5a02b27 100644 --- a/libgloss/arm/redboot-syscalls.c +++ b/libgloss/arm/redboot-syscalls.c @@ -38,8 +38,11 @@ _close(int fd) { int err; err = __syscall(SYS_close, fd); - if (err) - errno = err; + if (err<0) + { + errno = -err; + return -1; + } return err; } @@ -53,11 +56,29 @@ _exit(int stat) int +_stat (const char *filename, struct stat *st) +{ + int err; + err = __syscall(SYS_stat, filename, st); + if (err<0) + { + errno = -err; + return -1; + } + return err; +} + +int _fstat (int file, struct stat *st) { - st->st_mode = S_IFCHR; - st->st_blksize = 4096; - return 0; + int err; + err = __syscall(SYS_fstat, file, st); + if (err<0) + { + errno = -err; + return -1; + } + return err; } int @@ -70,14 +91,28 @@ _getpid(void) int _gettimeofday (void * tp, void * tzp) { - return 0; + int err; + err = __syscall(SYS_gettimeofday, tp, tzp); + if (err<0) + { + errno = -err; + return -1; + } + return err; } int isatty(int fd) { - return (1); + int err; + err = __syscall(SYS_isatty, fd); + if (err<0) + { + errno = -err; + return -1; + } + return err; } @@ -95,8 +130,11 @@ _lseek(int fd, off_t offset, int whence) { int err; err = __syscall(SYS_lseek, fd, offset, whence); - if (err) - errno = err; + if (err<0) + { + errno = -err; + return (off_t)-1; + } return err; } @@ -106,8 +144,11 @@ _open(const char *buf, int flags, int mode) { int err ; err = __syscall(SYS_open, buf, flags, mode); - if (err) - errno = err; + if (err<0) + { + errno = -err; + return -1; + } return err; } @@ -118,8 +159,11 @@ _write(int fd, const char *buf, int nbytes) int err; err = __syscall(SYS_write, fd, buf, nbytes); - if (err) - errno = err; + if (err<0) + { + errno = -err; + return -1; + } return err; } @@ -147,8 +191,11 @@ _read(int fd, char *buf, int nbytes) { int err; err = __syscall(SYS_read, fd, buf, nbytes); - if (err) - errno = err; + if (err<0) + { + errno = -err; + return -1; + } return err; } @@ -190,13 +237,39 @@ _times(struct tms * tp) return utime; } +int +_rename (const char *oldpath, const char *newpath) +{ + int err ; + err = __syscall(SYS_rename, oldpath, newpath); + if (err<0) + { + errno = -err; + return -1; + } + return err; +} int _unlink (const char *pathname) { - return -1; + int err ; + err = __syscall(SYS_unlink, pathname); + if (err<0) + { + errno = -err; + return -1; + } + return err; } +int +_system (const char *command) +{ + int err ; + err = __syscall(SYS_system, command); + return err; +} #define SYS_meminfo 1001 |