📄 task15.htm
字号:
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<meta name="GENERATOR" content="Quadralay WebWorks Publisher Professional Edition 6.0.5">
<meta name="TEMPLATEBASE" content="book_html">
<meta name="LASTUPDATED" content="12/01/03 14:14:41">
<title>5.14 Task data</title>
<STYLE TYPE="text/css">
<!--
span.Signal { text-transform: uppercase; font-family: Verdana }
-->
</STYLE>
</head>
<body link="#3366CC" vlink="#9999CC" text="#000000" alink="#0000CC" bgcolor="#FFFFFF"
background="images/backgrnd.gif">
<p><img src="images/stlogo.gif" width="106" height="83" align="left"
alt="logo here!"> </p>
<table width="331" border="0" align="right" cellpadding="0" cellspacing="0">
<tr>
<td><a href="os20toc.htm"><img src="images/navtoc.gif" width="84" height="23"
border="0" alt="TOC"> </a></td>
<td><a href="task14.htm"><img src="images/navprev.gif" width="80" height="23"
border="0" alt="PREV"> </a></td>
<td><a href="task16.htm"><img src="images/navnext.gif" width="83" height="23"
border="0" alt="NEXT"> </a></td>
<td><a href="os20ix.htm"><img src="images/navidx.gif" width="84" height="23"
border="0" alt="INDEX"> </a></td>
</tr>
</table>
<p><br clear="all">
</p>
<hr align="left">
<blockquote>
<h2>
<a name="1204893"> </a><font color="#003366" face="Verdana, Arial, Helvetica, sans-serif">5.14 Task data</font>
</h2><hr>
<p>
<a name="1204894"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">OS20 provides one word of "task-data" per task. This can be used by the application to store data which is specific to the task, but which needs to be accessed uniformly from multiple tasks.</font>
</p>
<p>
<a name="1204895"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">This is typically used to store data which is required by a library, when the library can be used from multiple tasks but the data is specific to the task. For example, a library which manages an I/O channel may be called by multiple tasks, each of which has its own I/O buffers. To avoid having to pass an I/O descriptor into every call it could be stored in task-data.</font>
</p>
<p>
<a name="1204896"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Although only one word of storage is provided, this is usually treated as a pointer, which points to a user defined data structure which can be as large as required.</font>
</p>
<p>
<a name="1204897"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">Two functions provide access to the task-data pointer:</font>
</p>
<a name="1204899"> </a><font size=2 face=Courier><strong>void* task_data_set (task_t* Task, void* NewData);<br></strong></font>
<p>
<a name="1204900"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><font size=2 face=Courier><strong>task_data_set()</strong></font> sets the task-data pointer of the task specified by <font size=2 face=Courier><strong>Task</strong></font>.</font>
</p>
<a name="1204902"> </a><font size=2 face=Courier><strong>void* task_data(task_t* Task);<br></strong></font>
<p>
<a name="1204903"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif"><font size=2 face=Courier><strong>task_data()</strong></font> retrieves the task-data pointer of the task specified by <font size=2 face=Courier><strong>Task</strong></font>.</font>
</p>
<p>
<a name="1204904"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">If <font size=2 face=Courier><strong>Task</strong></font> is <font size=2 face=Courier><strong>NULL</strong></font>, both functions use the currently active task.</font>
</p>
<p>
<a name="1204906"> </a><font size=2 face="Verdana, Arial, Helvetica, sans-serif">When a task is first created (including the root task), its task-data pointer is set to <font size=2 face=Courier><strong>NULL</strong></font> (<font size=2 face=Courier><strong>0</strong></font>). For example:</font>
</p>
<a name="1204907"> </a><font size=2 face=Courier><strong>typedef struct {<br>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -