<div dir="ltr">Yes. Then pthread_create a thread to use that stack, let it run,<div>and make sure pthread_getattr_np reports things correctly.</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Sep 26, 2017 at 6:52 AM, <a href="mailto:xuelin.tian@qkmtech.com">xuelin.tian@qkmtech.com</a> <span dir="ltr"><<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
<div><span></span>You mean, I allocate an array of some size in another thread, and set the pointer of this array as the stack address using pthread_attr_setstackaddr?</div><div><br></div>
<div><br></div><hr style="width:210px;height:1px" color="#b5c4df" size="1" align="left">
<div><span><div style="MARGIN:10px;FONT-FAMILY:verdana;FONT-SIZE:10pt"><div>Best wishes,</div><div><a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a></div></div></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px;margin-left:0.5em"><div> </div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm"><div style="PADDING-RIGHT:8px;PADDING-LEFT:8px;FONT-SIZE:12px;FONT-FAMILY:tahoma;COLOR:#000000;BACKGROUND:#efefef;PADDING-BOTTOM:8px;PADDING-TOP:8px"><div><b>From:</b> <a href="mailto:joel@rtems.org" target="_blank">Joel Sherrill</a></div><div><b>Date:</b> 2017-09-26 00:29</div><div><b>To:</b> <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a></div><div><b>CC:</b> <a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a>; <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">Sebastian Huber</a></div><div><div class="h5"><div><b>Subject:</b> Re: Re: pthread_getattr_np does not work</div></div></div></div></div><div><div class="h5"><div><div class="m_-1705800528337212482FoxDiv20170926175432232089"><div dir="ltr">I would suggest adding a test of another thread with a user provided stack<div>space that is properly aligned (e.g. array of double of minimum stack size</div><div>divided by sizeof(double)). This would give you known address range and</div><div>size for that thread.</div><div><br></div><div>For the case of RTEMS allocating the stack, the pointer returned to you</div><div>will vary based on the BSP and will essentially be random to the application.</div><div>If the application allocates it, then it knows the starting address.</div><div><br></div><div>You should be able to add that to the existing test without much trouble.</div><div><br></div><div>--joel</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sun, Sep 24, 2017 at 9:45 PM, <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a> <span dir="ltr"><<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<div><span></span>OK, I will try to do this.</div>
<div><br></div><hr style="width:210px;height:1px" color="#b5c4df" size="1" align="left">
<div><span><div style="MARGIN:10px;FONT-FAMILY:verdana;FONT-SIZE:10pt"><div>Best wishes,</div><div><a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a></div></div></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px;margin-left:0.5em"><div> </div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm"><div style="PADDING-RIGHT:8px;PADDING-LEFT:8px;FONT-SIZE:12px;FONT-FAMILY:tahoma;COLOR:#000000;BACKGROUND:#efefef;PADDING-BOTTOM:8px;PADDING-TOP:8px"><div><b>From:</b> <a href="mailto:joel@rtems.org" target="_blank">Joel Sherrill</a></div><div><b>Date:</b> 2017-09-24 21:32</div><div><b>To:</b> <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian</a></div><div><b>CC:</b> <a href="mailto:users@rtems.org" target="_blank">rtems-users@rtems.org</a>; <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">Sebastian Huber</a></div><div><div class="m_-1705800528337212482h5"><div><b>Subject:</b> Re: Re: pthread_getattr_np does not work</div></div></div></div></div><div><div class="m_-1705800528337212482h5"><div><div class="m_-1705800528337212482m_1606057973027919872FoxDiv20170925104446357993"><div dir="auto">No. But you are welcome to submit patches so the behavior matches Linux.</div><div class="gmail_extra"><br><div class="gmail_quote">On Sep 24, 2017 1:09 AM, "xuelin.tian" <<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>So, is there a substitute function for this in RTEMS, without modifying the source code?</div><div><u></u><div> </div><div> </div><div style="font:Verdana normal 14px;color:#000"><div style="FONT-SIZE:12px;FONT-FAMILY:Arial Narrow;padding:2px 0 2px 0">------------------ Original --<wbr>----------------</div><div style="FONT-SIZE:12px;background:#efefef;padding:8px"><div id="m_-1705800528337212482m_1606057973027919872m_267109088197528173menu_sender"><b>From: </b> "Joel Sherrill"<<a href="mailto:joel@rtems.org" target="_blank">joel@rtems.org</a>>;</div><div><b>Date: </b> Sun, Sep 24, 2017 00:15 AM</div><div><b>To: </b> "xuelin.tian"<<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkm<wbr>tech.com</a>>; </div><div><b>Cc: </b> "Sebastian Huber"<<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedde<wbr>d-brains.de</a>>; "<a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a>"<<a href="mailto:users@rtems.org" target="_blank">users@rtems.<wbr>org</a>>; </div><div><b>Subject: </b> Re: Re: pthread_getattr_np does not work</div></div><div> </div><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 22, 2017 at 9:26 PM, xuelin.tian <span dir="ltr"><<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>Thanks so much for your test. </div></blockquote><div><br></div><div>No problem. Just trying to help.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>The parts of this structure I care about most are the stackaddr and stacksize (and guardsize maybe), where stackaddr always returns 0. The value of stacksize is either 8192 or 0, based on the fact that this attribute structure is retrieved from POSIX_Init or other pthreads in my system (maybe I use pthread_create in a wrong way...). </div></blockquote><div><br></div><div>Without looking at the code, 8192 is almost certainly the port specific default </div><div>stack size since it is normally a value like that. A stack size request of anything</div><div>less than the recommended minimum will always get you an allocation of the</div><div>minimum. So 0 or 8192 might simply indicate whether the structure is explicitly </div><div>initialized via pthread_attr_init() or filled in explicitly by the application with</div><div>the minimum stack size constant. </div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><br></div><div>So, from the result you post, the stackaddr is 0 too, which means this element is not supported in rtems, or there is something wrong with this function?</div><div><u></u><div></div></div></blockquote><div><br></div><div>This means the user application didn't specify the stack area in RTEMS. Since</div><div>this method is "NP", there is no standard specifying the behavior.</div><div><br></div><div>This method doesn't exist on FreeBSD and appears to only exist in Linux and</div><div>RTEMS. If there is consensus that it should behave the same on Linux and</div><div>RTEMS, then there should be a ticket filed with (hopefully) patches. <hint></div><div><br></div><div>It isn't a complicated method and all if should take is filling in the attribute</div><div>structure with different fields in the TCB. I think it primarily parrots back</div><div>the attribute structure passed to pthread_create().</div><div><br></div><div>Also writing the man page for the RTEMS POSIX manual would be appreciated.</div><div><br></div><div>Nothing like wandering into something that is even beyond unspecified in</div><div>POSIX to a method that is explicitly non-portable for fun. :)</div><div><br></div><div>--joel</div><div><br></div><div>--joel</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div> </div><div> </div><div style="font:Verdana normal 14px;color:#000"><div style="FONT-SIZE:12px;FONT-FAMILY:Arial Narrow;padding:2px 0 2px 0">------------------ Original --<wbr>----------------</div><div style="FONT-SIZE:12px;background:#efefef;padding:8px"><div id="m_-1705800528337212482m_1606057973027919872m_267109088197528173m_-1040882363317489937menu_sender"><b>From: </b> "Joel Sherrill"<<a href="mailto:joel@rtems.org" target="_blank">joel@rtems.org</a>>;</div><div><b>Date: </b> Fri, Sep 22, 2017 10:15 PM</div><div><b>To: </b> "<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>"<<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xue<wbr>lin.tian@qkmtech.com</a>>; </div><div><b>Cc: </b> "Sebastian Huber"<<a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedde<wbr>d-brains.de</a>>; "<a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a>"<<a href="mailto:users@rtems.org" target="_blank">users@rtems.<wbr>org</a>>; </div><div><b>Subject: </b> Re: Re: pthread_getattr_np does not work</div></div><div><div class="m_-1705800528337212482m_1606057973027919872m_267109088197528173h5"><div> </div><div dir="ltr">The test does verify the values. I don't see a specific case of creating a thread<div>with a non-standard stack value and verifying that value in the task but the</div><div>test creates a thread which retrieves its values and verifies many (most, all?)</div><div>of them:</div><div><br></div><div><div>(gdb) </div><div>Thread - pthread_getattr_np - Verify value</div><div>46        sc = pthread_getattr_np( Thread_id, &attr );</div><div>(gdb) </div><div>47        rtems_test_assert( sc == 0 );</div><div>(gdb) </div><div>52        puts( "Thread - pthread_setschedparam: Setting highest priority SCHED_FIFO" );</div><div>(gdb) p attr</div><div>$1 = {is_initialized = 1, stackaddr = 0x0, stacksize = 8192, </div><div>  contentionscope = 0, inheritsched = 2, schedpolicy = 2, schedparam = {</div><div>    sched_priority = 3, sched_ss_low_priority = 285216961, </div><div>    sched_ss_repl_period = {tv_sec = 0, tv_nsec = 16}, </div><div>    sched_ss_init_budget = {tv_sec = 0, tv_nsec = 1}, sched_ss_max_repl = 0}, </div><div>  guardsize = 0, cputime_clock_allowed = 1, detachstate = 1, </div><div>  affinitysetsize = 0, affinityset = 0x0, affinitysetpreallocated = {</div><div>    __bits = {0}}}</div></div><div><br></div><div>Clearly the attribute structure returned is not all zero.</div><div><br></div><div>I am not sure what you are seeing but it doesn't match what I see in</div><div>this test on the erc32.</div><div><br></div><div>--joel</div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Sep 22, 2017 at 4:04 AM, <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a> <span dir="ltr"><<a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<div><span></span>OK, no problem, thanks anyway.</div>
<div><br></div><hr style="width:210px;height:1px" color="#b5c4df" size="1" align="left">
<div><span><div style="MARGIN:10px;FONT-FAMILY:verdana;FONT-SIZE:10pt"><div>Best wishes,</div><div><a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a></div></div></span></div>
<blockquote style="margin-top:0px;margin-bottom:0px;margin-left:0.5em"><div> </div><div style="border:none;border-top:solid #b5c4df 1.0pt;padding:3.0pt 0cm 0cm 0cm"><div style="PADDING-RIGHT:8px;PADDING-LEFT:8px;FONT-SIZE:12px;FONT-FAMILY:tahoma;COLOR:#000000;BACKGROUND:#efefef;PADDING-BOTTOM:8px;PADDING-TOP:8px"><div><b>From:</b> <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">Sebastian Huber</a></div><div><b>Date:</b> 2017-09-22 16:58</div><span><div><b>To:</b> <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a>; <a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a></div><div><b>Subject:</b> Re: pthread_getattr_np does not work</div></span></div></div><span><div><div>On 22/09/17 10:55, <a href="mailto:xuelin.tian@qkmtech.com" target="_blank">xuelin.tian@qkmtech.com</a> wrote:</div>
<div> </div>
<div>> OK, I will try to do some fix on this function. And if Sherrill and </div>
<div>> you have time, please take some time on this. Thanks a lot.</div>
<div> </div>
<div>No, sorry. I have no time to fix this.</div>
<div> </div>
<div>-- </div>
<div>Sebastian Huber, embedded brains GmbH</div>
<div> </div>
<div>Address : <a href="https://maps.google.com/?q=Dornierstr.+4&entry=gmail&source=g" target="_blank">Dornierstr. 4</a>, D-82178 Puchheim, Germany</div>
<div>Phone   : +49 89 189 47 41-16</div>
<div>Fax     : +49 89 189 47 41-09</div>
<div>E-Mail  : <a href="mailto:sebastian.huber@embedded-brains.de" target="_blank">sebastian.huber@embedded-brain<wbr>s.de</a></div>
<div>PGP     : Public key available on request.</div>
<div> </div>
<div>Diese Nachricht ist keine geschäftliche Mitteilung im Sinne des EHUG.</div>
</div></span></blockquote>
</div><br>______________________________<wbr>_________________<br>
users mailing list<br>
<a href="mailto:users@rtems.org" target="_blank">users@rtems.org</a><br>
<a href="http://lists.rtems.org/mailman/listinfo/users" rel="noreferrer" target="_blank">http://lists.rtems.org/mailman<wbr>/listinfo/users</a><br></blockquote></div><br></div>
</div></div></div><u></u></div><u></u> <u></u> <u></u> <u></u><u></u> <u></u><u></u> <u></u><u></u> <u></u> <u></u> <u></u> <textarea></textarea> <u></u> <u></u> <select> <option value="">自动判断</option> <option value="zh">中文</option><option value="zh-CN">中文(简体)</option><option value="zh-HK">中文(香港)</option><option value="zh-TW">中文(繁体)</option><option value="en">英语</option><option value="ja">日语</option><option value="ko">朝鲜语</option><option value="de">德语</option><option value="fr">法语</option><option value="ru">俄语</option><option value="th">泰语</option><option value="af">南非语</option><option value="ar">阿拉伯语</option><option value="az">阿塞拜疆语</option><option value="be">比利时语</option><option value="bg">保加利亚语</option><option value="ca">加泰隆语</option><option value="cs">捷克语</option><option value="cy">威尔士语</option><option value="da">丹麦语</option><option value="dv">第维埃语</option><option value="el">希腊语</option><option value="eo">世界语</option><option value="es">西班牙语</option><option value="et">爱沙尼亚语</option><option value="eu">巴士克语</option><option value="fa">法斯语</option><option value="fi">芬兰语</option><option value="fo">法罗语</option><option value="gl">加里西亚语</option><option value="gu">古吉拉特语</option><option value="he">希伯来语</option><option value="hi">印地语</option><option value="hr">克罗地亚语</option><option value="hu">匈牙利语</option><option value="hy">亚美尼亚语</option><option value="id">印度尼西亚语</option><option value="is">冰岛语</option><option value="it">意大利语</option><option value="ka">格鲁吉亚语</option><option value="kk">哈萨克语</option><option value="kn">卡纳拉语</option><option value="kok">孔卡尼语</option><option value="ky">吉尔吉斯语</option><option value="lt">立陶宛语</option><option value="lv">拉脱维亚语</option><option value="mi">毛利语</option><option value="mk">马其顿语</option><option value="mn">蒙古语</option><option value="mr">马拉地语</option><option value="ms">马来语</option><option value="mt">马耳他语</option><option value="nb">挪威语(伯克梅尔)</option><option value="nl">荷兰语</option><option value="ns">北梭托语</option><option value="pa">旁遮普语</option><option value="pl">波兰语</option><option value="pt">葡萄牙语</option><option value="qu">克丘亚语</option><option value="ro">罗马尼亚语</option><option value="sa">梵文</option><option value="se">北萨摩斯语</option><option value="sk">斯洛伐克语</option><option value="sl">斯洛文尼亚语</option><option value="sq">阿尔巴尼亚语</option><option value="sv">瑞典语</option><option value="sw">斯瓦希里语</option><option value="syr">叙利亚语</option><option value="ta">泰米尔语</option><option value="te">泰卢固语</option><option value="tl">塔加路语</option><option value="tn">茨瓦纳语</option><option value="tr">土耳其语</option><option value="ts">宗加语</option><option value="tt">鞑靼语</option><option value="uk">乌克兰语</option><option value="ur">乌都语</option><option value="uz">乌兹别克语</option><option value="vi">越南语</option><option value="xh">班图语</option><option value="zu">祖鲁语</option> </select> <u></u> <u></u><u></u> <u></u> <select> <option value="">自动选择</option> <option value="zh">中文</option><option value="zh-CN">中文(简体)</option><option value="zh-HK">中文(香港)</option><option value="zh-TW">中文(繁体)</option><option value="en">英语</option><option value="ja">日语</option><option value="ko">朝鲜语</option><option value="de">德语</option><option value="fr">法语</option><option value="ru">俄语</option><option value="th">泰语</option><option value="af">南非语</option><option value="ar">阿拉伯语</option><option value="az">阿塞拜疆语</option><option value="be">比利时语</option><option value="bg">保加利亚语</option><option value="ca">加泰隆语</option><option value="cs">捷克语</option><option value="cy">威尔士语</option><option value="da">丹麦语</option><option value="dv">第维埃语</option><option value="el">希腊语</option><option value="eo">世界语</option><option value="es">西班牙语</option><option value="et">爱沙尼亚语</option><option value="eu">巴士克语</option><option value="fa">法斯语</option><option value="fi">芬兰语</option><option value="fo">法罗语</option><option value="gl">加里西亚语</option><option value="gu">古吉拉特语</option><option value="he">希伯来语</option><option value="hi">印地语</option><option value="hr">克罗地亚语</option><option value="hu">匈牙利语</option><option value="hy">亚美尼亚语</option><option value="id">印度尼西亚语</option><option value="is">冰岛语</option><option value="it">意大利语</option><option value="ka">格鲁吉亚语</option><option value="kk">哈萨克语</option><option value="kn">卡纳拉语</option><option value="kok">孔卡尼语</option><option value="ky">吉尔吉斯语</option><option value="lt">立陶宛语</option><option value="lv">拉脱维亚语</option><option value="mi">毛利语</option><option value="mk">马其顿语</option><option value="mn">蒙古语</option><option value="mr">马拉地语</option><option value="ms">马来语</option><option value="mt">马耳他语</option><option value="nb">挪威语(伯克梅尔)</option><option value="nl">荷兰语</option><option value="ns">北梭托语</option><option value="pa">旁遮普语</option><option value="pl">波兰语</option><option value="pt">葡萄牙语</option><option value="qu">克丘亚语</option><option value="ro">罗马尼亚语</option><option value="sa">梵文</option><option value="se">北萨摩斯语</option><option value="sk">斯洛伐克语</option><option value="sl">斯洛文尼亚语</option><option value="sq">阿尔巴尼亚语</option><option value="sv">瑞典语</option><option value="sw">斯瓦希里语</option><option value="syr">叙利亚语</option><option value="ta">泰米尔语</option><option value="te">泰卢固语</option><option value="tl">塔加路语</option><option value="tn">茨瓦纳语</option><option value="tr">土耳其语</option><option value="ts">宗加语</option><option value="tt">鞑靼语</option><option value="uk">乌克兰语</option><option value="ur">乌都语</option><option value="uz">乌兹别克语</option><option value="vi">越南语</option><option value="xh">班图语</option><option value="zu">祖鲁语</option> </select> <u></u> <u></u> <select> <option value="YouDao">有道翻译</option> <option value="BaiDu">百度翻译</option> <option value="Bing">必应翻译</option> <option value="Google">谷歌翻译</option> <option value="GoogleCN">谷歌翻译(国内)</option> </select> <u></u> <u></u>翻译 <u></u><u></u> <u></u> <u></u> <u></u>朗读<u></u> <u></u>复制<u></u> <u></u> <u></u> <u></u> <u></u> <u></u>正在查询,请稍候……<u></u> <u></u> <u></u> <u></u><u></u> <u></u>重试<u></u> <u></u> <u></u> <u></u> <u></u><u></u> <u></u> <u></u>朗读<u></u> <u></u>复制<u></u> <u></u> <u></u> <u></u> <u></u>  <u></u> <u></u> <u></u>复制<u></u> <u></u> <u></u> <u></u>  <u></u> <u></u>朗读<u></u> <u></u>复制<u></u> <u></u> <u></u> <u></u> <u></u> <u></u> <u></u>via <a></a><u></u> <u></u> <u></u> <u></u>译<u></u> <u></u></blockquote></div><br></div></div>
</div><u></u></div></blockquote></div></div>
</div></div></div></div></blockquote>
</div></blockquote></div><br></div>
</div></div></div></div></blockquote>
</div></blockquote></div><br></div>