成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁 > 知識庫 > Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的時間管理筆記整理

Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的時間管理筆記整理

熱門標簽:云會外呼系統(tǒng) 外呼系統(tǒng)不彈窗 外呼系統(tǒng)的經(jīng)營范圍 涪陵商都400電話開通辦理 柳州市機器人外呼系統(tǒng)報價 廈門營銷外呼系統(tǒng)平臺 申請400電話價格多少 智能電話機器人坐席 安陽ai電銷機器人軟件
/******************
 * linux內(nèi)核的時間管理
 ******************/

(1)內(nèi)核中的時間概念

時間管理在linux內(nèi)核中占有非常重要的作用。

相對于事件驅(qū)動而言,內(nèi)核中有大量函數(shù)是基于時間驅(qū)動的。

有些函數(shù)是周期執(zhí)行的,比如每10毫秒刷新一次屏幕;

有些函數(shù)是推后一定時間執(zhí)行的,比如內(nèi)核在500毫秒后執(zhí)行某項任務(wù)。

要區(qū)分:

  • *絕對時間和相對時間
  • *周期性產(chǎn)生的事件和推遲執(zhí)行的事件

周期性事件是由系統(tǒng)系統(tǒng)定時器驅(qū)動的

(2)HZ值

內(nèi)核必須在硬件定時器的幫助下才能計算和管理時間。

定時器產(chǎn)生中斷的頻率稱為節(jié)拍率(tick rate)。

在內(nèi)核中指定了一個變量HZ,內(nèi)核初始化的時候會根據(jù)這個值確定定時器的節(jié)拍率。

HZ定義在<asm/param.h>,在i386平臺上,目前采用的HZ值是1000。

也就是時鐘中斷每秒發(fā)生1000次,周期為1毫秒。即:

#define HZ 1000

注意!HZ不是個固定不變的值,它是可以更改的,可以在內(nèi)核源代碼配置的時候輸入。

不同的體系結(jié)構(gòu)其HZ值是不一樣的,比如arm就采用100。

如果在驅(qū)動中要使用系統(tǒng)的中斷頻率,直接使用HZ,而不要用100或1000

a.理想的HZ值

i386的HZ值一直采用100,直到2.5版后才改為1000。

提高節(jié)拍率意味著時鐘中斷產(chǎn)生的更加頻繁,中斷處理程序也會更頻繁地執(zhí)行。

帶來的好處有:

  • *內(nèi)核定時器能夠以更高的頻率和更高的準確度運行
  • *依賴定時器執(zhí)行的系統(tǒng)調(diào)用,比如poll()和select(),運行的精度更高
  • *提高進程搶占的準確度

(縮短了調(diào)度延時,如果進程還剩2ms時間片,在10ms的調(diào)度周期下,進程會多運行8ms。
由于耽誤了搶占,對于一些對時間要求嚴格的任務(wù)會產(chǎn)生影響)

壞處有:

*節(jié)拍率要高,系統(tǒng)負擔越重。

中斷處理程序?qū)⒄加酶嗟奶幚砥鲿r間。

(3)jiffies

全局變量jiffies用于記錄系統(tǒng)啟動以來產(chǎn)生的節(jié)拍的總數(shù)。

啟動時,jiffies初始化為0,此后每次時鐘中斷處理程序都會增加該變量的值。

這樣,系統(tǒng)啟動后的運行時間就是jiffies/HZ秒

jiffies定義于<linux/jiffies.h>中:

extern unsigned long volatile jiffies;

jiffies變量總是為unsigned long型。

因此在32位體系結(jié)構(gòu)上是32位,而在64位體系上是64位。對于32位的jiffies,如果HZ為1000,49.7天后會溢出。雖然溢出的情況不常見,但程序在檢測超時時仍然可能因為回繞而導(dǎo)致錯誤。linux提供了4個宏來比較節(jié)拍計數(shù),它們能正確地處理節(jié)拍計數(shù)回繞。

#include <linux/jiffies.h>
#define time_after(unknown, known)    // unknow > known
#define time_before(unknown, known)   // unknow < known
#define time_after_eq(unknown, known)  // unknow >= known
#define time_before_eq(unknown, known)  // unknow <= known

unknown通常是指jiffies,known是需要對比的值(常常是一個jiffies加減后計算出的相對值)例:

unsigned long timeout = jiffies + HZ/2; /* 0.5秒后超時 */
...
if(time_before(jiffies, timeout)){
/* 沒有超時,很好 */
}else{
/* 超時了,發(fā)生錯誤 */

time_before可以理解為如果在超時(timeout)之前(before)完成

*系統(tǒng)中還聲明了一個64位的值jiffies_64,在64位系統(tǒng)中jiffies_64和jiffies是一個值。

可以通過get_jiffies_64()獲得這個值。

*使用

u64 j2;
j2 = get_jiffies_64();

(4)獲得當前時間

驅(qū)動程序中一般不需要知道墻鐘時間(也就是年月日的時間)。但驅(qū)動可能需要處理絕對時間。
為此,內(nèi)核提供了兩個結(jié)構(gòu)體,都定義在<linux/time.h>:

struct timeval {
 time_t tv_sec; /* seconds */
 suseconds_t tv_usec; /* microseconds */
};
//較老,但很流行。采用秒和毫秒值,保存了1970年1月1日0點以來的秒數(shù)
struct timespec {
 time_t tv_sec; /* seconds */
 long tv_nsec; /* nanoseconds */
};
//較新,采用秒和納秒值保存時間。

do_gettimeofday()該函數(shù)用通常的秒或微秒來填充一個指向struct timeval的指針變量,原型如下:

#include <linux/time.h>
void do_gettimeofday(struct timeval *tv);

current_kernel_time()該函數(shù)可用于獲得timespec

#include <linux/time.h>
struct timespec current_kernel_time(void);
/********************
 *確定時間的延遲執(zhí)行
 *******************/

設(shè)備驅(qū)動程序經(jīng)常需要將某些特定代碼延遲一段時間后執(zhí)行,通常是為了讓硬件能完成某些任務(wù)。

長于定時器周期(也稱為時鐘嘀嗒)的延遲可以通過使用系統(tǒng)時鐘完成,而非常短的延時則通過軟件循環(huán)的方式完成

(1)短延時

對于那些最多幾十個毫秒的延遲,無法借助系統(tǒng)定時器。

系統(tǒng)通過軟件循環(huán)提供了下面的延遲函數(shù):

#include <linux/delay.h> 
/* 實際在<asm/delay.h> */
void ndelay(unsigned long nsecs); /*延遲納秒 */
void udelay(unsigned long usecs); /*延遲微秒 */
void mdelay(unsigned long msecs); /*延遲毫秒 */

這三個延遲函數(shù)均是忙等待函數(shù),在延遲過程中無法運行其他任務(wù)。

實際上,當前所有平臺都無法達到納秒精度。

(2)長延時

a.在延遲到期前讓出處理器

while(time_before(jiffies, j1))
schedule();

在等待期間可以讓出處理器,但系統(tǒng)無法進入空閑模式(因為這個進程始終在進行調(diào)度),不利于省電。

b.超時函數(shù)

#include <linux/sched.h>
signed long schedule_timeout(signed long timeout);

使用方式:

set_current_state(TASK_INTERRUPTIBLE);
schedule_timeout(2*HZ); /* 睡2秒 */

進程經(jīng)過2秒后會被喚醒。如果不希望被用戶空間打斷,可以將進程狀態(tài)設(shè)置為TASK_UNINTERRUPTIBLE。

msleep
ssleep  // 秒

(3)等待隊列

使用等待隊列也可以實現(xiàn)長延遲。

在延遲期間,當前進程在等待隊列中睡眠。

進程在睡眠時,需要根據(jù)所等待的事件鏈接到某一個等待隊列。

a.聲明等待隊列

等待隊列實際上就是一個進程鏈表,鏈表中包含了等待某個特定事件的所有進程。

#include <linux/wait.h>
struct __wait_queue_head {
    spinlock_t lock;
    struct list_head task_list;
};
typedef struct __wait_queue_head wait_queue_head_t;

要想把進程加入等待隊列,驅(qū)動首先要在模塊中聲明一個等待隊列頭,并將它初始化。

靜態(tài)初始化

DECLARE_WAIT_QUEUE_HEAD(name);

動態(tài)初始化

wait_queue_head_t my_queue;
init_waitqueue_head(&my_queue);

b.等待函數(shù)

進程通過調(diào)用下面函數(shù)可以在某個等待隊列中休眠固定的時間:

#include <linux/wait.h>
long wait_event_timeout(wait_queue_head_t q,condition, long timeout);
long wait_event_interruptible_timeout(wait_queue_head_t q, condition, long timeout);

調(diào)用這兩個函數(shù)后,進程會在給定的等待隊列q上休眠,但會在超時(timeout)到期時返回。

如果超時到期,則返回0,如果進程被其他事件喚醒,則返回剩余的時間數(shù)。

如果沒有等待條件,則將condition設(shè)為0

使用方式:

wait_queue_head_t wait;
init_waitqueue_head(&wait);
wait_event_interruptible_timeout(wait, 0, 2*HZ); 
/*當前進程在等待隊列wait中睡2秒 */

(4)內(nèi)核定時器

還有一種將任務(wù)延遲執(zhí)行的方法是采用內(nèi)核定時器。與前面幾種延遲方法不同,內(nèi)核定時器并不會阻塞當前進程,啟動一個內(nèi)核定時器只是聲明了要在未來的某個時刻執(zhí)行一項任務(wù),當前進程仍然繼續(xù)執(zhí)行。不要用定時器完成硬實時任務(wù)

定時器由結(jié)構(gòu)timer_list表示,定義在<linux/timer.h>

struct timer_list{
struct list_head entry; /* 定時器鏈表 */
unsigned long expires; /* 以jiffies為單位的定時值 */
spinlock_t lock;
void(*function)(unsigned long); /* 定時器處理函數(shù) */
unsigned long data; /* 傳給定時器處理函數(shù)的參數(shù) */
}

內(nèi)核在<linux/timer.h>中提供了一系列管理定時器的接口。

a.創(chuàng)建定時器

struct timer_list my_timer;

b.初始化定時器

init_timer(&my_timer);
/* 填充數(shù)據(jù)結(jié)構(gòu) */
my_timer.expires = jiffies + delay;
my_timer.data = 0;
my_timer.function = my_function; /*定時器到期時調(diào)用的函數(shù)*/

c.定時器的執(zhí)行函數(shù)

超時處理函數(shù)的原型如下:

void my_timer_function(unsigned long data);

可以利用data參數(shù)用一個處理函數(shù)處理多個定時器??梢詫ata設(shè)為0

d.激活定時器

add_timer(&my_timer);

定時器一旦激活就開始運行。

e.更改已激活的定時器的超時時間

mod_timer(&my_timer,
    jiffies+ney_delay);

可以用于那些已經(jīng)初始化但還沒激活的定時器,如果調(diào)用時定時器未被激活則返回0,否則返回1。一旦mod_timer返回,定時器將被激活。

f.刪除定時器

del_timer(&my_timer);

被激活或未被激活的定時器都可以使用,如果調(diào)用時定時器未被激活則返回0,否則返回1。不需要為已經(jīng)超時的定時器調(diào)用,它們被自動刪除

g.同步刪除

del_time_sync(&my_timer);

在smp系統(tǒng)中,確保返回時,所有的定時器處理函數(shù)都退出。不能在中斷上下文使用。

/********************
 *不確定時間的延遲執(zhí)行
 *******************/

(1)什么是不確定時間的延遲

前面介紹的是確定時間的延遲執(zhí)行,但在寫驅(qū)動的過程中經(jīng)常遇到這種情況:用戶空間程序調(diào)用read函數(shù)從設(shè)備讀數(shù)據(jù),但設(shè)備中當前沒有產(chǎn)生數(shù)據(jù)。此時,驅(qū)動的read函數(shù)默認的操作是進入休眠,一直等待到設(shè)備中有了數(shù)據(jù)為止。

這種等待就是不定時的延遲,通常采用休眠機制來實現(xiàn)。

(2)休眠

休眠是基于等待隊列實現(xiàn)的,前面我們已經(jīng)介紹過wait_event系列函數(shù),但現(xiàn)在我們將不會有確定的休眠時間。

當進程被置入休眠時,會被標記為特殊狀態(tài)并從調(diào)度器的運行隊列中移走。

直到某些事件發(fā)生后,如設(shè)備接收到數(shù)據(jù),則將進程重新設(shè)為運行態(tài)并進入運行隊列進行調(diào)度。

休眠函數(shù)的頭文件是<linux/wait.h>,具體的實現(xiàn)函數(shù)在kernel/wait.c中。

a.休眠的規(guī)則

  • *永遠不要在原子上下文中休眠
  • *當被喚醒時,我們無法知道睡眠了多少時間,也不知道醒來后是否獲得了我們需要的資源
  • *除非知道有其他進程會在其他地方喚醒我們,否則進程不能休眠

b.等待隊列的初始化

見前文

c.休眠函數(shù)

linux最簡單的睡眠方式為wait_event宏。該宏在實現(xiàn)休眠的同時,檢查進程等待的條件。

1. void wait_event(
   wait_queue_head_t q, 
   int condition);

2. int wait_event_interruptible(
   wait_queue_head_t q, 
   int condition);
  • q: 是等待隊列頭,注意是采用值傳遞。
  • condition: 任意一個布爾表達式,在條件為真之前,進程會保持休眠。
  • 注意!進程需要通過喚醒函數(shù)才可能被喚醒,此時需要檢測條件。
  • 如果條件滿足,則被喚醒的進程真正醒來;
  • 如果條件不滿足,則進程繼續(xù)睡眠。

d.喚醒函數(shù)

當我們的進程睡眠后,需要由其他的某個執(zhí)行線程(可能是另一個進程或中斷處理例程)喚醒。喚醒函數(shù):

#include <linux/wait.h>
1. void wake_up(
  wait_queue_head_t *queue);

2. void wake_up_interruptible(
  wait_queue_head_t *queue);

wake_up會喚醒等待在給定queue上的所有進程。而wake_up_interruptible喚醒那些執(zhí)行可中斷休眠的進程。實踐中,約定做法是在使用wait_event時使用wake_up,而使用wait_event_interruptible時使用wake_up_interruptible。

總結(jié)

以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對腳本之家的支持。如果你想了解更多相關(guān)內(nèi)容請查看下面相關(guān)鏈接

標簽:福州 孝感 晉城 蕪湖 綏化 撫順 南充 巴中

巨人網(wǎng)絡(luò)通訊聲明:本文標題《Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的時間管理筆記整理》,本文關(guān)鍵詞  Linux,內(nèi)核,設(shè)備驅(qū)動,之,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的時間管理筆記整理》相關(guān)的同類信息!
  • 本頁收集關(guān)于Linux內(nèi)核設(shè)備驅(qū)動之內(nèi)核的時間管理筆記整理的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    国产日韩欧美91| 影音先锋在线中文| 亚洲一区二区三区不卡国产欧美| 欧美日韩另类国产亚洲欧美一级| 日韩精品一区二区三区在线视频| 最近更新在线中文字幕一页| 国产精品人人爽人人做我的可爱| 蜜月aⅴ免费一区二区三区| 婷婷中文字幕一区三区| 国产交换配乱淫视频免费| 美女网站视频久久| 日韩欧美不卡视频| 午夜影院免费播放| 亚洲国产综合久久精品小蝴蝶| 在线激情av| 欧美日韩一级二级| 西西午夜视频| 日本高清精品| 久久国产精品久久久久久小说| 中文字幕免费在线观看视频一区| 在线亚洲人成电影网站色www| 亚洲影院在线看| 免费影视亚洲| 99精品视频免费| 欧美高清视频在线观看mv| 日韩一区二区在线免费| 欧美精品色婷婷五月综合| 亚洲日本欧美在线| 在线观看精品国产| 精品精品国产三级a∨在线| 色婷婷综合久久久久中文一区二区| 精品黑人一区二区三区久久| 国产精品a久久久久久| 久久九九精品99国产精品| 娇小11一12╳yⅹ╳毛片| bbbbbbbbbbb在线视频| 午夜欧美在线| 久久综合精品一区| 国产精选在线观看91| 激情综合自拍| 亚洲天堂男人天堂| 国产一级免费黄色片| 久久精品国产麻豆| 日韩欧美国产小视频| 欧美大尺度做爰床戏| 日韩在线免费视频| 日本美女在线中文版| 欧洲亚洲一区二区三区| 五月天视频在线观看| 全部av―极品视觉盛宴亚洲| 在线免费观看麻豆| 精品视频在线一区二区在线| 精品国产综合区久久久久久| 一本色道久久99精品综合| 国产999精品久久久影片官网| 91av成人在线| 日韩欧美国产系列| 成人在线视频一区二区| 欧美电影在线观看完整版| **精品中文字幕一区二区三区| 成人a在线观看高清电影| www.久久草.com| 亚洲青青久久| 国产91精品欧美| 最新国产在线观看| 亚洲一区二区三区四区五区| 成人午夜在线观看| 红桃视频成人在线观看| 婷婷中文字幕一区三区| 欧美日韩成人综合天天影院| 国产精品视频自在线| 国产午夜精品麻豆| aa日韩免费精品视频一| 久久久99精品| 可以在线观看av的网站| xxx视频在线观看| 日本天堂一区| 亚洲电影一区二区| 免费女人黄页| 欧美成人三级伦在线观看| 成人av在线播放网站| 欧美mv日韩mv国产网站app| 国产精品三级在线| 色悠悠在线视频| 亚洲一区免费网站| 亚洲精品第一页| 亚洲成人一级片| 99九九精品视频| 国产又粗又大又黄| 飘雪影视在线观看免费观看| 伊人久久青青草| 天天躁日日躁aaaa视频| 男人操女人视频网站| av不卡一区二区| 免费看久久久| 精品国产鲁一鲁一区二区张丽| 午夜精品久久99蜜桃的功能介绍| 亚洲乱码国产乱码精品精天堂| 妞干网2018| 精品一区二区久久久久久久网站| 欧洲一区精品| 中文字幕一区二区三区在线观看| 欧美一区观看| 国产精品日韩在线一区| 亚洲美女黄色片| 亚洲人成亚洲精品| 在线观看91视频| 丝袜诱惑亚洲看片| 国产精品一级在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 亚洲国产精一区二区三区性色| 老司机在线视频二区| www.久久综合| 欧美性大战久久久久久久蜜臀| 国产亚洲欧洲一区高清在线观看| 欧美黑人巨大videos精品| 久久久久久9999| 激情久久综合| 精品粉嫩超白一线天av| 久久久夜精品| 亚洲 欧美 变态 另类 综合| 欧美乱人伦中文字幕在线| 91理论片午午论夜理片久久| 波多野结衣二区三区| 日本免费观看网站| 中文字幕99| 欧美午夜电影在线| 在线观看中文字幕一区| 福利一区二区三区四区| 香港久久久电影| 欧美美女15p| 国产成人精品免费视频大全最热| 美女视频黄 久久| 成人激情视频免费在线| 欧美另类精品xxxx孕妇| 91高清国产| 久久婷婷蜜乳一本欲蜜臀| 18av视频| 欧美丝袜自拍制服另类| a级片免费在线观看| 国产成人精品亚洲男人的天堂| 欧美 日本 国产| 日韩高清中文字幕| 91九色在线porn| 亚洲影院中文字幕| 黄上黄在线观看| 欧美xxxx黑人又粗又长密月| 日韩欧亚中文在线| 欧美电影免费观看完整版| 性xxxx丰满孕妇xxxx另类| 免费不卡中文字幕在线| 欧美极品视频在线观看| 国产精品高清在线| 红桃成人av在线播放| www.黄色国产| 九色蝌蚪在线观看| 俺去啦最新地址| 久久亚洲欧美国产精品乐播| 亚洲国产精品女人| 波多野结衣有码| 少妇视频在线| 日韩三级.com| 日韩电影中文 亚洲精品乱码| 成人免费网站在线| 开心激情五月婷婷| 国产精品99久久久久久久女警| 亚洲一区二区偷拍| 亚洲成人激情在线观看| 免费人成福利播放| 东京热无码av男人的天堂| 日韩一级大片| 亚洲一区二区三区观看| 亚洲高清免费观看高清完整版在线观看| 五月精品在线| 色哟哟免费视频| 色喇叭免费久久综合网| 91成人伦理在线电影| 欧美a级网站| 一本大道色婷婷在线| 国产精品九九视频| 青青草伊人久久| 久久久国产在线视频| 国产精品偷伦一区二区| 三年片免费观看大全| av人人综合网| 99re热这里只有精品视频| 激情五月婷婷综合网| 韩国日本美国免费毛片| av高清不卡在线| 午夜在线观看av| 亚洲一区二区三区成人在线视频精品| 亚洲无码精品国产| 91丨porny丨在线中文| 偷拍自拍在线| 午夜激情福利视频| 国产真乱mangent| 91av在线国产| 日日草天天干| 欧美精品久久久久久久久久久| 91大神福利视频在线| 看欧美ab黄色大片视频免费| 色婷婷国产精品久久包臀| 免费av高清| 日韩精品成人免费观看视频| 九色蝌蚪在线视频| 亚洲国产精一区二区三区性色| 日韩一区二区三区三四区视频在线观看| 2024亚洲男人天堂| 国产中文av在线| 国精产品999国精产品官网| 欧美网色网址| 91专区在线观看| 911国产网站尤物在线观看| 久久国产精品99久久久久久老狼| 国产视频综合在线| av不卡在线观看| 日韩视频中文字幕在线观看| 成人www视频在线观看| 国产精品27p| 久久99久久98精品免观看软件| 日本一区二区在线不卡| 欧美天天综合网| 国产精品8888| 台湾佬中文在线| 久久久久久美女| 国产白丝袜美女久久久久| 又黄又爽的视频在线观看| gogogo高清免费观看在线视频| 91九色porn| www.四虎在线观看| 日本亚洲欧洲色α| 日韩在线欧美| 欧美18一12sex性处hd| 亚洲AV成人无码一二三区在线| 精品人伦一区二区三区蜜桃免费| 国内成人精品2018免费看| 免费在线观看黄网站| 香蕉av一区二区| 亚洲在线一区| 日韩电影免费观看高清完整版| 成人做爰视频www网站小优视频| 在线播放你懂得| 久久精品国产视频| 亚洲一区二区精品在线观看| 天堂网av2014| 国产乱人伦精品一区二区| 成人毛片网站| 女同另类激情重口| 97caopron在线视频| 国产欧美日韩亚洲精品| 成年人在线视频免费观看| 国产视频精品视频| 性色av一区二区| 欧美一区二区高清在线观看| 在线播放的av| 国产亚洲综合精品| 欧美日韩一区二区三区视频| 性高潮久久久久久久| 麻豆av一区| 日韩电影视频免费| 色中文字幕在线| 久久久久免费av| 97caocao| 色在线视频播放| 成人高清电影网站| 免费久久精品视频| 最近中文字幕av免费高清| 欧美电影免费观看| 日韩亚洲欧美视频| 亚洲大胆人体在线| 久久久久久久久综合影视网| 国产精品国产三级国产专区53| 免费不卡的av| 国产视频观看一区| 日韩电影在线观看电影| 成人video亚洲精品| 国产又爽又黄又嫩又猛又粗| 国产精品男女| 国产成人av电影在线| 成人在线免费观看视频| 宅男在线观看免费高清网站| 三级在线观看网站| 五月婷婷丁香网| 粉嫩一区二区三区在线观看| 久久精品午夜一区二区福利| 日韩欧美手机在线| 久久国产主播| 亚洲精品国产成人影院| 丰满白嫩尤物一区二区| 亚洲淫片在线视频| 国产偷人妻精品一区二区在线| av手机免费看| 人妻一区二区三区四区| 欧美性理论片在线观看片免费| 你懂得网站在线| 精品福利电影| 日本精品在线免费观看| 久9re热视频这里只有精品| 中文字幕在线播放一区二区| 欧美美女bb生活片| 特级黄国产片一级视频播放| 椎名由奈jux491在线播放| 一本一道久久a久久综合蜜桃| 午夜久久资源| 嫩草在线视频| 久久看片网站| 精品成在人线av无码免费看| 黄网站在线观看| 亚洲国产成人精品女人久久| 国产在线观看无码免费视频| 风间由美一区二区三区| 亚洲 欧洲 日韩| 在线精品福利| 天堂а在线中文在线无限看推荐| 日韩va在线观看| 国产精品成人一区二区| 中文字幕在线看人| 国产精品久久久久7777婷婷| 狠狠色噜噜狠狠色综合久| 国产精品国产自产拍高清av| 亚洲专区在线视频| 精品人伦一区二区| 久久精品日韩欧美| 在线视频专区| 午夜在线视频一区二区区别| 99热自拍偷拍| 亚洲一区在线观看免费| 成年人小视频网站|