<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content="text/html; charset=utf-8" http-equiv=Content-Type><!-- flashmail style begin -->
<STYLE type=text/css>
body {border-width:0;margin:0}
img {border:0;margin:0;padding:0}
</STYLE>
<BASE target=_blank><!-- flashmail style end -->
<META name=GENERATOR content="MSHTML 11.00.10570.1001"></HEAD>
<BODY 
style="BORDER-LEFT-WIDTH: 0px; FONT-SIZE: 10.5pt; FONT-FAMILY: times new roman; BORDER-RIGHT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; COLOR: #000000; MARGIN: 12px; LINE-HEIGHT: 1.5; BORDER-TOP-WIDTH: 0px" 
marginheight="0" marginwidth="0">
<DIV>Hello:</DIV>
<DIV> </DIV>
<DIV>What you have implemented in MPCP_VS is 'spin non-preemptively'. What MrsP 
uses is 'spin at local ceiling priority'. So what I need to do is to change the 
logic inside the pfp_schedule(). </DIV>
<DIV> </DIV>
<DIV style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; COLOR: #c0c0c0" 
align=left>2016-10-07 
<HR id=SignNameHR 
style="BORDER-TOP: #c0c0c0 1px solid; HEIGHT: 1px; BORDER-RIGHT: 0px; WIDTH: 122px; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px" 
align=left>
<SPAN id=_FlashSignName>shijunjie92</SPAN> </DIV>
<HR 
style="BORDER-TOP: #c0c0c0 1px solid; HEIGHT: 1px; BORDER-RIGHT: 0px; BORDER-BOTTOM: 0px; BORDER-LEFT: 0px">

<BLOCKQUOTE id=ntes-flashmail-quote 
style="FONT-SIZE: 10pt; FONT-FAMILY: Verdana; PADDING-LEFT: 0px; MARGIN-LEFT: 0px">
  <DIV><STRONG>发件人:</STRONG>Björn Brandenburg <bbb@mpi-sws.org></DIV>
  <DIV><STRONG>发送时间:</STRONG>2016-10-07 12:34</DIV>
  <DIV><STRONG>主题:</STRONG>Re: [LITMUS^RT] How to handle the blocked task</DIV>
  <DIV><STRONG>收件人:</STRONG>"litmus-dev"<litmus-dev@lists.litmus-rt.org></DIV>
  <DIV><STRONG>抄送:</STRONG></DIV>
  <DIV> </DIV>
  <DIV>
  <DIV> </DIV>
  <DIV>> On 07 Oct 2016, at 06:14, shijunjie92 <shijunjie92@gmail.com> wrote: </DIV>
  <DIV>>  </DIV>
  <DIV>> Hello: </DIV>
  <DIV>>   </DIV>
  <DIV>> Druing the implementation of the MrsP. I need to build the ceiling for each cpu. All the tasks' priority lower than the ceiling are not allowed to execute. So the following situation may occur: one task holds the ceiling but is blocked by waiting resource. There are some normal tasks which are not waiting for resource in that cpu. They are not allowed to execute because their's priorities are lower than the ceiling. That means this cpu is idle eventhough there are some tasks are ready to execute. In that situation, how can I deal with the logic inside the pfp_schedule(). Can I set the next as NULL to set the cpu in idle state?\ </DIV>
  <DIV> </DIV>
  <DIV>If you return NULL, then the CPU is idled from the point of view of LITMUS^RT and the regular Linux scheduler takes over to schedule background tasks. </DIV>
  <DIV> </DIV>
  <DIV>However, why do you need to stop lower-priority tasks from executing? That doesn’t make much sense to me. If they don’t request any resources, there shouldn’t be any problems. Can’t you let them run and block them only when they actually try to lock something? The MPCP-VS works exactly like this and is already implemented in LITMUS^RT, maybe you can use a similar approach? </DIV>
  <DIV> </DIV>
  <DIV>> Another question is about the cpu_ceiling. In the multiprocessor environment, different semaphores can be allocated to different processors, which can update the loacl cpu ceiling. How can I deal with such data transmission between different semaphore and different processors? Add the structure mrsp_semaphore and mrsp_state into the pfp_domain_t or you have other effective solution?  </DIV>
  <DIV> </DIV>
  <DIV>There are already implementations of the PCP and the SRP; both deal with per-processor ceilings. </DIV>
  <DIV> </DIV>
  <DIV>- Björn </DIV>
  <DIV> </DIV>
  <DIV> </DIV>
  <DIV>_______________________________________________ </DIV>
  <DIV>litmus-dev mailing list </DIV>
  <DIV>litmus-dev@lists.litmus-rt.org </DIV>
  <DIV>https://lists.litmus-rt.org/listinfo/litmus-dev </DIV></DIV></BLOCKQUOTE></BODY></HTML>