From: Torbjorn SVENSSON <torbjorn.svensson@st.com>
To: "newlib@sourceware.org" <newlib@sourceware.org>
Cc: Niklas DAHLQUIST <niklas.dahlquist@st.com>
Subject: [PATCH] Implemented sysconf for Arm
Date: Mon, 27 Apr 2020 15:30:43 +0000 [thread overview]
Message-ID: <DB8PR10MB3467FE243FBFB4B920CE0E5681AF0@DB8PR10MB3467.EURPRD10.PROD.OUTLOOK.COM> (raw)
The default implementation can be overridden outside newlib to allow a
different page size to improve malloc on devices with a small footprint
without needing to rebuild newlib.
Signed-off-by: Torbjörn SVENSSON <torbjorn.svensson@st.com>
Signed-off-by: Niklas DAHLQUIST <niklas.dahlquist@st.com>
---
newlib/libc/stdlib/mallocr.c | 2 +-
newlib/libc/sys/arm/Makefile.am | 2 +-
newlib/libc/sys/arm/Makefile.in | 12 ++++++++++--
newlib/libc/sys/arm/sysconf.c | 20 ++++++++++++++++++++
4 files changed, 32 insertions(+), 4 deletions(-)
create mode 100644 newlib/libc/sys/arm/sysconf.c
diff --git a/newlib/libc/stdlib/mallocr.c b/newlib/libc/stdlib/mallocr.c
index 26d1c89cc..28d278f51 100644
--- a/newlib/libc/stdlib/mallocr.c
+++ b/newlib/libc/stdlib/mallocr.c
@@ -316,7 +316,7 @@ extern "C" {
# undef WIN32
#endif
-#ifndef _WIN32
+#if !defined(_WIN32) && !defined(__ARM_EABI__)
#ifdef SMALL_MEMORY
#define malloc_getpagesize (128)
#else
diff --git a/newlib/libc/sys/arm/Makefile.am b/newlib/libc/sys/arm/Makefile.am
index 711872de3..9111f3647 100644
--- a/newlib/libc/sys/arm/Makefile.am
+++ b/newlib/libc/sys/arm/Makefile.am
@@ -14,7 +14,7 @@ else
extra_objs =
endif
-lib_a_SOURCES = access.c aeabi_atexit.c
+lib_a_SOURCES = access.c aeabi_atexit.c sysconf.c
lib_a_LIBADD = $(extra_objs)
EXTRA_lib_a_SOURCES = trap.S syscalls.c libcfunc.c
lib_a_DEPENDENCIES = $(extra_objs)
diff --git a/newlib/libc/sys/arm/Makefile.in b/newlib/libc/sys/arm/Makefile.in
index c01e4e2ed..67fb695f5 100644
--- a/newlib/libc/sys/arm/Makefile.in
+++ b/newlib/libc/sys/arm/Makefile.in
@@ -70,7 +70,8 @@ ARFLAGS = cru
lib_a_AR = $(AR) $(ARFLAGS)
@MAY_SUPPLY_SYSCALLS_TRUE@am__DEPENDENCIES_1 = $(lpfx)libcfunc.o \
@MAY_SUPPLY_SYSCALLS_TRUE@ $(lpfx)trap.o $(lpfx)syscalls.o
-am_lib_a_OBJECTS = lib_a-access.$(OBJEXT) lib_a-aeabi_atexit.$(OBJEXT)
+am_lib_a_OBJECTS = lib_a-access.$(OBJEXT) lib_a-aeabi_atexit.$(OBJEXT) \
+ lib_a-sysconf.$(OBJEXT)
lib_a_OBJECTS = $(am_lib_a_OBJECTS)
DEFAULT_INCLUDES = -I.@am__isrc@
depcomp =
@@ -183,6 +184,7 @@ pdfdir = @pdfdir@
prefix = @prefix@
program_transform_name = @program_transform_name@
psdir = @psdir@
+runstatedir = @runstatedir@
sbindir = @sbindir@
sharedstatedir = @sharedstatedir@
srcdir = @srcdir@
@@ -198,7 +200,7 @@ AM_CCASFLAGS = $(INCLUDES)
noinst_LIBRARIES = lib.a
@MAY_SUPPLY_SYSCALLS_FALSE@extra_objs =
@MAY_SUPPLY_SYSCALLS_TRUE@extra_objs = $(lpfx)libcfunc.o $(lpfx)trap.o $(lpfx)syscalls.o
-lib_a_SOURCES = access.c aeabi_atexit.c
+lib_a_SOURCES = access.c aeabi_atexit.c sysconf.c
lib_a_LIBADD = $(extra_objs)
EXTRA_lib_a_SOURCES = trap.S syscalls.c libcfunc.c
lib_a_DEPENDENCIES = $(extra_objs)
@@ -288,6 +290,12 @@ lib_a-aeabi_atexit.o: aeabi_atexit.c
lib_a-aeabi_atexit.obj: aeabi_atexit.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-aeabi_atexit.obj `if test -f 'aeabi_atexit.c'; then $(CYGPATH_W) 'aeabi_atexit.c'; else $(CYGPATH_W) '$(srcdir)/aeabi_atexit.c'; fi`
+lib_a-sysconf.o: sysconf.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sysconf.o `test -f 'sysconf.c' || echo '$(srcdir)/'`sysconf.c
+
+lib_a-sysconf.obj: sysconf.c
+ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-sysconf.obj `if test -f 'sysconf.c'; then $(CYGPATH_W) 'sysconf.c'; else $(CYGPATH_W) '$(srcdir)/sysconf.c'; fi`
+
lib_a-syscalls.o: syscalls.c
$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(lib_a_CFLAGS) $(CFLAGS) -c -o lib_a-syscalls.o `test -f 'syscalls.c' || echo '$(srcdir)/'`syscalls.c
diff --git a/newlib/libc/sys/arm/sysconf.c b/newlib/libc/sys/arm/sysconf.c
new file mode 100644
index 000000000..86a324fa4
--- /dev/null
+++ b/newlib/libc/sys/arm/sysconf.c
@@ -0,0 +1,20 @@
+/* libc/sys/arm/sysconf.c - The sysconf function */
+
+/* Copyright 2020, STMicroelectronics */
+
+#include <unistd.h>
+#include <errno.h>
+
+long sysconf(int name)
+{
+ switch (name)
+ {
+ case _SC_PAGESIZE:
+ return 4096;
+
+ default:
+ errno = EINVAL;
+ return -1;
+ }
+ return -1; /* Can't get here */
+}
--
2.18.0
next reply other threads:[~2020-04-27 15:30 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-27 15:30 Torbjorn SVENSSON [this message]
[not found] ` <DB8PR10MB3467B5EDACE45F5CFBFE95D681A50@DB8PR10MB3467.EURPRD10.PROD.OUTLOOK.COM>
2020-05-19 16:17 ` Torbjorn SVENSSON
2020-05-20 8:13 ` Corinna Vinschen
2020-07-29 15:26 ` Torbjorn SVENSSON
2020-07-29 15:43 ` Corinna Vinschen
2020-07-30 15:27 ` Szabolcs Nagy
2020-08-19 9:09 ` Torbjorn SVENSSON
2022-09-28 11:28 ` Richard Earnshaw
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=DB8PR10MB3467FE243FBFB4B920CE0E5681AF0@DB8PR10MB3467.EURPRD10.PROD.OUTLOOK.COM \
--to=torbjorn.svensson@st.com \
--cc=newlib@sourceware.org \
--cc=niklas.dahlquist@st.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).