summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2007-02-01 16:33:05 +0000
committerJeff Johnston <jjohnstn@redhat.com>2007-02-01 16:33:05 +0000
commit7d592bb1785253ba2266392dbb41f5bd563469d6 (patch)
tree6a07a6865d6ab61a65711f68ab22869f7afb793e /newlib/libc/include
parent4815dd49bb1483af60dad347ff351db13178a21e (diff)
downloadcygnal-7d592bb1785253ba2266392dbb41f5bd563469d6.tar.gz
cygnal-7d592bb1785253ba2266392dbb41f5bd563469d6.tar.bz2
cygnal-7d592bb1785253ba2266392dbb41f5bd563469d6.zip
2007-02-01 Joel Schopp <jschopp@austin.ibm.com>
Kazunori Asayama <asayama@sm.sony.co.jp> * configure.host: Enable SPU specific stdio directory. * libc/machine/spu/Makefile.am: Add objects. * libc/machine/spu/Makefile.in: Regenerated. * libc/machine/spu/c99ppe.h: Add macros and function declarations to initialize SPU specific stdio stuffs. * libc/machine/spu/stdio.c: Add functions to manage Cell SPU specific FILE structures. * libc/machine/spu/perror.c: Add initialization routine of stdio stuffs. * libc/machine/spu/printf.c: Ditto. * libc/machine/spu/putchar.c: Ditto. * libc/machine/spu/puts.c: Ditto. * libc/machine/spu/vprintf.c: Ditto. * libc/machine/spu/clearerr.c: New file. Add a stdio function implementation. * libc/machine/spu/feof.c: Ditto. * libc/machine/spu/ferror.c: Ditto. * libc/machine/spu/fileno.c: Ditto. * libc/machine/spu/fopen.c: Ditto. * libc/machine/spu/fclose.c: Ditto. * libc/machine/spu/freopen.c: Ditto. * libc/machine/spu/fflush.c: Ditto. * libc/machine/spu/fseek.c: Ditto. * libc/machine/spu/ftell.c: Ditto. * libc/machine/spu/rewind.c: Ditto. * libc/machine/spu/fgetpos.c: Ditto. * libc/machine/spu/fsetpos.c: Ditto. * libc/machine/spu/fread.c: Ditto. * libc/machine/spu/fwrite.c: Ditto. * libc/machine/spu/getc.c: Ditto. * libc/machine/spu/getchar.c: Ditto. * libc/machine/spu/gets.c: Ditto. * libc/machine/spu/fgetc.c: Ditto. * libc/machine/spu/fgets.c: Ditto. * libc/machine/spu/ungetc.c: Ditto. * libc/machine/spu/putc.c: Ditto. * libc/machine/spu/fputc.c: Ditto. * libc/machine/spu/fputs.c: Ditto. * libc/machine/spu/vfprintf.c: Ditto. * libc/machine/spu/vfscanf.c: Ditto. * libc/machine/spu/fprintf.c: Ditto. * libc/machine/spu/fscanf.c: Ditto. * libc/machine/spu/scanf.c: Ditto. * libc/machine/spu/vscanf.c: Ditto. * libc/machine/spu/setbuf.c: Ditto. * libc/machine/spu/setvbuf.c: Ditto. * libc/machine/spu/tmpfile.c: Ditto. 2007-02-01 Jeff Johnston <jjohnstn@redhat.com> * libc/include/sys/config.h[__SPU__]: Define __CUSTOM_FILE_IO__. * libc/include/stdio.h[!__CUSTOM_FILE_IO__]: Add flag check around stdio macros that manipulate fields in the normal file structure. * libc/include/sys/reent.h[__CUSTOM_FILE_IO__]: Include <sys/custom_file.h> to define custom FILE structure. * libc/include/sys/custom_file.h: New default header file that generates error if not overridden when __CUSTOM_FILE_IO__ set. * libc/machine/spu/sys/custom_file.h: New file.
Diffstat (limited to 'newlib/libc/include')
-rw-r--r--newlib/libc/include/stdio.h9
-rw-r--r--newlib/libc/include/sys/config.h1
-rw-r--r--newlib/libc/include/sys/custom_file.h2
-rw-r--r--newlib/libc/include/sys/reent.h11
4 files changed, 20 insertions, 3 deletions
diff --git a/newlib/libc/include/stdio.h b/newlib/libc/include/stdio.h
index f99480d44..4d3e0c597 100644
--- a/newlib/libc/include/stdio.h
+++ b/newlib/libc/include/stdio.h
@@ -395,6 +395,7 @@ FILE *_EXFUN(funopen,(const _PTR _cookie,
#define fwopen(cookie, fn) funopen(cookie, (int (*)())0, fn, (fpos_t (*)())0, (int (*)())0)
#endif
+#ifndef __CUSTOM_FILE_IO__
/*
* The __sfoo macros are here so that we can
* define function versions in the C library.
@@ -472,9 +473,6 @@ static __inline int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
#endif /* lint */
#endif /* __CYGWIN__ */
-#define getchar() getc(stdin)
-#define putchar(x) putc(x, stdout)
-
#ifndef __STRICT_ANSI__
/* fast always-buffered version, true iff error */
#define fast_putc(x,p) (--(p)->_w < 0 ? \
@@ -486,6 +484,11 @@ static __inline int __sputc_r(struct _reent *_ptr, int _c, FILE *_p) {
#endif
#endif
+#endif /* !__CUSTOM_FILE_IO__ */
+
+#define getchar() getc(stdin)
+#define putchar(x) putc(x, stdout)
+
_END_STD_C
#endif /* _STDIO_H_ */
diff --git a/newlib/libc/include/sys/config.h b/newlib/libc/include/sys/config.h
index 1f3c3e03d..58305d4a8 100644
--- a/newlib/libc/include/sys/config.h
+++ b/newlib/libc/include/sys/config.h
@@ -132,6 +132,7 @@
#ifdef __SPU__
#define MALLOC_ALIGNMENT 16
+#define __CUSTOM_FILE_IO__
#endif
/* This block should be kept in sync with GCC's limits.h. The point
diff --git a/newlib/libc/include/sys/custom_file.h b/newlib/libc/include/sys/custom_file.h
new file mode 100644
index 000000000..96314fb91
--- /dev/null
+++ b/newlib/libc/include/sys/custom_file.h
@@ -0,0 +1,2 @@
+#error System-specific custom_file.h is missing.
+
diff --git a/newlib/libc/include/sys/reent.h b/newlib/libc/include/sys/reent.h
index a7d4f968f..93c79ffc7 100644
--- a/newlib/libc/include/sys/reent.h
+++ b/newlib/libc/include/sys/reent.h
@@ -212,6 +212,12 @@ struct __sFILE {
#endif
};
+#ifdef __CUSTOM_FILE_IO__
+
+/* Get custom _FILE definition. */
+#include <sys/custom_file.h>
+
+#else /* !__CUSTOM_FILE_IO__ */
#ifdef __LARGE64_FILES
struct __sFILE64 {
unsigned char *_p; /* current position in (some) buffer */
@@ -260,6 +266,7 @@ typedef struct __sFILE64 __FILE;
#else
typedef struct __sFILE __FILE;
#endif /* __LARGE64_FILES */
+#endif /* !__CUSTOM_FILE_IO__ */
struct _glue
{
@@ -459,6 +466,10 @@ extern const struct __sFILE_fake __sf_fake_stderr;
#define __reent_assert(x) ((void)0)
#endif
+#ifdef __CUSTOM_FILE_IO__
+#error Custom FILE I/O and _REENT_SMALL not currently supported.
+#endif
+
/* Generic _REENT check macro. */
#define _REENT_CHECK(var, what, type, size, init) do { \
struct _reent *_r = (var); \