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

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

?? c-config3.html

?? this about vxworks operations systems
?? 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>    Configuration and Build   </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-config.html"><img border="0" alt="[Top]" src="icons/top.gif"></a><a href="c-config2.html"><img border="0" alt="[Prev]" src="icons/prev.gif"></a><a href="c-config4.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="84472">8.3  &nbsp;&nbsp;VxWorks Initialization Timeline</a></i></h3></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84473"> </a>This section covers the initialization sequence for VxWorks in a typical development configuration. The steps are described in sequence of execution. This is not the only way VxWorks can be bootstrapped on a particular processor. There are often more efficient or robust techniques unique to a particular processor or hardware; consult your hardware's documentation.</p><dd><p class="Body"><a name="84474"> </a>For final production, the sequence can be revisited to include diagnostics or to remove some of the generic operations that are required for booting a development environment, but that are unnecessary for production. This description can provide only an approximate guide to the processor initialization sequence and does not document every exception to this time-line.</p><dd><p class="Body"><a name="84475"> </a>The early steps of the initialization sequence are slightly different for ROM-based versions of VxWorks; for information, see <a href="c-config6.html#86219"><i class="title">8.6.3&nbsp;Initialization Sequence for ROM-Based VxWorks</i></a>.</p><dd><p class="Body"><a name="84482"> </a>For a summary of the initialization time-line, see <a href="c-config3.html#84763">Table&nbsp;8-1</a>. The following sections describe the initialization in detail by routine name. For clarity, the sequence is divided into a number of main steps or function calls. The key routines are listed in the headings and are described in chronological order.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84485">The VxWorks Entry Point: <b class="routine"><i class="routine">sysInit</i></b><b>(&nbsp;)</b> </a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84486"> </a>The first step in starting a VxWorks system is to load a system image into main memory. This usually occurs as a download from the development host, under the control of the VxWorks boot ROM. Next, the boot ROM transfers control to the VxWorks startup entry point, <b class="routine"><i class="routine">sysInit</i></b><b>(&nbsp;)</b>. This entry point is configured by <b class="symbol_UC">RAM_LOW_ADRS</b> in the makefile and in <b class="file">config.h</b>. The VxWorks memory layout is different for each architecture; for details, see the appendix that describes your architecture.</p><dd><p class="Body"><a name="84488"> </a>The entry point, <b class="routine"><i class="routine">sysInit</i></b><b>(&nbsp;)</b>, is in the system-dependent assembly language module, <b class="library">sysALib.s</b>. It locks out all interrupts, invalidates caches if applicable, and initializes processor registers (including the C stack pointer) to default values. It also disables tracing, clears all pending interrupts, and invokes <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b>, a C subroutine in the <b class="library">usrConfig.c</b> module. For some targets, <b class="routine"><i class="routine">sysInit</i></b><b>(&nbsp;)</b> also performs some minimal system-dependent hardware initialization, enough to execute the remaining initialization in <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b>. The initial stack pointer, which is used only by <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b>, is set to occupy an area below the system image but above the vector table (if any).</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84492">The Initial Routine: <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> </a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84494"> </a>The <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> routine (in <b class="library">usrConfig.c</b>) saves information about the boot type, handles all the initialization that must be performed before the kernel is actually started, and then starts the kernel execution. It is the first C code to run in VxWorks. It is invoked in supervisor mode with all hardware interrupts locked out.</p><dd><p class="Body"><a name="84496"> </a>Many VxWorks facilities cannot be invoked from this routine. Because there is no task context as yet (no TCB and no task stack), facilities that require a task context cannot be invoked. This includes any facility that can cause the caller to be preempted, such as semaphores, or any facility that uses such facilities, such as <b class="routine"><i class="routine">printf</i></b><b>(&nbsp;)</b>. Instead, the <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> routine does only what is necessary to create an initial task, <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b>. This task then completes the startup.</p><dd><p class="Body"><a name="84497"> </a>The initialization in <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> includes the following:</p></dl></dl><dl class="margin"><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84499">Cache Initialization</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84500"> </a>The code at the beginning of <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> initializes the caches, sets the mode of the caches and puts the caches in a safe state. At the end of <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b>, the instruction and data caches are enabled by default.</p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84502">Zeroing Out the System <i class="acronym_lc">bss</i> Segment</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84503"> </a>The C and C++ languages specify that all uninitialized variables must have initial values of 0. These uninitialized variables are put together in a segment called <i class="acronym_lc">bss</i>. This segment is not actually loaded during the bootstrap, because it is known to be zeroed out. Because <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> is the first C code to execute, it clears the section of memory containing <i class="acronym_lc">bss</i> as its very first action. While the VxWorks boot ROMs clear all memory, VxWorks does not assume that the boot ROMs are used.</p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84505">Initializing Interrupt Vectors</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84506"> </a>The exception vectors must be set up before enabling interrupts and starting the kernel. First, <b class="routine"><i class="routine">intVecBaseSet</i></b><b>(&nbsp;)</b> is called to establish the vector table base 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/note.gif"></td><td><hr><div class="CalloutCell"><a name="87061"><b class="symbol_UC"><font face="Helvetica, sans-serif" size="-1" class="sans">NOTE:  </font></b></a>There are exceptions to this in some architectures; see the appendix that describes your architecture for details.</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="84518"> </a>After <b class="routine"><i class="routine">intVecBaseSet</i></b><b>(&nbsp;)</b> is called, the routine <b class="routine"><i class="routine">excVecInit</i></b><b>(&nbsp;)</b> initializes all exception vectors to default handlers that safely trap and report exceptions caused by program errors or unexpected hardware interrupts.</p></dl></dl><dl class="margin"><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84520">Initializing System Hardware to a Quiescent State</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84521"> </a>System hardware is initialized by calling the system-dependent routine <b class="routine"><i class="routine">sysHwInit</i></b><b>(&nbsp;)</b>. This mainly consists of resetting and disabling hardware devices that can cause interrupts after interrupts are enabled (when the kernel is started). This is important because the VxWorks ISRs (for I/O devices, system clocks, and so on), are not connected to their interrupt vectors until the system initialization is completed in the <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> task. However, do not attempt to connect an interrupt handler to an interrupt during the <b class="routine"><i class="routine">sysHwInit</i></b><b>(&nbsp;)</b> call, because the memory pool is not yet initialized.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84524">Initializing the Kernel</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84525"> </a>The <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> routine ends with calls to two kernel initialization routines:</p></dl><dl class="margin"><dd><div class="Item"><a name="84526"> </a><b class="routine"><i class="routine">usrKernelInit</i></b><b>(&nbsp;)</b> (defined in <b class="file">usrKernel.c</b>)</div><dl class="margin"><dl class="margin"><dd><div class="Indent2"><a name="84527"> </a>calls the appropriate initialization routines for each of the specified optional kernel facilities (see <a href="c-config3.html#84763">Table&nbsp;8-1</a> for a list).</div><br></dl></dl><dd><div class="Item"><a name="84532"> </a><b class="routine"><i class="routine">kernelInit</i></b><b>(&nbsp;)</b> (part of <b class="file">kernelLib.c</b>)</div><dl class="margin"><dl class="margin"><dd><div class="Indent2"><a name="84533"> </a>initiates the multitasking environment and never returns. It takes the following parameters: </div><br></dl></dl><dl class="margin"><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84534"> </a>The application to be spawned as the "root" task, typically <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b>.</li></ul></p><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84535"> </a>The stack size.</li></ul></p><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84536"> </a>The start of usable memory; that is, the memory after the main text, data, and <i class="acronym_lc">bss</i> of the VxWorks image. All memory after this area is added to the system memory pool, which is managed by <b class="library">memPartLib</b>. Allocation for dynamic module loading, task control blocks, stacks, and so on, all come out of this region. See <a href="c-config3.html#84549"><i class="title">Initializing the Memory Pool</i></a>.</li></ul></p><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84540"> </a>The top of memory as indicated by <b class="routine"><i class="routine">sysMemTop</i></b><b>(&nbsp;)</b>. If a contiguous block of memory is to be preserved from normal memory allocation, pass <b class="routine"><i class="routine">sysMemTop</i></b><b>(&nbsp;)</b> less the reserved memory.</li></ul></p><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84541"> </a>The interrupt stack size. The interrupt stack corresponds to the largest amount of stack space any interrupt-level routine uses, plus a safe margin for the nesting of interrupts.</li></ul></p><p class="listspace"><ul class="Dash2" type="circle"><li><a name="84542"> </a>The interrupt lock-out level. For architectures that have a <i class="emphasis">level</i> concept, it is the maximum level. For architectures that do not have a level concept, it is the mask to disable interrupts. See the appendix that describes your architecture for details.</li></ul></p></dl></dl><dl class="margin"><dd><p class="Body"><a name="84544"> </a><b class="routine"><i class="routine">kernelInit</i></b><b>(&nbsp;)</b> calls <b class="routine"><i class="routine">intLockLevelSet</i></b><b>(&nbsp;)</b>, disables round-robin mode, and creates an interrupt stack if supported by the architecture. It then creates a root stack and TCB from the top of the memory pool, spawns the root task, <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b>, and terminates the <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> thread of execution. At this time, interrupts are enabled; it is critical that all interrupt sources are disabled and pending interrupts cleared.</p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84549">Initializing the Memory Pool</a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84552"> </a>VxWorks includes a memory allocation facility, in the module <b class="library">memPartLib</b>, that manages a pool of available memory. The <b class="routine"><i class="routine">malloc</i></b><b>(&nbsp;)</b> routine allows callers to obtain variable-size blocks of memory from the pool. Internally, VxWorks uses <b class="routine"><i class="routine">malloc</i></b><b>(&nbsp;)</b> for dynamic allocation of memory. In particular, many VxWorks facilities allocate data structures during initialization. Therefore, the memory pool must be initialized before any other VxWorks facilities are initialized.</p><dd><p class="Body"><a name="84554"> </a>Note that the Tornado target server manages a portion of target memory to support downloading of object modules and other development functions. VxWorks makes heavy use of <b class="routine"><i class="routine">malloc</i></b><b>(&nbsp;)</b>, including allocation of space for loaded modules, allocation of stacks for spawned tasks, and allocation of data structures on initialization. You are also encouraged to use <b class="routine"><i class="routine">malloc</i></b><b>(&nbsp;)</b> to allocate any memory your application requires. Therefore, it is recommended that you assign to the VxWorks memory pool all unused memory, unless you must reserve some fixed absolute memory area for a particular application use.</p><dd><p class="Body"><a name="84555"> </a>The memory pool is initialized by <b class="routine"><i class="routine">kernelInit</i></b><b>(&nbsp;)</b>. The parameters to <b class="routine"><i class="routine">kernelInit</i></b><b>(&nbsp;)</b> specify the start and end address of the initial memory pool. In the default <b class="routine"><i class="routine">usrInit</i></b><b>(&nbsp;)</b> distributed with VxWorks, the pool is set to start immediately following the end of the booted system, and to contain all the rest of available memory.</p><dd><p class="Body"><a name="84558"> </a>The extent of available memory is determined by <b class="routine"><i class="routine">sysMemTop</i></b><b>(&nbsp;)</b>, which is a system-dependent routine that determines the size of available memory. If your system has other noncontiguous memory areas, you can make them available in the general memory pool by later calling <b class="routine"><i class="routine">memAddToPool</i></b><b>(&nbsp;)</b> in the <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> task.<b></b></p></dl></dl><font face="Helvetica, sans-serif" class="sans"><h4 class="H4"><i><a name="84564">The Initial Task: <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> </a></i></h4></font><dl class="margin"><dl class="margin"><dd><p class="Body"><a name="84565"> </a>When the multitasking kernel starts executing, all VxWorks multitasking facilities are available. Control is transferred to the <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> task and the initialization of the system can be completed. For example, <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> performs the following:</p></dl><dl class="margin"><ul class="DashSingle" type="circle"><li><a name="84567"> </a>initialization of the system clock </li></ul><ul class="DashSingle" type="circle"><li><a name="84568"> </a>initialization of the I/O system and drivers </li></ul><ul class="DashSingle" type="circle"><li><a name="84569"> </a>creation of the console devices</li></ul><ul class="DashSingle" type="circle"><li><a name="84570"> </a>setting of standard in and standard out</li></ul><ul class="DashSingle" type="circle"><li><a name="84571"> </a>installation of exception handling and logging</li></ul><ul class="DashSingle" type="circle"><li><a name="84572"> </a>initialization of the pipe driver</li></ul><ul class="DashSingle" type="circle"><li><a name="84573"> </a>initialization of standard I/O</li></ul><ul class="DashSingle" type="circle"><li><a name="84574"> </a>creation of file system devices and installation of disk drivers</li></ul><ul class="DashSingle" type="circle"><li><a name="84575"> </a>initialization of floating-point support</li></ul><ul class="DashSingle" type="circle"><li><a name="84576"> </a>initialization of performance monitoring facilities</li></ul><ul class="DashSingle" type="circle"><li><a name="84577"> </a>initialization of the network </li></ul><ul class="DashSingle" type="circle"><li><a name="84578"> </a>initialization of optional facilities </li></ul><ul class="DashSingle" type="circle"><li><a name="84579"> </a>initialization of WindView (see the <i class="title">WindView User's Guide</i>)</li></ul><ul class="DashSingle" type="circle"><li><a name="84580"> </a>initialization of target agent</li></ul><ul class="DashSingle" type="circle"><li><a name="84581"> </a>execution of a user-supplied startup script</li></ul></dl><dl class="margin"><dd><p class="Body"><a name="84582"> </a>To review the complete initialization sequence within <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b>, see <i class="textVariable">installDir</i><b class="file">/target/config/all/ usrConfig.c</b>.</p><dd><p class="Body"><a name="84583"> </a>Modify these initializations to suit your configuration. The meaning of each step and the significance of the various parameters are explained in the following sections.</p></dl></dl><dl class="margin"><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84584">Initialization of the System Clock</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84586"> </a>The first action in the <b class="routine"><i class="routine">usrRoot</i></b><b>(&nbsp;)</b> task is to initialize the VxWorks clock. The system clock interrupt vector is connected to the routine <b class="routine"><i class="routine">usrClock</i></b><b>(&nbsp;)</b> (described in <a href="c-config3.html#84742"><i class="title">The System Clock Routine: usrClock(&nbsp;)</i></a>) by calling <b class="routine"><i class="routine">sysClkConnect</i></b><b>(&nbsp;)</b>. Then, the system clock rate (usually 60Hz) is set by<b class="routine"><i class="routine"> sysClkRateSet</i></b><b>(&nbsp;)</b>. Most boards allow clock rates as low as 30Hz (some even as low as 1Hz), and as high as several thousand Hz. High clock rates (&gt;1000Hz) are not desirable, because they can cause system <i class="term">thrashing</i>.<i class="term"><sup><a href="#foot"><b class="FootnoteMarker">1</b></a></sup></i> </p><dd><p class="Body"><a name="84596"> </a>The timer drivers supplied by WRS include a call to <b class="routine"><i class="routine">sysHwInit2</i></b><b>(&nbsp;)</b> as part of the <b class="routine"><i class="routine">sysClkConnect</i></b><b>(&nbsp;)</b>routine. Wind River BSPs use <b class="routine"><i class="routine">sysHwInit2</i></b><b>(&nbsp;)</b> to perform further board initialization that is not completed in<b class="routine"><i class="routine"> sysHwInit</i></b><b>(&nbsp;)</b>. For example, an<b class="routine"><i class="routine"> intConnect</i></b><b>(&nbsp;)</b><b class="routine"><i class="routine"> </i></b>of ISRs can take place here, because memory can be allocated now that the system is multitasking.</p></dl><dd><font face="Helvetica, sans-serif" size="-1" class="sans"><h5 class="HU"><i><a name="84597">Initialization of the I/O System</a></i></h5></font><dl class="margin"><dd><p class="Body"><a name="84599"> </a>If <b class="symbol_UC">INCLUDE_IO_SYSTEM</b> is defined in <b class="file">configAll.h</b>, the VxWorks I/O system is initialized by calling the routine <b class="routine"><i class="routine">iosInit</i></b><b>(&nbsp;)</b>. The arguments specify the maximum number of drivers that can be subsequently installed, the maximum number of files that can be open in the system simultaneously, and the desired name of the "null" device that is included in the VxWorks I/O system. This null device is a "bit-bucket" on output and always returns end-of-file for input.</p>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本一道久久a久久精品综合蜜臀 一本一道综合狠狠老 | 日本va欧美va欧美va精品| 一级女性全黄久久生活片免费| 国产精品青草久久| 自拍偷拍亚洲综合| 亚洲 欧美综合在线网络| 日韩专区一卡二卡| 激情五月婷婷综合| 不卡在线观看av| 777精品伊人久久久久大香线蕉| 日韩欧美国产成人一区二区| 欧美日本韩国一区二区三区视频| 亚洲精品老司机| 麻豆国产精品官网| 一本色道久久加勒比精品| 精品人在线二区三区| 亚洲欧美国产77777| 毛片av中文字幕一区二区| av日韩在线网站| 久久综合精品国产一区二区三区| 亚洲天堂免费看| 国产v日产∨综合v精品视频| 欧美日韩亚洲综合一区 | 国产精品99久久久久久久女警| 91一区二区三区在线观看| 日韩欧美国产综合| 亚洲777理论| 色综合久久66| 亚洲黄色小说网站| 色婷婷av一区| 最近日韩中文字幕| 成人avav在线| 亚洲天堂久久久久久久| 国产精品99久久久久久久女警| 日韩欧美美女一区二区三区| 亚洲成年人网站在线观看| 在线亚洲免费视频| 一二三区精品福利视频| 在线观看欧美黄色| 亚洲制服欧美中文字幕中文字幕| 91视频免费观看| 亚洲v日本v欧美v久久精品| 欧美精品自拍偷拍| 青椒成人免费视频| 国产欧美一区二区精品秋霞影院| 国产成人aaa| 一区二区三区鲁丝不卡| 欧美日韩一区二区三区四区| 亚洲在线成人精品| 久久色.com| 日本乱码高清不卡字幕| 日本系列欧美系列| 久久久久国产成人精品亚洲午夜| 99久久夜色精品国产网站| 亚洲国产欧美在线| 久久久精品国产99久久精品芒果| 成人一级视频在线观看| 亚洲国产欧美日韩另类综合| 精品国产百合女同互慰| 在线观看一区二区精品视频| 久久激情五月婷婷| 亚洲一级电影视频| 一区二区三区四区视频精品免费| 欧美在线视频全部完| 国产麻豆精品在线观看| 亚洲综合偷拍欧美一区色| 欧美成人激情免费网| 欧美在线观看一区二区| 国产不卡视频在线播放| 首页国产欧美日韩丝袜| 亚洲女性喷水在线观看一区| 久久久久久久久久久电影| 欧美亚洲综合另类| 在线亚洲精品福利网址导航| 成人一区二区三区| 国产成人8x视频一区二区| 日韩成人av影视| 亚洲成人一区二区在线观看| 亚洲伦在线观看| 亚洲日本在线天堂| 亚洲综合激情另类小说区| 日韩毛片视频在线看| 中文字幕亚洲视频| 亚洲精品视频在线看| 亚洲欧美电影院| 五月综合激情网| 国产综合久久久久久鬼色| 国产大陆亚洲精品国产| 丁香六月综合激情| 一本高清dvd不卡在线观看| 欧洲一区二区三区在线| 欧美欧美欧美欧美首页| 日韩视频免费直播| 欧美成人性福生活免费看| 国产欧美日韩不卡| 中文字幕一区二区三区在线观看 | 99久久精品国产导航| 欧美亚洲综合久久| 精品久久国产97色综合| 国产精品久久免费看| 亚洲午夜私人影院| 精品一区二区三区视频 | 国产精品伦一区二区三级视频| 一区在线中文字幕| 美国十次综合导航| 一本大道久久精品懂色aⅴ| 欧美精品久久一区| 亚洲人精品午夜| 国产一区在线观看麻豆| 欧美色大人视频| 欧美国产精品v| 久久精品国产免费| 欧美性猛交xxxx乱大交退制版 | 国产在线不卡一卡二卡三卡四卡| 色综合天天做天天爱| 国产日韩欧美电影| 国产一区二区导航在线播放| 欧美日韩一区视频| 夜夜嗨av一区二区三区中文字幕| 国产毛片一区二区| 精品国产伦理网| 美女在线视频一区| 欧美日韩视频专区在线播放| 中文字幕一区三区| 91麻豆自制传媒国产之光| 国产欧美日韩在线观看| 国产精品91xxx| 中文字幕一区av| 国产麻豆成人精品| 国产精品色呦呦| 99免费精品在线| 亚洲精品中文字幕乱码三区| 99精品视频一区| 一区二区三区欧美视频| 91精品蜜臀在线一区尤物| 日韩电影免费在线看| 欧美老女人第四色| 久久精品国产秦先生| 亚洲国产中文字幕| 91色综合久久久久婷婷| 亚洲成va人在线观看| 91精品中文字幕一区二区三区| 日韩中文字幕不卡| 久久精品一区二区三区不卡牛牛| 波多野结衣的一区二区三区| 亚洲精品中文字幕在线观看| 欧美一个色资源| 92国产精品观看| 免费在线观看一区二区三区| 中文子幕无线码一区tr| 欧美日韩一级大片网址| 国产精品资源站在线| 亚洲成av人影院在线观看网| 精品国产免费一区二区三区香蕉| 91蝌蚪porny| 国产激情精品久久久第一区二区| 亚洲电影一区二区| 中文字幕成人网| 亚洲精品在线免费播放| 欧美在线观看视频在线| av电影在线观看完整版一区二区| 日韩成人午夜电影| 一区二区三区在线免费视频| 久久亚洲影视婷婷| 久久综合999| 久久久久久久免费视频了| 91麻豆精品国产自产在线 | 中文字幕欧美国产| 2023国产一二三区日本精品2022| 欧美日韩国产a| 欧美日韩一卡二卡| 欧美美女直播网站| 欧美日韩一区小说| 欧美麻豆精品久久久久久| 色八戒一区二区三区| 色系网站成人免费| 在线观看视频欧美| 欧美日韩精品一区二区三区四区| 欧美亚一区二区| 91精品一区二区三区久久久久久 | 国产一区欧美一区| 99视频精品全部免费在线| 成人综合激情网| 91在线观看美女| 欧美精品xxxxbbbb| 日韩精品一区二区三区swag| 久久久久久久久久久久久夜| 国产精品乱码久久久久久| 亚洲精品欧美在线| 看电视剧不卡顿的网站| 成人性生交大片免费看在线播放| 99视频在线精品| 在线成人免费观看| 久久一区二区三区国产精品| 亚洲精品日韩一| 国产精品一区二区无线| 欧美综合一区二区| 国产亚洲精品中文字幕| 亚洲高清免费观看| 99精品视频在线观看免费|