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

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

?? c-dll5.html

?? vxWorks網絡協議驅動開發用戶手冊寫協議棧時的好指引
?? HTML
?? 第 1 頁 / 共 4 頁
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"><html><head><link rel="STYLESHEET" type="text/css" href="wrs.css"><title>    Data Link Layer Network Components    </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="c-dll.html"><img border="0" alt="[Index]" src="icons/index.gif"></a><a href="c-dll.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="c-dll4.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="c-dll6.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="85549">3.5  &nbsp;&nbsp;Shared-Memory Network on the Backplane</a></i></h3></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85551"> </a>The VxWorks network can also be used for communication among multiple processors on a common <i class="term">backplane.</i>  In this case, data is passed through shared memory.  This is implemented in the form of a standard network driver so that all the higher levels of network components are fully functional over this shared-memory "network."  Thus, all the high-level network facilities provided over an Ethernet are also available over the shared-memory network.</p><dd><p class="Body"><a name="85553"> </a>A multiprocessor backplane bus contains a separate Internet network.  Each shared-memory network has its own network/subnet number.  As usual, each processor (host) on the shared-memory network has a unique Internet address.  </p></dl></dl><dl class="margin"><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/caution.gif"></td><td><hr><div class="CalloutCell"><a name="93470"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">CAUTION:  </font></b></a>This is different if you are using proxy ARP. See <a href="c-tcpip7.html#87225"><i class="title">4.7&nbsp;ARP and Proxy ARP for Transparent Subnets</i></a> for additional information.</div></td></tr><tr valign="top"><td></td><td><hr></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p callout><dl class="margin"><dd><p class="Body"><a name="85569"> </a>In the example shown in <a href="c-dll5.html#85573">Figure&nbsp;3-2</a>, two CPUs are on a backplane.  The shared-memory network's Internet address is 161.27.0.0.  Each CPU on the shared-memory network has a unique Internet address, 161.27.0.1 for <b class="symbol_lc">vx1</b> and 161.27.0.2 for <b class="symbol_lc">vx2</b>.<div class="frame"><h4 class="EntityTitle"><a name="85573"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-2:&nbsp;&nbsp;Shared-Memory Network</font></a></h4><dl class="margin"><div class="Anchor"><a name="85595"> </a><img class="figure" border="0" src="images/c-dlla2.gif"></div></dl></div></p><dd><p class="Body"><a name="85597"> </a>The routing capabilities of the VxWorks IP layer allow processors on a shared-memory network to reach systems on other networks over a <i class="term">gateway</i> processor on the shared-memory network.  The gateway processor has connections to both the shared-memory network and an external network. These connections allow higher-level protocols to transmit data between any processor on the shared-memory network and any other host or target system on the external network. </p><dd><p class="Body"><a name="85598"> </a>The low-level data transfer mechanism of the shared-memory network driver is also available directly.  This allows alternative protocols to be run over the shared-memory network in addition to the standard ones.</p><dd><p class="Body"><a name="85599"> </a>The following features allow the VxWorks shared-memory network driver to send network packets from one processor on the backplane to another:</p></dl><dl class="margin"><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85600"> </a>Packets are transferred across the backplane through a pool of <i class="term">shared memory</i> that can be accessed by all processors on the backplane.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85602"> </a>Access to the shared-memory pool is interlocked by use of a test-and-set instruction.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85603"> </a>Processors can poll the shared-memory data structures for input packets receive notification of packet arrival through interrupts.</li></ul></p></dl><dl class="margin"><dd><p class="Body"><a name="85604"> </a>The shared-memory network is configured by various configuration constants and by parameters specified to the VxWorks boot ROMs.  The following sections give the details of the backplane network operation and configuration.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H3"><i><a name="85605">3.5.1  &nbsp;&nbsp;The Backplane Shared-Memory Pool</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85606"> </a>The basis of the VxWorks shared-memory network is the <i class="term">shared-memory pool.</i>  This is a contiguous block of memory that must be accessible to all processors on the backplane.  Typically this memory is either part of one of the processors' on-board, dual-ported memory, or a separate memory board.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85607">Backplane Processor Numbers</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85609"> </a>The processors on the backplane are each assigned a unique <i class="term">backplane processor number</i> starting with 0.  The assignment of numbers is arbitrary, except for processor 0, which by convention is the shared-memory network master, described in the next section.</p><dd><p class="Body"><a name="85610"> </a>The processor numbers are established by the parameters supplied to the boot ROMs when the system is booted.  These parameters can be burned into ROM, set in the processor's NVRAM (if available), or entered manually.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85611">The Shared-Memory Network Master: Processor 0</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85613"> </a>One of the processors on the backplane is the <i class="term">shared-memory network master.</i>  The shared-memory network master has the following responsibilities:</p></dl><dl class="margin"><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85615"> </a>Initializing the shared-memory pool and the <i class="term">shared-memory</i> <i class="term">anchor</i>.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85617"> </a>Maintaining the <i class="term">shared-memory heartbeat</i>.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85618"> </a>Functioning (usually) as the gateway to the external (Ethernet) network.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85619"> </a>Allocating the shared-memory pool from its dual-ported memory (in some configurations).</li></ul></p></dl><dl class="margin"><dd><p class="Body"><a name="85620"> </a>No processor can use the shared-memory network until the master has initialized it.  However, the master processor is <i class="emphasis">not</i> involved in the actual transmission of packets on the backplane between other processors.  After the shared-memory pool is initialized, the processors, including the master, are all peers.</p><dd><p class="Body"><a name="85621"> </a>The configuration module <b class="file">target/src/config/usrNetwork.c</b> sets the processor number of the master to 0.  The master usually boots from the external (Ethernet) network directly.  The master has two Internet addresses in the system:  its Internet address on the Ethernet, and its address on the shared-memory network.  See the reference entry for <b class="library">usrConfig</b>.</p><dd><p class="Body"><a name="85622"> </a>The other processors on the backplane boot indirectly over the shared-memory network, using the master as the gateway.  They have only an Internet address on the shared-memory network.  These processors specify the shared-memory network interface, <b class="symbol_lc">sm</b>, as the boot device in the boot parameters.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85624">The Shared-Memory Anchor</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85626"> </a>The location of the shared-memory pool depends on the system configuration. In many situations, you want to allocate the shared memory at run-time rather than fixing its location at the time the system is built.</p><dd><p class="Body"><a name="85627"> </a>Of course, all processors on the shared-memory network must be able to access the shared-memory pool, even if its location is not assigned at compile time.  The shared-memory anchor serves as a common point of reference for all processors.  The anchor is a small data structure assigned at a fixed location at compile time.  This location is usually in low memory of the dual-ported memory of one of the processors. Sometimes the anchor structure is stored at some fixed address on the separate memory board.</p><dd><p class="Body"><a name="85628"> </a>The anchor contains a pointer to the actual shared-memory pool.  The master sets this pointer during initialization.  The value of the pointer to the shared-memory pool is actually an offset from the anchor itself. Thus, the anchor and pool must be in the same address space so that the offset is valid for all processors.</p><dd><p class="Body"><a name="85630"> </a>The backplane anchor address is established by configuration constants or by boot parameters.  For the shared-memory network master, the anchor address is assigned in the master's configuration at the time the system image is built.  The shared memory anchor address, <i class="emphasis">as seen by the master</i>, is also set during configuration.  The relevant configuration macro is <b class="symbol_UC">SM_ANCHOR_ADRS</b>.</p><dd><p class="Body"><a name="85632"> </a>For the other processors on the shared-memory network, a default anchor address can also be assigned during configuration in the same way.  However, this requires burning boot ROMs with that configuration, because the other processors must, at first, boot from the shared-memory network.  For this reason, the anchor address can also be specified in the boot parameters if the shared-memory network is the boot device.  To do this, enter the address (separated by an equal sign, "=") after the shared-memory network boot device specifier <b>sm</b>.  For example, the following line sets the anchor address to 0x800000: </p><dl class="margin"><dd><pre class="Code2"><b><a name="85633">boot device:  sm=0x800000</a></b></pre></dl><dd><p class="Body"><a name="85634"> </a>In this case, this is the address of the anchor <i class="emphasis">as seen by the processor being booted</i>.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85636">The Shared-Memory Heartbeat</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85638"> </a>The processors on the shared-memory network cannot communicate over that network until the shared-memory pool initialization is finished.  To let the other processors know when the backplane is "alive," the master maintains a <i class="term">shared-memory heartbeat</i>.  This heartbeat is a counter that is incremented by the master once per second.  Processors on the shared-memory network determine that the shared-memory network is alive by watching the heartbeat for a few seconds.</p><dd><p class="Body"><a name="85639"> </a>The shared-memory heartbeat is located in the first 4-byte word of the shared-memory pool.  The offset of the shared-memory pool is the fifth 4-byte word in the anchor, as shown in <a href="c-dll5.html#85646">Figure&nbsp;3-3</a>. <div class="frame"><h4 class="EntityTitle"><a name="85646"><font face="Helvetica, sans-serif" size="-1" class="sans">Figure 3-3:&nbsp;&nbsp;Shared-Memory Heartbeat</font></a></h4><dl class="margin"><div class="Anchor"><a name="85673"> </a><img class="figure" border="0" src="images/c-dlla3.gif"></div></dl></div></p><dd><p class="Body"><a name="85674"> </a>Thus, if the anchor were located at 0x800000:</p><dl class="margin"><dd><pre class="Code2"><b><a name="85675"></b><tt class="output">[VxWorks Boot]:</tt><b> d 0x800000 </b><tt class="output">800000: 8765 4321 0000 0001 0000 0000 0000 002c *.eC!...........,*</tt><b>  </b><tt class="output">800010: 0000 0170 0000 0000 0000 0000 0000 0000 *...p............*  800020: 0000 0000 0000 0000 0000 0000 0000 0000 *................*  </tt><b></a></b></pre></dl><dd><p class="Body"><a name="85679"> </a>The offset to the shared-memory pool is 0x170.  To view the start of the shared-memory pool, display 0x800170:</p><dl class="margin"><dd><pre class="Code2"><b><a name="85680"></b><tt class="output">[VxWorks Boot]:</tt><b> d 0x800170 </b><tt class="output">800170: 0000 0050 0000 0000 0000 0bfc 0000 0350 *...P...........P*</tt><b></a></b></pre></dl><dd><p class="Body"><a name="85682"> </a>In this example, the value of the shared-memory heartbeat is 0x50.  Examine this location again to determine whether the network is alive. If the value has changed, the network is alive.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85684">Shared-Memory Location</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85686"> </a>As mentioned previously, shared memory is assigned a fixed location at compile time or it is allocated dynamically at run-time.  The location is determined by the value of the shared memory size set during configuration (configuration constant: <b class="symbol_UC">SM_MEM_ADRS</b>).  This constant can be specified as follows:</p></dl><dl class="margin"><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85688"> </a><b class="symbol_UC">NONE</b> (-1) means that the shared-memory pool is to be dynamically allocated from the master's on-board dual-ported memory.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85689"> </a>An absolute address that is <i class="emphasis">different</i> from the anchor address.  The shared memory anchor address (configuration constant:  <b class="symbol_UC">SM_ANCHOR_ADRS</b>) indicates that the shared-memory pool starts at that fixed address.</li></ul></p><p class="listspace"><ul class="Bullet" type="disc"><li><a name="85691"> </a>For convenience, an absolute address that is the <i class="emphasis">same</i> as the anchor address means the shared-memory pool starts immediately after the anchor data structure; the size of that structure need not be known in advance.</li></ul></p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85692">Shared Memory Size</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85695"> </a>The size of the shared-memory pool is set during configuration.  The relevant configuration macro is <b class="symbol_UC">SM_MEM_SIZE</b>.</p><dd><p class="Body"><a name="85696"> </a>The size required for the shared-memory pool depends on the number of processors and the expected traffic.  There is less than 2KB of overhead for data structures.  After that, the shared-memory pool is divided into 2KB packets.  Thus, the maximum number of packets available on the backplane network is (<i class="textVariable">poolsize</i> - 2KB) / 2KB.  A reasonable minimum is 64KB.  A configuration with a large number of processors on one backplane and many simultaneous connections can require as much as 512KB.  Having too small a pool slows down communications.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85698">On-Board and Off-Board Options</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85700"> </a>The configuration of VxWorks includes a conditional compilation constant that makes it easy to select a pair of typical configurations, for instance between an <i class="emphasis">off-board</i> shared-memory pool and an <i class="emphasis">on-board</i> shared memory pool.  The relevant configuration macro is  <b class="symbol_UC">SM_OFF_BOARD</b>.</p><dd><p class="Body"><a name="85703"> </a>A typical <i class="term">off-board</i> configuration establishes the backplane anchor and memory pool at an absolute address of 0x800000 on a separate memory board with a pool size of 512KB.</p><dd><p class="Body"><a name="85705"> </a>The <i class="term">on-board</i> configuration establishes the shared-memory anchor at a low address in the master processor's dual-ported memory.  The shared-memory pool size is set to 64KB allocated from the master's own memory at run time. </p></dl></dl><dl class="margin"><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/note.gif"></td><td><hr><div class="CalloutCell"><a name="91592"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">NOTE:  </font></b></a>These configurations are provided as examples. Change them to suit your needs.</div></td></tr><tr valign="top"><td></td><td><hr></td></tr><tr valign="middle"><td colspan="20"></td></tr></table></p callout><dl class="margin"><dd><p class="Body"><a name="85714"> </a>Because the shared-memory pool is accessed by all processors on the backplane, that memory must be configured as non-cacheable. On some systems, this requires that you change the <b class="symbol_lc">sysPhysMemDesc[ ]</b> table in<b class="file">sysLib.c</b>. Specifically, any board whose MMU is enabled (the default) must disable caching for off-board memory. Fortunately, if the VME address space used for the shared-memory pool already has a virtual-to-physical mapping in the table, the memory is already marked non-cacheable. Otherwise, you must add the appropriate mapping (with caching disabled). </p><dd><p class="Body"><a name="85717"> </a>For the MC680<i class="textVariable">x</i>0 family of processors, virtual addresses must equal physical addresses.  For the 68030, if the MMU is off, caching must be turned off globally; see the reference entry for <b class="library">cacheLib</b>.  Note that the default for all BSPs is to have their VME bus access set to non-cacheable in <b class="symbol_lc">sysPhysMemDesc[&nbsp;]</b>.  See <i class="title">VxWorks Programmer's Guide: Virtual Memory Interface</i>. </p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="85719">Test-and-Set to Shared Memory</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="85721"> </a>Unless some form of mutual exclusion is provided, multiple processors can simultaneously access certain critical data structures of the shared-memory pool and cause fatal errors.  The VxWorks shared-memory network uses an indivisible test-and-set instruction to obtain exclusive use of a shared-memory data structure.  This translates into a <i class="term">read-modify-write</i> (RMW) cycle on the backplane bus.</p><dd><p class="Body"><a name="85723"> </a>It is important that the selected shared memory supports the RMW cycle on the bus and guarantee the indivisibility of such cycles.  This is especially problematic if the memory is dual-ported, as the memory must then also lock out one port during a RMW cycle on the other.</p><dd><p class="Body"><a name="85724"> </a>Some processors do not support RMW indivisibly in hardware, but do have software hooks to provide the capability.  For example, some processor boards have a flag that can be set to prevent the board from releasing the backplane bus, after it is acquired, until that flag is cleared.  You can implement these techniques for a processor in the <b class="routine"><i class="routine">sysBusTas</i></b><b>(&nbsp;)</b>routine of the system-dependent library <b class="library">sysLib.c</b>. The shared-memory network driver calls this routine to set up mutual exclusion on shared-memory data structures.</p></dl></dl><dl class="margin"><dd><p class="table" callout><table border="0" cellpadding="0" cellspacing="0"><tr valign="top"><td valign="top" width="40"><br><img border="0" alt="*" src="icons/caution.gif"></td><td><hr><div class="CalloutCell"><a name="93480"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">CAUTION:  </font></b></a>Configure the shared memory test-and-set type for VxWorks (configuration constant:  <b class="symbol_UC">SM_TAS_TYPE</b>) to either <b class="symbol_UC">SM_TAS_SOFT</b> or <b class="symbol_UC">SM_TAS_HARD</b>.  If even one processor on the backplane lacks hardware test and set, all processors in the backplane must use the software test and set (<b class="symbol_UC">SM_TAS_SOFT</b>). </div></td>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产一区二区女| 亚洲国产精品一区二区www在线| 国产精品久久精品日日| 日本中文一区二区三区| 色噜噜狠狠色综合欧洲selulu| 中文文精品字幕一区二区| 午夜精品视频在线观看| 欧美日韩在线直播| 亚洲第一二三四区| 91精品欧美综合在线观看最新| 亚洲综合视频在线| 欧美久久久久久蜜桃| 蜜臀久久久99精品久久久久久| 日韩午夜av一区| 麻豆极品一区二区三区| 亚洲精品视频免费看| 日本精品视频一区二区三区| 国产美女一区二区三区| 五月婷婷色综合| 亚洲免费av网站| 精品视频在线免费| 不卡的av网站| 一区二区三区四区亚洲| 在线91免费看| 日本精品一区二区三区高清 | 蜜桃精品视频在线| 亚洲美女淫视频| 综合电影一区二区三区 | 日韩精品一区二区三区在线| 久久99精品国产| 国产欧美精品一区二区三区四区| 成人福利视频在线| 国产米奇在线777精品观看| 亚洲成人av一区二区| 亚洲天堂免费在线观看视频| 国产欧美日韩精品在线| 久久在线免费观看| 91亚洲精品乱码久久久久久蜜桃| 一区2区3区在线看| 亚洲乱码国产乱码精品精可以看| 国产精品久久久久影院| 欧美精品一区视频| 色综合一区二区三区| 六月丁香综合在线视频| 国产精品乱码久久久久久| 久久久久久久久久久电影| 欧美亚洲高清一区| 顶级嫩模精品视频在线看| 一区二区成人在线视频| 亚洲男帅同性gay1069| 综合分类小说区另类春色亚洲小说欧美| 国产精品免费久久| 综合网在线视频| 亚洲精品视频在线观看网站| 亚洲老司机在线| 亚洲一区二区在线观看视频| 亚洲免费观看在线视频| 亚洲综合激情小说| 午夜精品福利一区二区三区av| 丝袜美腿亚洲色图| 亚洲国产精品高清| 国产精品免费网站在线观看| 国产精品久久久久天堂| 亚洲品质自拍视频| 亚洲一区二区视频在线| 日韩精品色哟哟| 国产资源精品在线观看| 三级一区在线视频先锋| 麻豆精品国产传媒mv男同 | 精品一区二区三区香蕉蜜桃 | 欧美一区二区三级| 欧美体内she精视频| 91精品在线麻豆| 久久久久99精品一区| 国产精品动漫网站| 亚洲在线一区二区三区| 另类小说一区二区三区| 99久久99久久精品免费观看| 国产成人免费av在线| 国内精品伊人久久久久影院对白| 成人免费高清在线观看| 成人三级伦理片| 欧美偷拍一区二区| 337p粉嫩大胆色噜噜噜噜亚洲 | 欧美午夜视频网站| 精品国产乱码久久久久久久久| 国产精品久久一卡二卡| 亚洲成人777| 成人免费毛片片v| 欧美欧美欧美欧美首页| 欧美性感一类影片在线播放| 日韩欧美综合在线| 亚洲情趣在线观看| 国产一区二区女| 欧美久久久久中文字幕| 中文字幕一区在线观看视频| 中文字幕亚洲电影| 裸体健美xxxx欧美裸体表演| av电影在线观看一区| 91美女精品福利| 精品国产网站在线观看| 一区二区三区美女视频| 国产精品自拍av| 成人福利视频网站| 欧美一级日韩不卡播放免费| 亚洲裸体xxx| 国产精品自拍毛片| 日韩三级在线免费观看| 亚洲一区电影777| 99精品视频在线免费观看| 精品精品欲导航| 久久中文字幕电影| 亚洲18女电影在线观看| 91麻豆视频网站| 中文字幕欧美三区| 国产一区二区三区高清播放| 欧美丰满高潮xxxx喷水动漫| 怡红院av一区二区三区| 成人黄动漫网站免费app| 精品乱人伦一区二区三区| 午夜视频久久久久久| 在线看国产一区| 日韩午夜激情视频| 日韩专区在线视频| 欧美无砖砖区免费| 亚洲一区二区三区中文字幕| av不卡免费电影| 国产精品国产三级国产普通话99| 国产精品亚洲一区二区三区在线| 日韩精品一区二区在线观看| 日韩二区三区在线观看| 欧美精品一卡两卡| 五月天一区二区三区| 欧美日韩视频专区在线播放| 一区二区在线观看av| 色婷婷av一区二区三区之一色屋| 日韩精品一区二区三区三区免费 | 久久青草欧美一区二区三区| 免费成人在线网站| 色综合网色综合| 亚洲人成在线观看一区二区| 99视频精品全部免费在线| 国产欧美日本一区二区三区| 国产福利一区二区三区视频| 国产亚洲综合av| 丝袜美腿亚洲一区二区图片| 日韩一级高清毛片| 国内精品免费在线观看| 久久久久久久久久电影| 成人激情视频网站| 亚洲欧洲综合另类| 在线免费不卡视频| 日韩精彩视频在线观看| 日韩免费观看2025年上映的电影 | 亚洲国产精品一区二区久久恐怖片 | 丝袜诱惑亚洲看片| 日韩精品中文字幕一区二区三区 | 国产一区二区三区黄视频| 国产农村妇女毛片精品久久麻豆| 成人av免费网站| 一区二区视频在线| 69久久夜色精品国产69蝌蚪网| 免费在线看成人av| 久久久午夜电影| 99在线精品一区二区三区| 一区二区三区在线视频免费观看| 欧美美女视频在线观看| 激情欧美日韩一区二区| 国产精品情趣视频| 欧美性猛交一区二区三区精品| 美国三级日本三级久久99 | 亚洲天堂精品在线观看| 欧美福利一区二区| 国产麻豆9l精品三级站| 《视频一区视频二区| 69精品人人人人| 成人激情开心网| 日韩精品国产精品| 欧美国产禁国产网站cc| 欧美日韩久久一区| 国产精品99久久久久久久女警 | 国产成人午夜99999| 一区二区日韩电影| 欧美精品一区二区三区高清aⅴ | 在线视频欧美精品| 精品一区二区三区免费毛片爱| 中文字幕亚洲在| 欧美一区二区三区视频在线观看| 国产成人午夜视频| 日韩av在线播放中文字幕| 中文av字幕一区| 日韩欧美一区在线| 91小视频免费观看| 国内精品国产三级国产a久久 | 蜜桃免费网站一区二区三区| 中文字幕一区二区三区乱码在线 | 东方aⅴ免费观看久久av| 日韩成人免费在线| 亚洲另类春色校园小说| 久久久精品中文字幕麻豆发布|