[PATCH, newlib] Allow locking routine to be retargeted
Sebastian Huber
sebastian.huber@embedded-brains.de
Thu Nov 24 07:44:00 GMT 2016
Hello Thomas,
On 23/11/16 15:38, Thomas Preudhomme wrote:
> Hi Sebastian,
>
> I was thinking on how to solve this issue and found two possible
> solutions:
>
> 1) select size of lock at configure time
>
> Instead of being an enable/disable option the configure option could
> take an integer value N that determine the size of lock, default being
> the size of a pointer. The lock would then be defined as an array of N
> integers.
>
> Pro: LOCK_INIT works, simpler & smaller change
> Cons: lock needs to be as big as the biggest lock among all the
> platforms you want to target wasting a bit of space.
>
> 2) Remove static initialization of locks
>
> Remove all LOCK_INIT and add code as required to call lock_initialize
> at start up time.
>
> Pro: you only pay the size for the lock you need (ie nothing except
> empty functions in the single threaded case)
> Cons: much bigger work, start up cannot support multithread
3)
struct _lock;
typedef struct _lock *_LOCK_T;
#define __LOCK_INIT(class, lock) extern struct _lock _lock_ ## lock; class _LOCK_T lock = &_lock_ ## lock;
The OS must then provide struct _lock and storage for all statically initialized locks.
--
Sebastian Huber, embedded brains GmbH
Address : Dornierstr. 4, D-82178 Puchheim, Germany
Phone : +49 89 189 47 41-16
Fax : +49 89 189 47 41-09
E-Mail : sebastian.huber@embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the Newlib
mailing list