summaryrefslogtreecommitdiffstats
path: root/newlib/libc/include/sys
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/include/sys')
-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
3 files changed, 14 insertions, 0 deletions
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); \