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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? c-smo2.html

?? this about vxworks operations systems
?? HTML
?? 第 1 頁 / 共 5 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head><link rel="STYLESHEET" type="text/css" href="wrs.css"><title>    Shared-Memory Objects   </title></head><body bgcolor="FFFFFF"><p class="navbar" align="right"><a href="index.html"><img border="0" alt="[Contents]" src="icons/contents.gif"></a><a href="GuideIX.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="c-smo.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="c-smo1.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="c-smo3.html"><img border="0" alt="[Next]" src="icons/next.gif"></a></p><font face="Helvetica, sans-serif" class="sans"><h3 class="H2"><i><a name="84388">6.2  &nbsp;&nbsp;Using Shared-Memory Objects</a></i></h3></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84390"> </a>VxMP provides a transparent interface that makes it easy to execute code using shared-memory objects on both a multiprocessor system and a single-processor system. After an object is created, tasks can operate on shared objects with the same routines used to operate on their corresponding local objects. For example, shared semaphores, shared message queues, and shared-memory partitions have the same syntax and interface as their local counterparts. Routines such as <b class="routine"><i class="routine">semGive</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">semTake</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">msgQSend</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">msgQReceive</i></b><b>(</b>&nbsp;<b>)</b>, <b class="routine"><i class="routine">memPartAlloc</i></b><b>(</b>&nbsp;<b>)</b>, and <b class="routine"><i class="routine">memPartFree</i></b><b>(</b>&nbsp;<b>)</b> operate on both local and shared objects. Only the create routines are different. This allows an application to run in either a single-processor or a multiprocessor environment with only minor changes to system configuration, initialization, and object creation.</p><dd><p class="Body"><a name="84391"> </a>All shared-memory objects can be used on a single-processor system. This is useful for testing an application before porting it to a multiprocessor configuration. However, for objects that are used only locally, local objects always provide the best performance.</p><dd><p class="Body"><a name="84395"> </a>After the shared-memory facilities are initialized (see <a href="c-smo4.html#85343"><i class="title">6.4&nbsp;Configuration</i></a> for initialization differences), all processors are treated alike. Tasks on any CPU can create and use shared-memory objects. No processor has priority over another from a shared-memory object's point of view.<sup><a href="#foot"><b class="FootnoteMarker">1</b></a></sup></p><dd><p class="Body"><a name="84399"> </a>Systems making use of shared memory can include a combination of supported architectures. This enables applications to take advantage of different processor types and still have them communicate. However, on systems where the processors have different byte ordering, you must call the macros <b class="symbol_lc">ntohl</b> and <b class="symbol_lc">htonl</b> to byte-swap the application's shared data (see <i class="title">VxWorks Network Programmer's Guide: TCP/IP Under VxWorks</i>).</p><dd><p class="Body"><a name="84403"> </a>When an object is created, an <i class="term">object ID </i>is returned to identify it. For tasks on different CPUs to access shared-memory objects, they must be able to obtain this ID. An object's ID is the same regardless of the CPU. This allows IDs to be passed using shared message queues, data structures in shared memory, or the name database.</p><dd><p class="Body"><a name="84404"> </a>Throughout the remainder of this chapter, system objects under discussion refer to shared objects unless otherwise indicated.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="84405">6.2.1  &nbsp;&nbsp;Name Database</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84407"> </a>The <b></b><i class="term">name database</i> allows the association of any value to any name, such as a shared-memory object's ID with a unique name. It can communicate or <i class="term">advertise </i>a shared-memory block's address and object type. The name database provides name-to-value and value-to-name translation, allowing objects in the database to be accessed either by name or by value. While other methods exist for advertising an object's ID, the name database is a convenient method for doing this.</p><dd><p class="Body"><a name="84409"> </a>Typically the task that creates an object also advertises the object's ID by means of the name database. By adding the new object to the database, the task associates the object's ID with a name. Tasks on other processors can look up the name in the database to get the object's ID. After the task has the ID, it can use it to access the object. </p><dd><p class="Body"><a name="84410"> </a>For example, task <b class="task">t1</b> on CPU 1 creates an object. The object ID is returned by the creation routine and entered in the name database with the name <b class="symbol_lc">myObj</b>. For task <b class="task">t2</b> on CPU 0 to operate on this object, it first finds the ID by looking up the name <b class="symbol_lc">myObj</b> in the name database. </p><dd><p class="Body"><a name="84411"> </a>This same technique can be used to advertise a shared-memory address. For example, task<b class="task"> t1</b> on CPU 0 allocates a chunk of memory and adds the address to the database with the name <b class="symbol_lc">mySharedMem</b>. Task <b class="task">t2 </b>on CPU 1 can find the address of this shared memory by looking up the address in the name database using <b class="symbol_lc">mySharedMem</b>.</p><dd><p class="Body"><a name="84412"> </a>Tasks on different processors can use an agreed-upon name to get a newly created object's value. See <a href="c-smo2.html#84419">Table&nbsp;6-1</a> for a list of name service routines. Note that retrieving an ID from the name database need occur only one time for each task, and usually occurs during application initialization.<p class="table"><h4 class="EntityTitle"><a name="84419"><font face="Helvetica, sans-serif" size="-1" class="sans">Table 6-1:&nbsp;&nbsp;Name Service Routines</font></a></h4><table border="0" cellpadding="0" cellspacing="0"><tr><td colspan="20"><hr class="tablerule"></td></tr><tr valign="middle"><th rowspan="1" colspan="1"><div class="CellHeading"><b><a name="84423"> </a><font face="Helvetica, sans-serif" size="-1" class="sans">Routine</font></b></div></th><th rowspan="1" colspan="1"><div class="CellHeading"><b><a name="84425"> </a><font face="Helvetica, sans-serif" size="-1" class="sans">Functionality</font></b></div></th></tr><tr><td colspan="20"><hr class="tablerule2"></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84428"> </a><b class="routine"><i class="routine">smNameAdd</i></b><b>(</b>&nbsp;<b>)</b>&nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="84431"> </a>Add a name to the name database.&nbsp;</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84434"> </a><b class="routine"><i class="routine">smNameRemove</i></b><b>(</b>&nbsp;<b>)</b>&nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="84436"> </a>Remove a name from the name database.&nbsp;</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84439"> </a><b class="routine"><i class="routine">smNameFind</i></b><b>(</b>&nbsp;<b>)</b>&nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="84442"> </a>Find a shared symbol by name.&nbsp;</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84445"> </a><b class="routine"><i class="routine">smNameFindByValue</i></b><b>(</b>&nbsp;<b>)</b>&nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="84447"> </a>Find a shared symbol by value.&nbsp;</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84450"> </a><b class="routine"><i class="routine">smNameShow</i></b><b>(</b>&nbsp;<b>)</b>&nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBody"><a name="84452"> </a>Display the name database to the standard output device; automatically included if <b class="symbol_UC">INCLUDE_SM_OBJ</b> is selected.&nbsp;</div></td></tr><tr><td colspan="20"><hr class="tablerule"></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p></p><dd><p class="Body"><a name="84453"> </a>The name database service routines automatically convert to or from network-byte order; do not call <b class="routine"><i class="routine">htonl</i></b><b>(&nbsp;)</b>or <b class="routine"><i class="routine">ntohl</i></b><b>(&nbsp;)</b> explicitly for values from the name database. </p><dd><p class="Body"><a name="84496"> </a>The object types listed in <a href="c-smo2.html#84464">Table&nbsp;6-2</a> are defined in <b class="file">smNameLib.h</b>.<p class="table"><h4 class="EntityTitle"><a name="84464"><font face="Helvetica, sans-serif" size="-1" class="sans">Table 6-2:&nbsp;&nbsp;Shared-Memory Object Types</font></a></h4><table border="0" cellpadding="0" cellspacing="0"><tr><td colspan="20"><hr class="tablerule"></td></tr><tr valign="middle"><th rowspan="1" colspan="1"><div class="CellHeading"><b><a name="84468"> </a><font face="Helvetica, sans-serif" size="-1" class="sans">Constant</font></b></div></th><th rowspan="1" colspan="1"><div class="CellHeadingC" align="center"><a name="84470"> </a><b><font face="Helvetica, sans-serif" size="-1" class="sans">Hex Value</font></b></div></th></tr><tr><td colspan="20"><hr class="tablerule2"></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84473"> </a><b class="symbol_UC">T_SM_SEM_B</b> &nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBodyC" align="center"><a name="84475"> </a>0</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84478"> </a><b class="symbol_UC">T_SM_SEM_C</b> &nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBodyC" align="center"><a name="84480"> </a>1</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84483"> </a><b class="symbol_UC">T_SM_MSG_Q</b> &nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBodyC" align="center"><a name="84485"> </a>2</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84488"> </a><b class="symbol_UC">T_SM_PART_ID</b> &nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBodyC" align="center"><a name="84490"> </a>3</div></td></tr><tr valign="top"><td colspan=1 rowspan=1><div class="CellBody"><a name="84493"> </a><b class="symbol_UC">T_SM_BLOCK</b> &nbsp;</div></td><td colspan=1 rowspan=1><div class="CellBodyC" align="center"><a name="84495"> </a>4</div></td></tr><tr><td colspan="20"><hr class="tablerule"></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p></p><dd><p class="Body"><a name="84498"> </a>The following example shows the name database as displayed by <b class="routine"><i class="routine">smNameShow</i></b><b>(</b>&nbsp;<b>)</b>, which is automatically included if <b class="symbol_UC">INCLUDE_SM_OBJ </b>is selected for inclusion in the project facility VxWorks view. The parameter to <b class="routine"><i class="routine">smNameShow</i></b><b>(</b>&nbsp;<b>)</b> specifies the level of information displayed; in this case, 1 indicates that all information is shown. For additional information on <b class="routine"><i class="routine">smNameShow</i></b><b>(</b>&nbsp;<b>)</b>, see its reference entry.</p><dl class="margin"><dd><pre class="Code2"><b><a name="84499"></b><tt class="output">-&gt; </tt><b>smNameShow 1 </b><tt class="output">value = 0 = 0x0 </tt><b></a></b></pre></dl><dd><p class="Body"><a name="84500"> </a>The output is sent to the standard output device, and looks like the following:</p><dl class="margin"><dd><pre class="Code2"><b><a name="84501"></b><tt class="output">Name in Database Max : 100 Current : 5 Free : 95 Name&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Value&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Type -----------------&nbsp;-------------&nbsp;------------- myMemory&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x3835a0&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SM_BLOCK myMemPart&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x3659f9&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SM_PART_ID myBuff&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x383564&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SM_BLOCK mySmSemaphore&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0x36431d&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SM_SEM_B myMsgQ&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 0x365899&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;SM_MSG_Q</tt><b> </a></b></pre></dl></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="84510">6.2.2  &nbsp;&nbsp;Shared Semaphores</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84512"> </a>Like local semaphores, <i class="term">shared semaphores</i> provide synchronization by means of atomic updates of semaphore state information. See <a href="c-basic.html#83550"><i class="title">2.&nbsp;Basic OS</i></a> in this manual and the reference entry for <b class="library">semLib</b> for a complete discussion of semaphores. Shared semaphores can be given and taken by tasks executing on any CPU with access to the shared memory. They can be used for either synchronization of tasks running on different CPUs or mutual exclusion for shared resources.</p><dd><p class="Body"><a name="84516"> </a>To use a shared semaphore, a task creates the semaphore and advertises its ID. This can be done by adding it to the name database. A task on any CPU in the system can use the semaphore by first getting the semaphore ID (for example, from the name database). When it has the ID, it can then take or give the semaphore. </p><dd><p class="Body"><a name="84517"> </a>In the case of employing shared semaphores for mutual exclusion, typically there is a system resource that is shared between tasks on different CPUs and the semaphore is used to prevent concurrent access. Any time a task requires exclusive access to the resource, it takes the semaphore. When the task is finished with the resource, it gives the semaphore. </p><dd><p class="Body"><a name="84518"> </a>For example, there are two tasks, <b class="task">t1</b> on CPU 0 and <b class="task">t2</b> on CPU 1. Task <b class="task">t1</b> creates the semaphore and advertises the semaphore's ID by adding it to the database and assigning the name <b class="symbol_lc">myMutexSem</b>. Task <b class="task">t2</b> looks up the name <b class="symbol_lc">myMutexSem</b> in the database to get the semaphore's ID. Whenever a task wants to access the resource, it first takes the semaphore by using the semaphore ID. When a task is done using the resource, it gives the semaphore.</p><dd><p class="Body"><a name="84519"> </a>In the case of employing shared semaphores for synchronization, assume a task on one CPU must notify a task on another CPU that some event has occurred. The task being synchronized pends on the semaphore waiting for the event to occur. When the event occurs, the task doing the synchronizing gives the semaphore.</p><dd><p class="Body"><a name="84520"> </a>For example, there are two tasks, <b class="task">t1</b> on CPU 0 and <b class="task">t2</b> on CPU 1. Both <b class="task">t1</b> and <b class="task">t2</b> are monitoring robotic arms. The robotic arm that is controlled by <b class="task">t1</b> is passing a physical object to the robotic arm controlled by<b class="task"> t2</b>. Task<b class="task"> t2</b> moves the arm into position but must then wait until<b class="task"> t1</b> indicates that it is ready for<b class="task"> t2</b> to take the object. Task<b class="task"> t1</b> creates the shared semaphore and advertises the semaphore's ID by adding it to the database and assigning the name <b class="symbol_lc">objReadySem</b>. Task <b class="task">t2</b> looks up the name <b class="symbol_lc">objReadySem</b> in the database to get the semaphore's ID. It then takes the semaphore by using the semaphore ID. If the semaphore is unavailable, <b class="task">t2</b> pends, waiting for<b class="task"> t1</b> to indicate that the object is ready for<b class="task"> t2</b>. When <b class="task">t1</b> is ready to transfer control of the object to <b class="task">t2</b>, it gives the semaphore, readying <b class="task">t2 </b>on CPU1.</p><dd><p class="Body"><a name="84521"> </a>There are two types of shared semaphores, binary and counting. Shared semaphores have their own create routines and return a <b class="symbol_UC">SEM_ID</b>. <a href="c-smo2.html#84530">Table&nbsp;6-3</a> lists the create routines. All other semaphore routines, except <b class="routine"><i class="routine">semDelete</i></b><b>(</b>&nbsp;<b>)</b>, operate transparently on the created shared semaphore.<p class="table"><h4 class="EntityTitle"><a name="84530"><font face="Helvetica, sans-serif" size="-1" class="sans">Table 6-3:&nbsp;&nbsp;Shared Semaphore Create Routines</font></a></h4>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
激情小说欧美图片| 欧美日韩精品免费| 国产高清精品在线| 精品亚洲免费视频| 精品影视av免费| 韩国av一区二区三区| 精品亚洲aⅴ乱码一区二区三区| 99久久伊人精品| www.色精品| 99国产精品国产精品毛片| 91小视频免费观看| 91在线精品一区二区| 一本大道久久a久久综合| 91精品福利视频| 欧美日韩久久一区| 欧美tk—视频vk| 久久免费的精品国产v∧| 欧美国产日本韩| 最新欧美精品一区二区三区| 亚洲码国产岛国毛片在线| 一区二区三区日韩精品视频| 亚洲福利一二三区| 毛片av一区二区| 国产不卡视频一区| 色8久久精品久久久久久蜜 | 91精品欧美福利在线观看| 日韩一区二区三区免费看| 337p粉嫩大胆噜噜噜噜噜91av | 亚洲成年人影院| 日韩二区在线观看| 国产黑丝在线一区二区三区| proumb性欧美在线观看| 欧美亚洲综合在线| 日韩视频一区二区在线观看| 国产女人18毛片水真多成人如厕| **性色生活片久久毛片| 亚洲成人高清在线| 国产综合久久久久影院| a级高清视频欧美日韩| 欧美日韩和欧美的一区二区| 久久久亚洲高清| 一区二区三区在线观看国产| 蜜桃av一区二区在线观看| 成人在线视频一区| 这里只有精品99re| 国产精品萝li| 七七婷婷婷婷精品国产| 99在线视频精品| 日韩久久久精品| 亚洲视频在线观看三级| 久久国产尿小便嘘嘘尿| 91日韩在线专区| 久久久久综合网| 午夜精品久久久久久不卡8050 | 2020国产精品| 亚洲午夜久久久久久久久电影网| 国产一区二区三区久久悠悠色av| 欧美性色欧美a在线播放| 久久久久久久久久看片| 亚洲777理论| 欧美经典一区二区| 视频在线观看91| av激情成人网| 久久在线观看免费| 午夜视频一区二区三区| 成人av手机在线观看| 日韩欧美精品三级| 亚洲一区二区三区在线看| 国产精品一二一区| 日韩欧美你懂的| 亚洲高清不卡在线观看| 91免费视频大全| 久久久久久久久久久久电影| 日韩高清不卡在线| 欧美性猛交xxxx乱大交退制版| 国产精品乱码一区二区三区软件| 日韩av不卡在线观看| 欧美影院精品一区| 国产精品成人午夜| 成人精品小蝌蚪| 久久久不卡网国产精品二区| 美女网站色91| 日韩免费成人网| 日产国产高清一区二区三区| 欧美在线制服丝袜| 一区二区三区中文在线观看| 波多野结衣中文一区| 国产精品无圣光一区二区| 国内精品不卡在线| 精品999久久久| 国产老妇另类xxxxx| 日韩色视频在线观看| 日韩不卡在线观看日韩不卡视频| 欧美日韩色一区| 亚洲国产aⅴ成人精品无吗| 色999日韩国产欧美一区二区| 1000部国产精品成人观看| 不卡视频在线看| 亚洲色图色小说| 色综合色狠狠综合色| 一区二区视频在线看| 91一区二区三区在线播放| 中文字幕在线一区| 成人va在线观看| 自拍偷在线精品自拍偷无码专区 | 欧美视频在线播放| 一区二区三区四区在线| 欧美最新大片在线看| 一区二区三区产品免费精品久久75| 91亚洲精品久久久蜜桃网站 | 26uuu亚洲| 久久国产精品色婷婷| www久久久久| 国产福利不卡视频| 久久久另类综合| yourporn久久国产精品| 亚洲免费观看高清完整版在线观看| 91福利国产精品| 日本午夜精品一区二区三区电影 | 国产精品传媒在线| 91浏览器打开| 亚洲第一狼人社区| 欧美老年两性高潮| 国产专区综合网| 亚洲欧美综合在线精品| 欧美在线免费播放| 麻豆精品精品国产自在97香蕉| 欧美精品一区二区精品网| 国产.欧美.日韩| 亚洲黄色小视频| 欧美一级黄色录像| 福利一区二区在线| 一区二区三区免费看视频| 91精品国产色综合久久不卡蜜臀| 另类成人小视频在线| 国产精品久久久久婷婷二区次| 色偷偷一区二区三区| 日本不卡一区二区三区 | 日本在线不卡视频一二三区| 欧美精品一区二区久久婷婷| 成人成人成人在线视频| 亚洲无人区一区| 26uuu国产在线精品一区二区| 成人精品鲁一区一区二区| 亚洲一卡二卡三卡四卡| 欧美tickling挠脚心丨vk| 99在线视频精品| 麻豆国产精品一区二区三区| 亚洲欧美综合另类在线卡通| 欧美丰满高潮xxxx喷水动漫| 国产成人精品免费一区二区| 亚洲第一综合色| 加勒比av一区二区| 一区二区三区高清不卡| 精品人伦一区二区色婷婷| 一本色道久久综合亚洲精品按摩| 美女性感视频久久| 亚洲最新视频在线观看| 久久嫩草精品久久久久| 欧美蜜桃一区二区三区| 高潮精品一区videoshd| 免费国产亚洲视频| 依依成人综合视频| 欧美国产欧美综合| 日韩欧美另类在线| 欧美日韩一区精品| 成人avav影音| 国产在线视频不卡二| 亚洲18影院在线观看| 中文字幕亚洲区| 精品久久99ma| 欧美男女性生活在线直播观看| 成人动漫视频在线| 国产精品乡下勾搭老头1| 日本不卡在线视频| 亚洲一区视频在线| 亚洲欧美日韩国产成人精品影院| 国产日韩欧美高清在线| 91精品国产色综合久久ai换脸| 91社区在线播放| 国产精品1区二区.| 国内久久精品视频| 日本午夜精品视频在线观看 | 成人免费视频国产在线观看| 捆绑变态av一区二区三区| 亚洲va欧美va人人爽午夜| 亚洲欧美一区二区久久| 欧美国产一区二区| 久久精品一区二区三区不卡| 欧美一区二区三区公司| 欧美日韩综合色| 在线亚洲人成电影网站色www| 粉嫩aⅴ一区二区三区四区 | 精品视频1区2区| 91欧美一区二区| 91老师国产黑色丝袜在线| 99久久国产综合精品色伊| 成人h动漫精品一区二| 国产成人午夜高潮毛片| 国产电影精品久久禁18|