[GSoC]deal with the critical region in POSIX Key
Sebastian Huber
sebastian.huber at embedded-brains.de
Tue Jul 3 18:42:40 UTC 2012
On 03/07/12 12:06, Ashi wrote:
> 2012/7/2 Joel Sherrill<joel.sherrill at oarcorp.com>
>
>> POSIX has no requirements that the pthread key operations be safe to call
>> from an ISR so you are primarily concerned about
>>
>> + memory allocation protection, if there is any
>> + dispatch disable, preventing other threads from running
>>
>> The methods which use _XXX_Get to turn an id into a pointer implicitly
>> disable dispatching. So this part should be ok
>>
>>
> Sorry, dump question... Joel, do you mean what I need to do is just mimic
> the current implementation:do thread disable dispatch as the current
> implementation?
>
> I also have some questions on current implementation's critical region
> proccessing:
> - Since key is only used after creation, there is only one thread can
> access key before key creation finish, then there is no race condition in
> key create. Why there still is thread dispatch disable when key creates?
You have to make sure that resources are not left over in case someone
deletes the thread.
> - When key getspecific in one-rbtree implementation, the only operation
> which relates to critical region(the rbtree) is _RBTree_Find[0], and
> _RBTree_Find is ISR disabled. Then can we enable thread dispatch just after
> _POSIX_Keys_Get()?
In case task/ISR synchronization is not necessary, then a ISR disable
during the find operation is not appropriate. You should use the
unprotected version.
> - I also find in current implementation, when pthread_getspecific failes,
> it returns NULL, but it didn't re-enable thread dispatch, what's the reason
> behind it?
Please have a look at _Objects_Get().
> links:
> [0] My current implementation:
> https://github.com/ashi08104/rtems/blob/one_rbtree/cpukit/posix/src/keygetspecific.c
[...]
--
Sebastian Huber, embedded brains GmbH
Address : Obere Lagerstr. 30, D-82178 Puchheim, Germany
Phone : +49 89 18 90 80 79-6
Fax : +49 89 18 90 80 79-9
E-Mail : sebastian.huber at embedded-brains.de
PGP : Public key available on request.
Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.
More information about the devel
mailing list