URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [trunk/] [gnu-stable/] [newlib-1.18.0/] [newlib/] [libc/] [sys/] [arc/] [syscalls.c] - Rev 859
Go to most recent revision | Compare with Previous | Blame | View Log
#include <sys/types.h> #include <sys/stat.h> #include <sys/syscall.h> #include <_ansi.h> #include <errno.h> #include <fcntl.h> #include <stdarg.h> #include <reent.h> _ssize_t _read_r (struct _reent *r, int fd, void *buf, size_t nbytes) { int err; _ssize_t rc; SYSCALL (SYS_read, rc, err, fd, buf, nbytes); if (err) __errno_r (r) = err; return rc; } _ssize_t _write_r (struct _reent *r, int fd, const void *buf, size_t nbytes) { int err; _ssize_t rc; SYSCALL (SYS_write, rc, err, fd, buf, nbytes); if (err) __errno_r (r) = err; return rc; } /* FIXME: The prototype in <fcntl.h> for open() uses ..., but reent.h uses int. */ int _open_r (struct _reent *r, const char *buf, int flags, int mode) { int rc,err; #if 0 int mode; va_list ap; va_start (ap, flags); mode = va_arg (ap, int); va_end (ap); #endif SYSCALL (SYS_open, rc, err, buf, flags, mode); if (err) __errno_r (r) = err; return rc; } int _close_r (struct _reent *r, int fd) { int rc,err; SYSCALL (SYS_close, rc, err, fd, 0, 0); if (err) __errno_r (r) = err; return rc; } off_t _lseek_r (struct _reent *r, int fd, off_t offset, int whence) { int err; off_t rc; SYSCALL (SYS_lseek, rc, err, fd, offset, whence); if (err) __errno_r (r) = err; return rc; } int _fstat_r (struct _reent *r, int fd, struct stat *buf) { int rc,err; SYSCALL (SYS_fstat, rc, err, fd, buf, 0); if (err) __errno_r (r) = err; return rc; } /* FIXME: Shouldn't this be _exit_r? */ void _exit (int ret) { int rc,err; SYSCALL (SYS_exit, rc, err, ret, 0, 0); /* If that failed, use an infinite loop. */ while (1) continue; } time_t _time (time_t *timer) { return 0; } int _creat_r (struct _reent *r, const char *path, int mode) { return _open_r (r, path, O_CREAT | O_TRUNC, mode); } int _getpid_r (struct _reent *r) { return 42; } int _kill_r (struct _reent *r, int pid, int sig) { int rc,err; SYSCALL (SYS_kill, rc, err, pid, sig, 0); if (err) __errno_r (r) = err; return rc; }
Go to most recent revision | Compare with Previous | Blame | View Log