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