<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>MQX Software SolutionsのトピックRe: Break blocked function recv() using task_ready(*)</title>
    <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184589#M3074</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_13684503191788646 jive_text_macro jive_macro_code" jivemacro_uid="_13684503191788646" modifiedtitle="true"&gt;
&lt;P&gt;uint_32 option;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt;
&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set socket options */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option = TRUE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retval = setsockopt(client_sock, SOL_TCP, OPT_RECEIVE_NOWAIT, &amp;amp;option, sizeof(option));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retval != RTCS_OK)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fputs("Fatal Error: Unable to set socket options Rx.", stderr);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_block();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 29 Oct 2020 09:35:34 GMT</pubDate>
    <dc:creator>Martin_</dc:creator>
    <dc:date>2020-10-29T09:35:34Z</dc:date>
    <item>
      <title>Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184582#M3067</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;we are using MQX 3.8.1, IAR 6.4.02 and RTCS.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Is the usage of task_ready(*) allowed to break blocked functon like recv()?&lt;/P&gt;&lt;P&gt;We want to use this cause the automatic connection abortion of RTCS using OPT_CONNECT_TIMEOUT does'nt work all the time - unused connections are always active.&lt;/P&gt;&lt;P&gt;Our test result gave UNHANDLED INTERRUPT 0x41 in TCP/IP task... How may we handle this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;regards,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;CAESAR&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 22 Nov 2012 14:13:03 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184582#M3067</guid>
      <dc:creator>CaesarI</dc:creator>
      <dc:date>2012-11-22T14:13:03Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184583#M3068</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Does no one used such method to reenter a task waiting in a blocked function?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 28 Nov 2012 15:36:38 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184583#M3068</guid>
      <dc:creator>CaesarI</dc:creator>
      <dc:date>2012-11-28T15:36:38Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184584#M3069</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;recv() will be non-blocking if a streaming socket has receive-nowait option true (OPT_RECEIVE_NOWAIT).&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2012 11:22:00 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184584#M3069</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2012-11-29T11:22:00Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184585#M3070</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;We want to have recv() like bloccking function, cause normal we want to wait for receive and we need processor performance to let work other tasks. But in some cases (especially connenstion loss) we want to stop waiting for receive - in this case we call now 'task_ready(*)'&amp;nbsp; (in an other task) and it works &lt;SPAN class="short_text" lang="en"&gt;&lt;SPAN class="hps"&gt;unfortunately &lt;/SPAN&gt;&lt;/SPAN&gt;not. The question is: Is the usage of task_ready(*) allowed to break blocked functon like recv()? Whats the matter with UNHANDLED INTERRUPT 0x41 in TCP/IP task... How may we handle this?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Do you know an other way to break the recv()-waiting? Or do you know why automatic connection abortion of RTCS using OPT_CONNECT_TIMEOUT doesnt work every time?&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2012 12:10:33 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184585#M3070</guid>
      <dc:creator>CaesarI</dc:creator>
      <dc:date>2012-11-29T12:10:33Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184586#M3071</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I am not aware the OPT_CONNECT_TIMEOUT doesn't work every time. I thought that it works, it is just long time (8 minutes default). Maybe you've tried to make this time shorter ? There is a minimum of 180.000 milliseconds.&lt;/P&gt;&lt;P&gt;I wouldn't personally use _task_ready() to unblock recv(), as recv() dosn't expect it can be activated this way. At low level it sends a message to RTCS task and blocks, expecting activation by reception of some data. But if the data are not there, maybe it accesses an uninitialized pointer or something like that.&lt;/P&gt;&lt;P&gt;You could have recv() non-blocking and block your task to wait for receive at application level, like example below:&lt;BR /&gt; &lt;BR /&gt; while(cnt_app_timeout &amp;lt; MAX_TIMEOUT)&lt;BR /&gt; {&lt;BR /&gt;&amp;nbsp; count = recv(); &lt;BR /&gt;&amp;nbsp; if(RTCS_ERROR == count)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; ...&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; else if(0 == count)&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; cnt_app_timeout++;&lt;BR /&gt;&amp;nbsp;&amp;nbsp; _time_delay(200); /* let other tasks run */&lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt;&amp;nbsp; else&lt;BR /&gt;&amp;nbsp; {&lt;BR /&gt;&amp;nbsp;&amp;nbsp; /* handle received data */ &lt;BR /&gt;&amp;nbsp; }&lt;BR /&gt; }&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Nov 2012 13:00:39 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184586#M3071</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2012-11-29T13:00:39Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184587#M3072</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Thx Martin,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;now we use RTCS_selectset to work timed by blocked access..&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;We tryed to use OPT_CONNECT_TIMEOUT with more than 3 minutes, cause we already read the value range.&lt;/P&gt;&lt;P&gt;We listened on the ethernet by wireshark to check the connenction for any transfer, but there was no transfer and the connection was'nt aborted by RTCS automatic. This was a observation we made more than once, but not every time, so we had to use a secure way...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Caesar&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 06 Dec 2012 15:23:21 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184587#M3072</guid>
      <dc:creator>CaesarI</dc:creator>
      <dc:date>2012-12-06T15:23:21Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184588#M3073</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Can you be more specific on how to code &lt;SPAN style="font-family: 'Helvetica Neue', Helvetica, Arial, 'Lucida Grande', sans-serif; background-color: #ffffff;"&gt;OPT_RECEIVE_NOWAIT&lt;/SPAN&gt;...&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I would suspect it is done with setsockopt and you pass the socket as the first argument... the options for arguments 2 and 3 as well as what you should be doing with the option pointer in 4 is where I am confused.&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I am trying this:&lt;/P&gt;&lt;P&gt; nSock = accept( nListenSock, NULL, NULL ) ;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt; ui32Option = RTCS_MSG_NONBLOCK ;&lt;/P&gt;&lt;P&gt; ui32Error&amp;nbsp; = setsockopt( nSock, SOL_TCP, OPT_NOWAIT, &amp;amp;ui32Option, sizeof(ui32Option) ) ;&lt;/P&gt;&lt;P&gt;&lt;SPAN class="mce_paste_marker"&gt;&lt;/SPAN&gt;&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Wed, 08 May 2013 16:20:04 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184588#M3073</guid>
      <dc:creator>stevejanisch</dc:creator>
      <dc:date>2013-05-08T16:20:04Z</dc:date>
    </item>
    <item>
      <title>Re: Break blocked function recv() using task_ready(*)</title>
      <link>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184589#M3074</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Example:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;PRE __default_attr="c++" __jive_macro_name="code" class="_jivemacro_uid_13684503191788646 jive_text_macro jive_macro_code" jivemacro_uid="_13684503191788646" modifiedtitle="true"&gt;
&lt;P&gt;uint_32 option;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt;
&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-size: 9pt; line-height: 12pt;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; /* Set socket options */&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; option = TRUE;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; retval = setsockopt(client_sock, SOL_TCP, OPT_RECEIVE_NOWAIT, &amp;amp;option, sizeof(option));&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if (retval != RTCS_OK)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; fputs("Fatal Error: Unable to set socket options Rx.", stderr);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; _task_block();&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;/P&gt;
&lt;/PRE&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 29 Oct 2020 09:35:34 GMT</pubDate>
      <guid>https://community.nxp.com/t5/MQX-Software-Solutions/Break-blocked-function-recv-using-task-ready/m-p/184589#M3074</guid>
      <dc:creator>Martin_</dc:creator>
      <dc:date>2020-10-29T09:35:34Z</dc:date>
    </item>
  </channel>
</rss>

