📄 int8u osqquery.htm
字号:
at the queue, how many tasks are waiting (by counting the number of 1s in the </span><b><span
lang=EN-US style='font-family:"Courier New"'>.OSEventTbl[]</span></b><span
lang=EN-US> field, how many messages are in the queue, what the message queue
size is, and examine the contents of the next message that would be returned if
there is at least one message in the queue.<span style="mso-spacerun:
yes"> </span>You can use the table </span><b><span lang=EN-US
style='font-family:"Courier New"'>OSNBitsTbl[]</span></b><span lang=EN-US> to
find out how many ones are set in a given byte.<span style="mso-spacerun:
yes"> </span>Note that the size of </span><b><span lang=EN-US
style='font-family:"Courier New"'>.OSEventTbl[]</span></b><span lang=EN-US> is
established by the </span><b><span lang=EN-US style='font-family:"Courier New"'>#define</span></b><span
lang=EN-US> constant </span><b><span lang=EN-US style='font-family:"Courier New"'>OS_EVENT_TBL_SIZE</span></b><span
lang=EN-US> (see </span><span class=FileName><span lang=EN-US style='font-size:
12.0pt;font-family:"Courier New"'>uCOS_II.H</span></span><span lang=EN-US>).</span></p>
<p class=NewSectionPara><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=NewSectionPara><b><span lang=EN-US>Arguments<o:p></o:p></span></b></p>
<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>pevent</span></b><span
lang=EN-US> is a pointer to the message queue.<span style="mso-spacerun:
yes"> </span>This pointer is returned to your application when the queue
is created (see </span><b><span lang=EN-US style='font-family:"Courier New"'>OSQCreate()</span></b><span
lang=EN-US>).</span></p>
<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>pdata</span></b><span
lang=EN-US> is a pointer to a data structure of type </span><b><span
lang=EN-US style='font-family:"Courier New"'>OS_Q_DATA</span></b><span
lang=EN-US>.</span></p>
<p class=Descript><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
<p class=NewSectionPara><b><span lang=EN-US>Returned Value<o:p></o:p></span></b></p>
<p class=Descript><b><span lang=EN-US style='font-family:"Courier New"'>OSQQuery()</span></b><span
lang=EN-US> returns one of these two error codes:</span></p>
<p class=Descript><span lang=EN-US><span style='mso-tab-count:1'> </span>1)
</span><b><span lang=EN-US style='font-family:"Courier New"'>OS_NO_ERR</span></b><span
lang=EN-US>, if the call was successful</span></p>
<p class=Descript><span lang=EN-US><span style='mso-tab-count:1'> </span>2)
</span><b><span lang=EN-US style='font-family:"Courier New"'>OS_ERR_EVENT_TYPE</span></b><span
lang=EN-US>, if you didn’t pass a pointer to a message queue</span></p>
<p class=NewSectionPara><b><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></b></p>
<p class=NewSectionPara><b><span lang=EN-US>Notes/Warnings<o:p></o:p></span></b></p>
<p class=Descript><span lang=EN-US>Message queues must be created before they
are used.</span></p>
<p class=NewSectionPara><b><span lang=EN-US style='mso-fareast-language:ZH-CN'><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></b></p>
<p class=NewSectionPara><b><span lang=EN-US>Example<o:p></o:p></span></b></p>
<p class=Descript><span lang=EN-US>In this example, we check the contents of
the message queue to see how many tasks are waiting for it.</span></p>
<div style='border:solid #999999 1.5pt;padding:1.0pt 1.0pt 15.0pt 1.0pt;
background:#F2F2F2;mso-shading:windowtext;mso-pattern:gray-5 auto'>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:1'> </span>OS_EVENT *CommQ;</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:1'> </span>void Task (void *pdata)</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style='mso-tab-count:1'> </span>{</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>OS_Q_DATA
qdata;</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>INT8U<span
style="mso-spacerun: yes"> </span>err;</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>INT8U<span
style="mso-spacerun: yes"> </span>nwait;<span
style="mso-spacerun:
yes"> </span>/* Number
of tasks waiting on queue */</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>INT8U<span
style="mso-spacerun: yes"> </span>i;</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>pdata = pdata;</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span>for (;;) {</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">
</span>.</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">
</span>err = OSQQuery(CommQ, &qdata);</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">
</span>if (err == OS_NO_ERR) {</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun:
yes">
</span>nwait = 0;<span style="mso-spacerun:
yes"> </span>/*
Count # tasks waiting on queue<span style="mso-spacerun: yes"> </span>*/</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes"> </span><span
style="mso-spacerun: yes"> </span>if (qdata.OSEventGrp
!= 0x00) {</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun:
yes">
</span>for (i = 0; i < OS_EVENT_TBL_SIZE; i++) {</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun:
yes">
</span>nwait += OSNBitsTbl[qdata.OSEventTbl[i]];</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun:
yes">
</span>}</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun:
yes">
</span>}</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">
</span>}</span></p>
<p class=CodeSeg style='border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US><span
style="mso-spacerun: yes">
</span>.</span></p>
<p class=CodeSeg style='text-indent:30.75pt;border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US>}</span><span
lang=EN-US style='mso-fareast-language:ZH-CN'><o:p></o:p></span></p>
<p class=CodeSeg style='text-indent:10.05pt;mso-char-indent-count:1.0;
mso-char-indent-size:10.05pt;border:none;mso-border-alt:solid #999999 1.5pt;
padding:0cm;mso-padding-alt:1.0pt 1.0pt 15.0pt 1.0pt'><span lang=EN-US>}</span></p>
</div>
</div>
<span lang=EN-US style='font-size:10.5pt;mso-bidi-font-size:12.0pt;font-family:
"Times New Roman";mso-fareast-font-family:宋体;mso-font-kerning:1.0pt;mso-ansi-language:
EN-US;mso-fareast-language:ZH-CN;mso-bidi-language:AR-SA'><br clear=all
style='page-break-before:always;mso-break-type:section-break'>
</span>
<div class=Section2 style='layout-grid:15.6pt'>
<p class=MsoNormal><span lang=EN-US><![if !supportEmptyParas]> <![endif]><o:p></o:p></span></p>
</div>
</body>
</html>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -