mailing list of musl libc
 help / color / mirror / code / Atom feed
From: Markus Wichmann <nullplan@gmx.net>
To: musl@lists.openwall.com
Subject: Re: [musl] Musl on Cortex-M Devices
Date: Fri, 18 Dec 2020 20:38:49 +0100	[thread overview]
Message-ID: <20201218193849.GA7530@voyager> (raw)
In-Reply-To: <20201217002348.GO534@brightrain.aerifal.cx>

On Wed, Dec 16, 2020 at 07:23:49PM -0500, Rich Felker wrote:
> On Wed, Dec 16, 2020 at 06:43:15PM -0500, Jesse DeGuire wrote:
> > diff --git a/src/thread/arm/__unmapself.s b/src/thread/arm/__unmapself.s
> > index 29c2d07b..fe0406e3 100644
> > --- a/src/thread/arm/__unmapself.s
> > +++ b/src/thread/arm/__unmapself.s
> > @@ -3,7 +3,7 @@
> >  .global __unmapself
> >  .type   __unmapself,%function
> >  __unmapself:
> > -	mov r7,#91
> > +	movs r7,#91
> >  	svc 0
> > -	mov r7,#1
> > +	movs r7,#1
> >  	svc 0
>
> OK, but this file can't be used on nommu anyway. Instead the generic C
> version has to be used.
>

Speaking of that (C) version, maybe someone should note down somewhere
that it is only safe to call if simultaneous calls from other threads
are precluded somehow. That function uses global variables, so if
multiple threads call it at the same time, there will be blood (well,
there will be clobbering in any case). Which is fulfilled at the moment:
The only call site of __unmapself() is pthread_exit(), after getting the
thread list lock. That is a global lock, so further threads also
exitting would have to queue up there. But I think it is rather
non-intuitive that the thread-list lock happens to also protect the
global variables in __unmapself.c. And that is a property of the C
version not shared by the assembler versions, which are all thread-safe.

Also, why can't this be used on nommu? I thought the only differences
between nommu and mmu were that you can't call mmap() except for
MAP_ANON, and you can't call fork(). This merely runs munmap() on a
MAP_ANON region, and exit(), and so does the C version, except the C
version sets up its own stack to do so, in order to not saw off the
branch it is sitting on.  What am I missing?

Ciao,
Markus

  parent reply	other threads:[~2020-12-18 19:39 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-16 23:43 Jesse DeGuire
2020-12-17  0:23 ` Rich Felker
2020-12-17  4:55   ` Patrick Oppenlander
2020-12-17  5:10     ` Patrick Oppenlander
2020-12-18  7:17       ` Jesse DeGuire
2020-12-22 21:43         ` Patrick Oppenlander
2021-01-06  3:24           ` Jesse DeGuire
2021-01-06  4:01             ` Patrick Oppenlander
2021-01-13 23:51               ` Jesse DeGuire
2020-12-18  7:15   ` Jesse DeGuire
2020-12-18 17:30     ` Rich Felker
2020-12-21 23:58       ` Jesse DeGuire
2020-12-22  1:39         ` Rich Felker
2020-12-18 19:38   ` Markus Wichmann [this message]
2020-12-18 20:34     ` Rich Felker
2020-12-22  0:00       ` Jesse DeGuire
2020-12-22  1:40         ` Rich Felker

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=20201218193849.GA7530@voyager \
    --to=nullplan@gmx.net \
    --cc=musl@lists.openwall.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.
Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/musl/

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 NNTP newsgroup(s).