From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from us-smtp-delivery-1.mimecast.com (us-smtp-1.mimecast.com [205.139.110.61]) by sourceware.org (Postfix) with ESMTP id 77160386F800 for ; Wed, 20 May 2020 08:13:45 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.3.2 sourceware.org 77160386F800 Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-296-YUEMmDEbOZSmcico5vijIg-1; Wed, 20 May 2020 04:13:43 -0400 X-MC-Unique: YUEMmDEbOZSmcico5vijIg-1 Received: from smtp.corp.redhat.com (int-mx03.intmail.prod.int.phx2.redhat.com [10.5.11.13]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id E14ADA0BDF; Wed, 20 May 2020 08:13:41 +0000 (UTC) Received: from calimero.vinschen.de (ovpn-112-122.ams2.redhat.com [10.36.112.122]) by smtp.corp.redhat.com (Postfix) with ESMTPS id 8A20A60610; Wed, 20 May 2020 08:13:41 +0000 (UTC) Received: by calimero.vinschen.de (Postfix, from userid 500) id 29298A8073B; Wed, 20 May 2020 10:13:40 +0200 (CEST) Date: Wed, 20 May 2020 10:13:40 +0200 From: Corinna Vinschen To: Torbjorn SVENSSON Cc: "newlib@sourceware.org" , Niklas DAHLQUIST , Richard.Earnshaw@arm.com Subject: Re: [PATCH] Implemented sysconf for Arm Message-ID: <20200520081340.GZ3947@calimero.vinschen.de> Reply-To: newlib@sourceware.org Mail-Followup-To: Torbjorn SVENSSON , "newlib@sourceware.org" , Niklas DAHLQUIST , Richard.Earnshaw@arm.com References: MIME-Version: 1.0 In-Reply-To: X-Scanned-By: MIMEDefang 2.79 on 10.5.11.13 X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Content-Disposition: inline X-Spam-Status: No, score=-14.4 required=5.0 tests=BAYES_00, DKIMWL_WL_HIGH, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, GIT_PATCH_0, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_NONE, SPF_PASS, TXREP autolearn=ham autolearn_force=no version=3.4.2 X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on server2.sourceware.org X-BeenThere: newlib@sourceware.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Newlib mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 20 May 2020 08:13:47 -0000 Adding Richard to this thread On May 19 16:17, Torbjorn SVENSSON via Newlib wrote: > 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 > Cc: Niklas DAHLQUIST > Subject: RE: [PATCH] Implemented sysconf for Arm > > Ping > > -----Original Message----- > From: Newlib On Behalf Of Torbjorn SVENSSON via Newlib > Sent: den 27 april 2020 17:31 > To: newlib@sourceware.org > Cc: Niklas DAHLQUIST > 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 > Signed-off-by: Niklas DAHLQUIST > --- > 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 > +#include > + > +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