summaryrefslogtreecommitdiff
path: root/components/libc
diff options
context:
space:
mode:
Diffstat (limited to 'components/libc')
-rw-r--r--components/libc/newlib/syscalls.c80
1 files changed, 62 insertions, 18 deletions
diff --git a/components/libc/newlib/syscalls.c b/components/libc/newlib/syscalls.c
index 6204dafa12..58e0b9c74e 100644
--- a/components/libc/newlib/syscalls.c
+++ b/components/libc/newlib/syscalls.c
@@ -1,57 +1,101 @@
#include <reent.h>
#include <sys/errno.h>
+#include <rtthread.h>
-int _fork_r (struct _reent *r)
+int
+_fork_r (struct _reent *r)
{
/* return "not supported" */
r->_errno = ENOTSUP;
return -1;
}
-_ssize_t
-_read_r (struct _reent *r, int fd, void *buf, size_t nbytes)
+/*
+ * I/O routine stub
+ */
+int
+_isatty_r(struct _reent *r, int fd)
{
_ssize_t rc;
rc = -1;
-
/* return "not supported" */
r->_errno = ENOTSUP;
+
+ return rc;
+}
+
+int
+_open_r(struct _reent *r, const char *file, int flags, int mode)
+{
+ int rc;
+
+ rc = open(file, flags, mode);
return rc;
}
_ssize_t
-_write_r (struct _reent *r, int fd, const void *buf, size_t nbytes)
+_read_r (struct _reent *r, int fd, void *buf, size_t nbytes)
{
_ssize_t rc;
- rc = -1;
-
- /* return "not supported" */
- r->_errno = ENOTSUP;
+ rc = read(fd, buf, nbytes);
return rc;
}
-int
-_close_r (struct _reent *r, int fd)
+_ssize_t
+_write_r (struct _reent *r, int fd, const void *buf, size_t nbytes)
{
_ssize_t rc;
- rc = -1;
-
- /* return "not supported" */
- r->_errno = ENOTSUP;
+ rc = write(fd, buf, nbytes);
return rc;
}
+int
+_close_r (struct _reent *r, int fd)
+{
+ return close(fd);
+}
+
_off_t
_lseek_r (struct _reent *r, int fd, _off_t offset, int whence)
{
- _ssize_t rc;
+ _off_t rc;
- rc = -1;
+ rc = lseek(fd, offset, whence);
+ return rc;
+}
+int _fstat_r (struct _reent *r, int fd, struct stat *pstat)
+{
/* return "not supported" */
r->_errno = ENOTSUP;
- return rc;
+ return -1;
+}
+
+/*
+ * memory routine stub
+ */
+void *
+_malloc_r (struct _reent *ptr, size_t size)
+{
+ return (void*)rt_malloc (size);
+}
+
+void *
+_realloc_r (struct _reent *ptr, void *old, size_t newlen)
+{
+ return (void*)rt_realloc (old, newlen);
+}
+
+void *_calloc_r (struct _reent *ptr, size_t size, size_t len)
+{
+ return (void*)rt_calloc (size, len);
+}
+
+void
+_free_r (struct _reent *ptr, void *addr)
+{
+ rt_free (addr);
}