From b1459dc199ffbaf93c9da017714935d25ac157b5 Mon Sep 17 00:00:00 2001 From: Joel Sherrill Date: Fri, 22 Aug 1997 19:17:09 +0000 Subject: Moved reentrant wrappers into their own file. --- c/src/lib/libc/Makefile.in | 3 +- c/src/lib/libc/newlibc.c | 6 ++-- c/src/lib/libc/newlibif.c | 1 + c/src/lib/libc/newlibifr.c | 89 ++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 94 insertions(+), 5 deletions(-) create mode 100644 c/src/lib/libc/newlibifr.c (limited to 'c/src/lib/libc') diff --git a/c/src/lib/libc/Makefile.in b/c/src/lib/libc/Makefile.in index ea9f78709e..c8679128bc 100644 --- a/c/src/lib/libc/Makefile.in +++ b/c/src/lib/libc/Makefile.in @@ -12,7 +12,8 @@ LIB=${ARCH}/${LIBNAME} # C and C++ source names, if any, go here -- minus the .c or .cc C_PIECES=__gettod __brk __times malloc syscalls \ - no_libc newlibc newlibif support unixlibc libio hosterr tcattr + no_libc newlibc newlibif newlibifr support unixlibc \ + libio hosterr tcattr C_FILES=$(C_PIECES:%=%.c) C_O_FILES=$(C_PIECES:%=${ARCH}/%.o) diff --git a/c/src/lib/libc/newlibc.c b/c/src/lib/libc/newlibc.c index ac8b146a48..da50cdeeb5 100644 --- a/c/src/lib/libc/newlibc.c +++ b/c/src/lib/libc/newlibc.c @@ -371,18 +371,16 @@ void exit(int status) * These are directly supported (and completely correct) in the posix api. */ -#if !defined(RTEMS_POSIX_API) pid_t __getpid(void) { - return 0; + return getpid(); } -#endif /* #if !defined(RTEMS_POSIX_API) || defined(__GO32__) */ #if !defined(RTEMS_POSIX_API) pid_t getpid(void) { - return __getpid(); + return (0); } #endif diff --git a/c/src/lib/libc/newlibif.c b/c/src/lib/libc/newlibif.c index a7370cda47..ac9781ab58 100644 --- a/c/src/lib/libc/newlibif.c +++ b/c/src/lib/libc/newlibif.c @@ -16,6 +16,7 @@ #include #include #include +#include #include diff --git a/c/src/lib/libc/newlibifr.c b/c/src/lib/libc/newlibifr.c new file mode 100644 index 0000000000..1879239f9e --- /dev/null +++ b/c/src/lib/libc/newlibifr.c @@ -0,0 +1,89 @@ + +/* + * This file contains the glue which maps newlib system calls onto their + * RTEMS implementations. This formerly was in the file + * libgloss/rtems/iface.c which was installed as rtems.o. Merging this + * into the RTEMS source tree minimizes the files which must be linked + * to build an rtems application. + * + * $Id$ + * + */ + +#include +#if defined(RTEMS_NEWLIB) + +#include +#include +#include +#include + +#include + +#include "internal.h" +#include "libio.h" + +_ssize_t +_read_r(struct _reent *ptr, + int fd, + void *buf, + size_t nbytes) +{ + return __rtems_read(fd, buf, nbytes); +} + +long +_write_r(struct _reent *ptr, + int fd, + const void *buf, + size_t nbytes +) +{ + return __rtems_write(fd, buf, nbytes); +} + +int +_open_r(struct _reent *ptr, + const char *buf, + int flags, + int mode) +{ + return __rtems_open(buf, flags, mode); +} + +int +_close_r(struct _reent *ptr, + int fd) +{ + return __rtems_close(fd); +} + +off_t +_lseek_r(struct _reent *ptr, + int fd, + off_t offset, + int whence) +{ + return __rtems_lseek(fd, offset, whence); +} + +int +_fstat_r(struct _reent *ptr, + int fd, + struct stat *buf) +{ + return __rtems_fstat(fd, buf); +} + +pid_t _getpid_r(struct _reent *ptr) +{ + pid_t __getpid(); + return __getpid(); +} + +int _kill_r( struct _reent *ptr, pid_t pid, int sig ) +{ + int __kill(); + return __kill(pid, sig); +} +#endif -- cgit v1.2.3