亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? c-iosys9.html

?? this about vxworks operations systems
?? HTML
?? 第 1 頁(yè) / 共 5 頁(yè)
字號(hào):
<dd><p class="ListV"><a name="85127"> </a>[1]    The driver calls <b class="routine"><i class="routine">iosDrvInstall</i></b><b>(</b>&nbsp;<b>)</b>, specifying the addresses of the driver's routines for the seven basic I/O functions.</p></dl><dd><p class="Body"><a name="85128"> </a>The I/O system:</p><dl class="margin"><dd><p class="ListV"><a name="85129"> </a>[2]    Locates the next available slot in the driver table, in this case slot 2.</p><dd><p class="ListV"><a name="85130"> </a>[3]    Enters the addresses of the driver routines in the driver table.</p><dd><p class="ListV"><a name="89869"> </a>[4]    Returns the slot number as the driver number of the newly installed driver. </p><dd><p class="ListV"><a name="93716"> </a><div class="frame"><h4 class="EntityTitle"><a name="89802"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-2:&nbsp;&nbsp;Example - Driver Initialization for Non-Block Devices </font></a></h4><dl class="margin"><div class="Anchor"><a name="89868"> </a><img class="figure" border="0" src="images/c-iosysa2.gif"></div></dl></div></p></dl></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="89870">3.9.2  &nbsp;&nbsp;Devices</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="89871"> </a>Some drivers are capable of servicing many instances of a particular kind of device. For example, a single driver for a serial communications device can often handle many separate channels that differ only in a few parameters, such as device address.</p><dd><p class="Body"><a name="89886"> </a>In the VxWorks I/O system, devices are defined by a data structure called a <i class="term">device header</i> (<b class="symbol_UC">DEV_HDR</b>). This data structure contains the device name string and the driver number for the driver that services this device. The device headers for all the devices in the system are kept in a memory-resident linked list called the <i class="term">device list</i>. The device header is the initial part of a larger structure determined by the individual drivers. This larger structure, called a <i class="term">device descriptor</i>, contains additional device-specific data such as device addresses, buffers, and semaphores.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="89890">The Device List and Adding Devices</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="89891"> </a>Non-block devices are added to the I/O system dynamically by calling the internal I/O routine <b class="routine"><i class="routine">iosDevAdd</i></b><b>(</b>&nbsp;<b>)</b>. The arguments to <b class="routine"><i class="routine">iosDevAdd</i></b><b>(</b>&nbsp;<b>)</b> are the address of the device descriptor for the new device, the device's name, and the driver number of the driver that services the device. The device descriptor specified by the driver can contain any necessary device-dependent information, as long as it begins with a device header. The driver does not need to fill in the device header, only the device-dependent information. The <b class="routine"><i class="routine">iosDevAdd</i></b><b>(</b>&nbsp;<b>)</b> routine enters the specified device name and the driver number in the device header and adds it to the system device list.</p><dd><p class="Body"><a name="85215"> </a>To add a block device to the I/O system, call the device initialization routine for the file system required on that device (<b class="routine"><i class="routine">dosFsDevInit</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">rt11FsDevInit</i></b><b>(</b>&nbsp;<b>)</b>, or <b class="routine"><i class="routine">rawFsDevInit</i></b><b>(</b>&nbsp;<b>)</b>). The device initialization routine then calls <b class="routine"><i class="routine">iosDevAdd</i></b><b>(</b>&nbsp;<b>)</b> automatically.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85216">Example of Adding Devices</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85220"> </a>In <a href="c-iosys9.html#85305">Figure&nbsp;3-3</a>, the example driver's device creation routine <i class="textVariable">xx</i><b class="routine"><i class="routine">DevCreate</i></b><b>(</b>&nbsp;<b>)</b> adds devices to the I/O system by calling <b class="routine"><i class="routine">iosDevAdd</i></b><b>(</b>&nbsp;<b>)</b>.&nbsp;&nbsp;&nbsp;&nbsp;<div class="frame"><h4 class="EntityTitle"><a name="85305"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-3:&nbsp;&nbsp;Example - Addition of Devices to I/O System</font></a></h4><dl class="margin"><div class="Anchor"><a name="89980"> </a><img class="figure" border="0" src="images/c-iosysa3.gif"></div></dl></div></p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="85307">3.9.3  &nbsp;&nbsp;File Descriptors<i class="i"></i></a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85308"> </a>Several <i class="acronym_lc">fd</i>s can be open to a single device at one time. A device driver can maintain additional information associated with an <i class="acronym_lc">fd</i> beyond the I/O system's device information. In particular, devices on which multiple files can be open at one time have file-specific information (for example, file offset) associated with each <i class="acronym_lc">fd</i>. You can also have several <i class="acronym_lc">fd</i>s open to a non-block device, such as a <i class="acronym_lc">tty</i>; typically there is no additional information, and thus writing on any of the <i class="acronym_lc">fd</i>s produces identical results.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85310">The Fd Table</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85311"> </a>Files are opened with <b class="routine"><i class="routine">open</i></b><b>(</b>&nbsp;<b>)</b> (or <b class="routine"><i class="routine">creat</i></b><b>(</b>&nbsp;<b>)</b>). The I/O system searches the device list for a device name that matches the file name (or an initial substring) specified by the caller. If a match is found, the I/O system uses the driver number contained in the corresponding device header to locate and call the driver's open routine in the driver table.</p><dd><p class="Body"><a name="85312"> </a>The I/O system must establish an association between the file descriptor used by the caller in subsequent I/O calls, and the driver that services it. Additionally, the driver must associate some data structure per descriptor. In the case of non-block devices, this is usually the device descriptor that was located by the I/O system. </p><dd><p class="Body"><a name="85314"> </a>The I/O system maintains these associations in a table called the <i class="term">fd table</i>. This table contains the driver number and an additional driver-determined 4-byte value. The driver value is the internal descriptor returned by the driver's open routine, and can be any nonnegative value the driver requires to identify the file. In subsequent calls to the driver's other I/O functions (<b class="routine"><i class="routine">read</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">write</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">ioctl</i></b><b>(</b>&nbsp;<b>)</b>, and <b class="routine"><i class="routine">close</i></b><b>(</b>&nbsp;<b>)</b>), this value is supplied to the driver in place of the <i class="acronym_lc">fd</i> in the application-level I/O call.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85316">Example of Opening a File</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85324"> </a>In <a href="c-iosys9.html#85443">Figure&nbsp;3-4</a> and <a href="c-iosys9.html#93441">Figure&nbsp;3-5</a>, a user calls <b class="routine"><i class="routine">open</i></b><b>(</b>&nbsp;<b>)</b> to open the file <b class="file">/</b><i class="textVariable">xx</i><b class="file">0</b>. The I/O system takes the following series of actions:</p><dl class="margin"><dd><p class="ListV"><a name="85325"> </a>[1]    It searches the device list for a device name that matches the specified file name (or an initial substring). In this case, a complete device name matches.&nbsp;<div class="frame"><h4 class="EntityTitle"><a name="85443"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-4:&nbsp;&nbsp;Example: Call to I/O Routine <b class="routine"><i class="routine">open</i></b><b>(&nbsp;)</b> [<i class="i">Part 1</i>]</font></a></h4><dl class="margin"><div class="Anchor"><a name="85440"> </a><img class="figure" border="0" src="images/c-iosysa4.gif"></div></dl></div></p><dd><p class="ListV"><a name="85444"> </a>[2]    It reserves a slot in the <i class="acronym_lc">fd</i> table, which is used if the open is successful.<div class="frame"><h4 class="EntityTitle"><a name="93441"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-5:&nbsp;&nbsp;Example: Call to I/O Routine <b class="routine"><i class="routine">open</i></b><b>(&nbsp;)</b> [<i class="i">Part 2</i>] </font></a></h4><dl class="margin"><div class="Anchor"><a name="93559"> </a><img class="figure" border="0" src="images/c-iosysa5.gif"></div></dl></div></p><dd><p class="ListV"><a name="85445"> </a>[3]    It then looks up the address of the driver's open routine, <i class="textVariable">xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b>, and calls that routine. Note that the arguments to<i class="textVariable"> xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b> are transformed by the I/O system from the user's original arguments to <b class="routine"><i class="routine">open</i></b><b>(</b>&nbsp;<b>)</b>. The first argument to <i class="textVariable">xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b> is a pointer to the device descriptor the I/O system located in the full file name search. The next parameter is the <i class="emphasis">remainder</i> of the file name specified by the user, after removing the initial substring that matched the device name. In this case, because the device name matched the entire file name, the remainder passed to the driver is a null string. The driver is free to interpret this remainder in any way it wants. In the case of block devices, this remainder is the name of a file on the device. In the case of non-block devices like this one, it is usually an error for the remainder to be anything <i class="emphasis">but</i> the null string. The last parameter is the file access flag, in this case <b class="symbol_UC">O_RDONLY</b>; that is, the file is opened for reading only. </p><dd><p class="ListV"><a name="85568"> </a>[4]    It executes <i class="textVariable">xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b>, which returns a value that subsequently identifies the newly opened file. In this case, the value is the pointer to the device descriptor. This value is supplied to the driver in subsequent I/O calls that refer to the file being opened. Note that if the driver returns only the device descriptor, the driver cannot distinguish multiple files opened to the same device. In the case of non-block device drivers, this is usually appropriate. </p><dd><p class="ListV"><a name="85569"> </a>[5]    The I/O system then enters the driver number and the value returned by <i class="textVariable">xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b> in the reserved slot in the <i class="acronym_lc">fd</i> table. Again, the value entered in the <i class="acronym_lc">fd</i> table has meaning only for the driver, and is arbitrary as far as the I/O system is concerned.</p><dd><p class="ListV"><a name="85571"> </a>[6]    Finally, it returns to the user the index of the slot in the <i class="acronym_lc">fd</i> table, in this case 3.</p></dl></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85573">Example of Reading Data from the File</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85578"> </a>In <a href="c-iosys9.html#85686">Figure&nbsp;3-6</a>, the user calls <b class="routine"><i class="routine">read</i></b><b>(</b>&nbsp;<b>)</b> to obtain input data from the file. The specified <i class="acronym_lc">fd</i> is the index into the <i class="acronym_lc">fd</i> table for this file. The I/O system uses the driver number contained in the table to locate the driver's read routine, <i class="textVariable">xx</i><b class="routine"><i class="routine">Read</i></b><b>(</b>&nbsp;<b>)</b>. The I/O system calls <i class="textVariable">xx</i><b class="routine"><i class="routine">Read</i></b><b>(</b>&nbsp;<b>)</b>, passing it the identifying value in the <i class="acronym_lc">fd</i> table that was returned by the driver's open routine,<i class="textVariable"> xx</i><b class="routine"><i class="routine">Open</i></b><b>(</b>&nbsp;<b>)</b>. Again, in this case the value is the pointer to the device descriptor. The driver's read routine then does whatever is necessary to read data from the device. <div class="frame"><h4 class="EntityTitle"><a name="85686"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-6:&nbsp;&nbsp;Example: Call to I/O Routine <b class="routine"><i class="routine">read</i></b><b>(&nbsp;)</b></font></a></h4><dl class="margin"><div class="Anchor"><a name="85682"> </a><img class="figure" border="0" src="images/c-iosysa6.gif"></div></dl></div></p><dd><p class="Body"><a name="85687"> </a>The process for user calls to <b class="routine"><i class="routine">write</i></b><b>(</b>&nbsp;<b>)</b> and <b class="routine"><i class="routine">ioctl</i></b><b>(</b>&nbsp;<b>)</b> follow the same procedure.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85689">Example of Closing a File</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85691"> </a>The user terminates the use of a file by calling <b class="routine"><i class="routine">close</i></b><b>(</b>&nbsp;<b>)</b>. As in the case of <b class="routine"><i class="routine">read</i></b><b>(</b>&nbsp;<b>)</b>, the I/O system uses the driver number contained in the <i class="acronym_lc">fd</i> table to locate the driver's close routine. In the example driver, no close routine is specified; thus no driver routines are called. Instead, the I/O system marks the slot in the <i class="acronym_lc">fd</i> table as being available. Any subsequent references to that <i class="acronym_lc">fd</i> cause an error. However, subsequent calls to <b class="routine"><i class="routine">open</i></b><b>(</b>&nbsp;<b>)</b> can reuse that slot. </p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85695">Implementing <b class="routine"><i class="routine">select</i></b><b>(&nbsp;)</b></a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85698"> </a>Supporting <b class="routine"><i class="routine">select</i></b><b>(</b>&nbsp;<b>)</b> in your driver allows tasks to wait for input from multiple devices or to specify a maximum time to wait for the device to become ready for I/O. Writing a driver that supports <b class="routine"><i class="routine">select</i></b><b>(</b>&nbsp;<b>)</b> is simple, because most of the functionality is provided in <b class="library">selectLib</b>. You might want your driver to support <b class="routine"><i class="routine">select</i></b><b>(</b>&nbsp;<b>)</b> if any of the following is appropriate for the device:</p></dl><dl class="margin">

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲手机成人高清视频| 欧美一区二区三级| 1000部国产精品成人观看| 91亚洲国产成人精品一区二区三| 亚洲啪啪综合av一区二区三区| 在线国产亚洲欧美| 国内成人免费视频| 亚洲综合久久久| 精品国产一区二区三区四区四| 成人a级免费电影| 日本v片在线高清不卡在线观看| 精品福利在线导航| 亚洲精品一区二区三区精华液| 日韩三级中文字幕| 欧美人与禽zozo性伦| 成人a免费在线看| 色综合天天综合| 精彩视频一区二区三区| 午夜日韩在线观看| 一级中文字幕一区二区| 欧美激情艳妇裸体舞| 欧美一级在线视频| 精品成人在线观看| 中文字幕中文字幕在线一区| 亚洲精品一区二区三区蜜桃下载| 亚洲精品一区二区三区蜜桃下载| 欧美精彩视频一区二区三区| 日韩一区二区在线观看视频| 久久久久国产成人精品亚洲午夜| 欧美日本在线看| 精品国产百合女同互慰| 国产精品久久久久久久久图文区 | 欧美一区二区在线免费播放| 日韩欧美中文字幕精品| 国产精品麻豆欧美日韩ww| 精品国产乱子伦一区| 国产精品免费视频一区| 亚洲无线码一区二区三区| 亚洲乱码中文字幕综合| 亚洲欧美一区二区三区极速播放| 香蕉久久一区二区不卡无毒影院| 亚洲高清三级视频| 国产ts人妖一区二区| 丁香五精品蜜臀久久久久99网站| 在线免费不卡电影| 欧美激情一区二区三区在线| 偷窥少妇高潮呻吟av久久免费| 国产精品一区二区久久精品爱涩| 国产精品主播直播| 777午夜精品免费视频| 欧美精选午夜久久久乱码6080| 欧美日韩国产高清一区二区三区 | 成人禁用看黄a在线| 67194成人在线观看| 亚洲国产成人在线| 麻豆成人av在线| 国产精品一区在线观看乱码| 精品视频一区二区三区免费| 欧美丰满嫩嫩电影| 亚洲裸体在线观看| 夫妻av一区二区| 久久夜色精品国产噜噜av| 国产精品人人做人人爽人人添| 奇米888四色在线精品| 欧美亚洲自拍偷拍| 久久亚洲影视婷婷| 老司机午夜精品99久久| 99精品国产91久久久久久| 欧美日韩激情在线| 亚洲高清在线视频| 欧美日韩中文国产| 亚洲永久精品大片| 欧美中文字幕一区二区三区 | 精品一区二区三区久久久| 欧美日韩另类一区| 亚洲永久免费av| 成人精品国产免费网站| 中文字幕欧美激情一区| 国产精品自拍网站| 中文字幕一区二区三区色视频| 成人免费视频国产在线观看| 欧美午夜精品久久久久久超碰| 亚洲欧美日韩系列| 欧美在线视频不卡| 亚洲第一在线综合网站| 欧美日韩国产乱码电影| 亚洲成人av福利| 欧美日韩黄色一区二区| 日韩极品在线观看| 成人白浆超碰人人人人| 亚洲另类色综合网站| 色哦色哦哦色天天综合| 日本一区二区免费在线观看视频| 国产激情精品久久久第一区二区| 777久久久精品| 国产麻豆视频精品| 91麻豆精品国产91久久久久| 青青国产91久久久久久| 精品国产99国产精品| 丁香激情综合国产| 亚洲小说欧美激情另类| 69堂成人精品免费视频| 国产剧情一区二区| 亚洲视频 欧洲视频| 4438x成人网最大色成网站| 精品一区二区三区在线播放| 中文字幕精品一区二区三区精品| 色94色欧美sute亚洲13| 中文字幕一区二区三区乱码在线 | 欧美色综合网站| 欧美在线短视频| 蜜桃一区二区三区在线观看| www国产成人免费观看视频 深夜成人网 | 美美哒免费高清在线观看视频一区二区 | 欧美区视频在线观看| 国产在线不卡一区| 亚洲福中文字幕伊人影院| 久久久不卡网国产精品一区| 色久综合一二码| 国产精品白丝jk黑袜喷水| 夜夜揉揉日日人人青青一国产精品| 日韩欧美电影在线| 青娱乐精品视频在线| 最新不卡av在线| 精品第一国产综合精品aⅴ| 欧美在线看片a免费观看| 国产麻豆视频一区二区| 蜜臀av性久久久久蜜臀aⅴ| 日本一区二区电影| 欧美tk丨vk视频| 福利91精品一区二区三区| 丝袜美腿亚洲综合| 国产精品电影一区二区三区| 26uuu另类欧美| 91精品午夜视频| 在线观看国产91| 91尤物视频在线观看| 国产高清不卡二三区| 日韩精品欧美精品| 亚洲成人1区2区| 一区二区三区高清在线| 亚洲欧洲av在线| 国产精品青草久久| 国产午夜亚洲精品午夜鲁丝片| 99久久伊人精品| 丁香婷婷综合激情五月色| 久久成人麻豆午夜电影| 日韩精品一级二级 | 在线亚洲免费视频| aa级大片欧美| 日本伊人色综合网| 国产精品成人网| 国产精品嫩草影院av蜜臀| 中文字幕 久热精品 视频在线 | 成人激情视频网站| 国产成人在线视频网址| 国产精品99久久不卡二区| 久久99热99| 国产成人午夜片在线观看高清观看 | 亚洲三级电影网站| 亚洲另类春色校园小说| 亚洲男人的天堂网| 亚洲一区二区三区四区不卡| 亚洲午夜一二三区视频| 日韩激情一区二区| 人妖欧美一区二区| 国产精一区二区三区| 高清视频一区二区| 91捆绑美女网站| 欧美另类高清zo欧美| 欧美va亚洲va在线观看蝴蝶网| 国产亚洲午夜高清国产拍精品| 国产夜色精品一区二区av| 国产精品久久久久久妇女6080 | 丁香另类激情小说| 欧美艳星brazzers| 日韩欧美国产三级电影视频| 久久免费视频色| 亚洲免费电影在线| 日本不卡中文字幕| 国产盗摄一区二区| 日本韩国视频一区二区| 欧美一区二区日韩| 欧美高清在线一区二区| 亚洲愉拍自拍另类高清精品| 另类人妖一区二区av| 成人爽a毛片一区二区免费| 欧美在线观看视频在线| 精品播放一区二区| 亚洲专区一二三| 国内久久精品视频| 欧美日韩国产影片| 国产精品网站在线观看| 丝袜美腿亚洲色图| 成人三级在线视频| 欧美一级高清大全免费观看| 中文字幕日本乱码精品影院| 免费在线观看精品| 91国偷自产一区二区开放时间 | 欧美一区二区三区人|