RTEMS POSIX Priority Inversion Issue.
JunBeom Kim (EmbedCoreTech)
jbkim at e-coretech.kr
Fri Dec 28 07:21:13 UTC 2018
Dear Mr. Koo.
There is not any relationship between main thread and pthread1/2/3.
Main thread is run on core 1 of Cortex-A9.
Pthread1/2/3 threads is run on core 2 of Cortex-A9.
That is, both main thread and pthread1/2/3 is run on each cores independently.
Also, I used manual affinity using pthread_setaffinity_np().
Pthread1/2/3 is created by main thread.
and, actual operation is using Qt Thread API. I attached simple example code.
Qt Thread API is calling RTEMS POSIX API.
Best Regards,
JunBeom
From: chkoo at kari.re.kr <chkoo at kari.re.kr>
Sent: Friday, December 28, 2018 4:05 PM
To: JunBeom Kim (EmbedCoreTech) <jbkim at e-coretech.kr>
Cc: users at rtems.org
Subject: RE: RTEMS POSIX Priority Inversion Issue.
What is the relation between main thread and pthread1/2/3?
If the main thread has a control to wake up each pthread1/2/3, it gonna be in trouble when the prioirty of the main thread is lower than pthread1/2/3s because the main thread has never chance to run it, which is required to other threads.
However why do you assign so much long integer value to priority?
Cheol
--------- 원본 메일 ---------
보낸사람 : "JunBeom Kim (EmbedCoreTech)" <jbkim at e-coretech.kr <mailto:jbkim at e-coretech.kr> >
받는사람 : <users at rtems.org <mailto:users at rtems.org> >
받은날짜 : 2018-12-28 (금) 15:45:48
제목 : RTEMS POSIX Priority Inversion Issue.
Dear Sir,
I am testing RTEMS POSIX thread priority.
I am still using RTEMS 4.12 in 2017 year.
There are four pthreads(main, pthread1, pthread2, pthread3) on two cores in my test case.
- main pthread is running on core 1.
- pthread1, pthread2, pthread3 is running on core 2.
- All threads are doing GPIO toggling action in while(1) loop.
- my configuration for timeslice quantum is 25ms.
As I know from RTEMS POSIX manual, there is below statement.
In the RTEMS implementation of the POSIX API, the priorities range from the low priority of
sched_get_priority_min() to the highest priority of sched_get_priority_max(). Numerically
higher values represent higher priorities.
But, when I test this, lower value is doing as higher priority. Higher value is doing as lower priority.
Is this correct operation ?
Case 0) All threads are same priority.
[/] # pthread
ID NAME CPU SHED PRI STATE MODES EVENTS WAITINFO
------------------------------------------------------------------------------
0b010001 main_thread 1 MEDF 2147483645 READY P:T:nA NONE
0b010002 pthread1 2 MEDF 2147483645 READY P:T:nA NONE
0b010003 pthread2 2 MEDF 2147483645 READY P:T:nA NONE
0b010004 pthread3 2 MEDF 2147483645 READY P:T:nA NONE
Case 1) pthread3 is lower priority according to manual. But, pthread3 is higher priority in my case.
[/] # pthread
ID NAME CPU SHED PRI STATE MODES EVENTS WAITINFO
------------------------------------------------------------------------------
0b010001 main_thread 1 MEDF 2147483645 READY P:T:nA NONE
0b010002 pthread1 2 MEDF 2147483646 READY P:T:nA NONE
0b010003 pthread2 2 MEDF 2147483646 READY P:T:nA NONE
0b010004 pthread3 2 MEDF 1789569706 READY P:T:nA NONE
Case 2) pthread3 is higher priority according to manual. pthread1 and pthread2 are higher priority than pthread3.
[/] # pthread
ID NAME CPU SHED PRI STATE MODES EVENTS WAITINFO
------------------------------------------------------------------------------
0b010001 main_thread 1 MEDF 2147483645 READY P:T:nA NONE
0b010002 pthread1 2 MEDF 1789569706 READY P:T:nA NONE
0b010003 pthread2 2 MEDF 1789569706 READY P:T:nA NONE
0b010004 pthread3 2 MEDF 2147483646 READY P:T:nA NONE
Please advise.
Best Regards,
JunBeom Kim
~~~~~~~~~~~~~~~~~~~~~~
President / EmbedCoreTech
Phone: +82-31-396-5584
Fax: +82-504-065-5720
Mobile:+82-10-6425-5720
Email: jbkim at e-coretech.kr <mailto:jbkim at e-coretech.kr>
Web: www.e-coretech.kr <http://www.e-coretech.kr>
~~~~~~~~~~~~~~~~~~~~~~
<https://webmail.kari.re.kr:443/checkread/MTA2NjIz/amJraW1AZS1jb3JldGVjaC5rcg==/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.rtems.org/pipermail/users/attachments/20181228/ef2cd0ba/attachment-0002.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image001.png
Type: image/png
Size: 16816 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/users/attachments/20181228/ef2cd0ba/attachment-0006.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image002.png
Type: image/png
Size: 14673 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/users/attachments/20181228/ef2cd0ba/attachment-0007.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image003.png
Type: image/png
Size: 16956 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/users/attachments/20181228/ef2cd0ba/attachment-0008.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: main.cpp
Type: application/octet-stream
Size: 1731 bytes
Desc: not available
URL: <http://lists.rtems.org/pipermail/users/attachments/20181228/ef2cd0ba/attachment-0002.obj>
More information about the users
mailing list