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-0001.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-0003.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-0004.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-0005.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-0001.obj>


More information about the users mailing list