Hello,
I did more tests using the same source files. But modifying the priority
of the threads and the scheduling algorithm used in the creation of the
semaphore. What I was expecting (and what I need) is this:
task 1 start
ld adq by kernel. kern_1
ld rel by kernel. kern_1
exe adq by kernel: kern_1
sleeping kernel : kern_1
task 2 start
exe rel by kernel: kern_1
ld adq by kernel. kern_2
ld rel by kernel. kern_2
exe adq by kernel: kern_1
sleeping kernel : kern_1
exe rel by kernel: kern_1
exe adq by kernel: kern_2
sleeping kernel : kern_2
exe rel by kernel: kern_2
exe adq by kernel: kern_1
sleeping kernel : kern_1
exe rel by kernel: kern_1
exe adq by kernel: kern_2
sleeping kernel : kern_2
Where the semaphore is sequentially obtained and released by the same
thread each time it has been acquired.
I was supposing that once a semaphore is acquired by one task, it could
not be obtained by another task until it was released by the first task
that acquired it; independently of the tasks priorities. Now, looking at
the test results I can affirm that there are no errors in RTEMS and my
supposition was wrong.
Thanks so much for the support Sebastian.
Regards.
El 2018-11-30 12:53, Sebastian Huber escribió:
On 30/11/2018 11:55, Arturo Perez Garcia wrote:
Hello, thanks for the feedback. I checked the confdefs file and the
macro CONFIGURE_MAXIMUM_SEMAPHORES is set to 0 by default. I don't
know why I didn't get those errors.
I used the RTEMS master to run the test. In RTEMS 4.11 the default
configuration contains some semaphores may be used by the system.
Once RTEMS is correctly configured. Did you obtain the same results as
me?
task 1 start
ld adq by kernel. kern_1
ld rel by kernel. kern_1
exe adq by kernel: kern_1
sleeping kernel : kern_1
task 2 start
exe rel by kernel: kern_1
ld adq by kernel. kern_2
exe adq by kernel: kern_1
sleeping kernel : kern_1
ld rel by kernel. kern_2
exe rel by kernel: kern_1
exe adq by kernel: kern_2
sleeping kernel : kern_2
exe adq by kernel: kern_1
sleeping kernel : kern_1
exe rel by kernel: kern_2
exe rel by kernel: kern_1
exe adq by kernel: kern_2
sleeping kernel : kern_2
exe adq by kernel: kern_1
sleeping kernel : kern_1
exe rel by kernel: kern_2
exe rel by kernel: kern_1
Looks all right to me considering that task 1 has a higher priority
than task 2 and the semaphore uses FIFO ordering.
--
Arturo Perez Garcia - arturo.pe...@upm.es
Researcher
Center of Industrial Electronics
Universidad Politecnica de Madrid
_______________________________________________
users mailing list
users@rtems.org
http://lists.rtems.org/mailman/listinfo/users