Task sync problems related with binary semaphore and cache memories
Sebastian Huber
sebastian.huber at embedded-brains.de
Wed Nov 28 10:58:11 UTC 2018
On 28/11/2018 11:52, Arturo Perez Garcia wrote:
> Yes, I'm checking the return status always. When I create the RTEMS
> objects and when I acquire/release the semaphore. I removed those
> checks from the code I put in the previous message.
Ok, good.
>
> Thanks.
>
> El 2018-11-28 11:42, Sebastian Huber escribió:
>> On 28/11/2018 11:30, Arturo Perez Garcia wrote:
>>> Disabling the caches don't fixe the problem, I was wrong.
>>>
>>> Maybe I'm initializing wrongly the RTEMS objects.
>>>
>>> In the Init task I create the binary semaphore:
>>>
>>> rtems_semaphore_create(a3_sem_name, 1, RTEMS_BINARY_SEMAPHORE
>>> | RTEMS_FIFO | RTEMS_LOCAL, 0, &a3_sem_id);
This call creates a binary semaphore without a locking protocol which is
owned by the current task (Init task). If you do not call
rtems_semaphore_release() for this semaphore within the Init task, then
no other task should be able to obtain it.
I would debug the rtems_semaphore_obtain() call if this is actually the
case.
--
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 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 users
mailing list