public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
From: Corinna Vinschen <vinschen@redhat.com>
To: Richard.Earnshaw@arm.com
Cc: "newlib@sourceware.org" <newlib@sourceware.org>,
	Niklas DAHLQUIST <niklas.dahlquist@st.com>,
	Torbjorn SVENSSON <torbjorn.svensson@st.com>
Subject: Re: [PATCH] Implemented sysconf for Arm
Date: Wed, 29 Jul 2020 17:43:35 +0200	[thread overview]
Message-ID: <20200729154335.GK4206@calimero.vinschen.de> (raw)
In-Reply-To: <AM0PR10MB22424FA75E4F2F74B6AC277481700@AM0PR10MB2242.EURPRD10.PROD.OUTLOOK.COM>

And again adding Richard.

Richard, is nobody from ARM looking into this stuff, at least once in a
while?


Corinna


On Jul 29 15:26, Torbjorn SVENSSON via Newlib wrote:
> Ping3
> 
> -----Original Message-----
> From: Torbjorn SVENSSON 
> Sent: den 19 maj 2020 18:17
> To: newlib@sourceware.org
> Cc: Niklas DAHLQUIST <niklas.dahlquist@st.com>
> Subject: RE: [PATCH] Implemented sysconf for Arm
> 
> Ping2!
> 
> If it's not clear to the reviewer, the use-case that we want to fulfill here is to be able to override the page size for the malloc() call for the project and not require a new build of newlib.
> With this approach, simply re-implementing the function sysconf(int) in the application to return the appropriate page size for the application and have the linker will select the local implementation over the newlib provided one is enough to reserve a smaller memory block for malloc.
> 
> I also need assistance to push the patch since I've not got commit access.
> 
> Thanks.
> 
> Torbjörn
> 
> -----Original Message-----
> From: Torbjorn SVENSSON 
> Sent: den 7 maj 2020 10:29
> To: Newlib <newlib-bounces@sourceware.org>
> Cc: Niklas DAHLQUIST <niklas.dahlquist@st.com>
> Subject: RE: [PATCH] Implemented sysconf for Arm
> 
> Ping
> 
> -----Original Message-----
> From: Newlib <newlib-bounces@sourceware.org> On Behalf Of Torbjorn SVENSSON via Newlib
> Sent: den 27 april 2020 17:31
> To: newlib@sourceware.org
> Cc: Niklas DAHLQUIST <niklas.dahlquist@st.com>
> Subject: [PATCH] Implemented sysconf for Arm
> 
> 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

-- 
Corinna Vinschen
Cygwin Maintainer
Red Hat


  reply	other threads:[~2020-07-29 15:43 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-04-27 15:30 Torbjorn SVENSSON
     [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 [this message]
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=20200729154335.GK4206@calimero.vinschen.de \
    --to=vinschen@redhat.com \
    --cc=Richard.Earnshaw@arm.com \
    --cc=newlib@sourceware.org \
    --cc=niklas.dahlquist@st.com \
    --cc=torbjorn.svensson@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).