public inbox for newlib@sourceware.org
 help / color / mirror / Atom feed
From: Freddie Chopin <freddie_chopin@op.pl>
To: newlib@sourceware.org
Subject: Re: [PATCH, newlib] Allow locking routine to be retargeted
Date: Wed, 23 Nov 2016 15:52:00 -0000	[thread overview]
Message-ID: <1479916300.1135.1.camel@op.pl> (raw)
In-Reply-To: <7dc33ad1-fecf-a0ec-81b6-2db698c5c57d@foss.arm.com>

Hi!

I'm not Sebastian, but I took the liberty to give an opinion here.
Option 1 brings almost nothing, as you have to make sure the toolchain
you use supports the RTOS you want to use. If it doesn't you have to
build your own. If you have to build your own, then you can as well
just integrate locks without this change...

As for the option 2 I guess that it would be perfectly reasonable to
declare some kind of startup function that should be called by user's
RTOS.

I have just thought about another idea:
1. Newlib would define - in a public header - number of required
recursive and non-recursive statically allocated locks:
#define AMOUNT_OF_STATIC_LOCKS 5
#define AMOUNT_OF_STATIC_RECURSIVE_LOCKS 3
2. In the same header it would define functions like "void*
get_lock(size_t index)" and "void* get_recursive_lock(size_t index)".
3. In some private newlib header there would be assignments of indexes
with locks like:
#define MALLOC_RECURSIVE_LOCK 0
#define STDIO_RECURSIVE_LOCK 1
...
#define TZ_LOCK 0
#define WHATEVER_LOCK 1
...
4. All uses of locks like:
__lock_acquire_recursive(__malloc_lock);
would have to be changed to:
__lock_acquire_recursive(get_recursive_lock(MALLOC_RECURSIVE_LOCK));


This way the user could just have in his own RTOS a nice array of locks
with proper size and automatic amount of elements. More advantages:
- by having two functions and two defines we could easily have
recursive and non-recursive locks;
- we could just drop __LOCK_INIT and add a requirement for user to
initialize the locks;

What do you think?

Regards,
FCh

  reply	other threads:[~2016-11-23 15:52 UTC|newest]

Thread overview: 55+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-10 14:42 Thomas Preudhomme
2016-11-10 15:34 ` Freddie Chopin
2016-11-10 16:05   ` Thomas Preudhomme
2016-11-10 20:32     ` Freddie Chopin
2016-11-10 20:35       ` Freddie Chopin
2016-11-11  9:38         ` AW: " onkel.jack
2016-11-11 11:01           ` Thomas Preudhomme
2016-11-11 11:20             ` onkel.jack
2016-11-11 12:13               ` Freddie Chopin
2016-11-11 11:09       ` Thomas Preudhomme
2016-11-11 11:54         ` Freddie Chopin
2016-11-11 11:56         ` Sebastian Huber
2016-11-11 13:40           ` Thomas Preudhomme
2016-11-11 14:10             ` Freddie Chopin
2016-11-23 14:38           ` Thomas Preudhomme
2016-11-23 15:52             ` Freddie Chopin [this message]
2016-11-24  7:44             ` Sebastian Huber
2016-11-24  8:29               ` Freddie Chopin
2016-11-25 10:21               ` Thomas Preudhomme
2016-11-25 12:04                 ` Thomas Preudhomme
2016-11-25 12:35                   ` Sebastian Huber
2016-12-13 17:20                     ` Thomas Preudhomme
2016-11-25 14:12                   ` Freddie Chopin
2016-12-13 17:18 Thomas Preudhomme
2016-12-13 20:13 ` Freddie Chopin
2016-12-14 11:54   ` Thomas Preudhomme
2016-12-14 12:39     ` Freddie Chopin
2017-01-11 13:09       ` Thomas Preudhomme
2016-12-13 21:11 ` Freddie Chopin
2016-12-13 21:41 ` Freddie Chopin
2016-12-14 14:22 ` Sebastian Huber
2016-12-14 14:36   ` Thomas Preudhomme
2016-12-14 14:52     ` Thomas Preudhomme
2017-01-09 18:49       ` Freddie Chopin
2017-01-10 16:50         ` Thomas Preudhomme
2017-01-10 17:07           ` Freddie Chopin
2017-01-11 16:09             ` Thomas Preudhomme
2017-01-11 16:46               ` Craig Howland
2017-01-11 17:48                 ` Thomas Preudhomme
2017-01-11 18:08                   ` Craig Howland
2017-01-11 19:14                   ` Freddie Chopin
2017-01-12 10:52                     ` Thomas Preudhomme
2017-01-12 16:20                       ` Freddie Chopin
2017-01-12 16:55                         ` Thomas Preudhomme
2017-01-13 11:25                           ` Thomas Preudhomme
2017-01-13 13:24                             ` Thomas Preudhomme
2017-01-13 18:05                               ` Freddie Chopin
2017-01-13 18:16                                 ` Thomas Preudhomme
2017-01-16 15:59                                   ` Thomas Preudhomme
2017-01-20 13:37                                     ` Thomas Preudhomme
2017-01-20 13:55                                       ` Freddie Chopin
2017-01-24 10:00                                       ` Freddie Chopin
2017-01-25 12:31                                         ` Corinna Vinschen
2017-01-30 10:51                                         ` Thomas Preudhomme
2016-12-14 15:27     ` Freddie Chopin

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=1479916300.1135.1.camel@op.pl \
    --to=freddie_chopin@op.pl \
    --cc=newlib@sourceware.org \
    /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).