日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

Linux kernel的中断子系统之(九):tasklet

發布時間:2023/12/13 linux 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux kernel的中断子系统之(九):tasklet 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

返回目錄:《ARM-Linux中斷系統》。

總結:

二介紹了tasklet存在的意義。

三介紹了通過tasklet_struct來抽想一個tasklet,每個CPU維護一個tasklet鏈表tasklet_vec/tasklet_hi_vec,然后介紹了如何定一個一個tasklet(靜態/動態),以及如何調度一個tasklet,什么時候tasklet回調函數會被執行。

原文地址:《linux kernel的中斷子系統之(九):tasklet

?

一、前言

對于中斷處理而言,linux將其分成了兩個部分,一個叫做中斷handler(top half),屬于不那么緊急需要處理的事情被推遲執行,我們稱之deferable task,或者叫做bottom half,。具體如何推遲執行分成下面幾種情況:

1、推遲到top half執行完畢

2、推遲到某個指定的時間片(例如40ms)之后執行

3、推遲到某個內核線程被調度的時候執行

對于第一種情況,內核中的機制包括softirq機制和tasklet機制。第二種情況是屬于softirq機制的一種應用場景(timer類型的softirq),在本站的時間子系統的系列文檔中會描述。第三種情況主要包括threaded irq handler以及通用的workqueue機制,當然也包括自己創建該驅動專屬kernel thread(不推薦使用)。本文主要描述tasklet這種機制,第二章描述一些背景知識和和tasklet的思考,第三章結合代碼描述tasklet的原理。

注:本文中的linux kernel的版本是4.0

二、為什么需要tasklet?

1、基本的思考

我們的驅動程序或者內核模塊真的需要tasklet嗎?每個人都有自己的看法。我們先拋開linux kernel中的機制,首先進行一番邏輯思考。

將中斷處理分成top half(cpu和外設之間的交互,獲取狀態,ack狀態,收發數據等)和bottom half(后段的數據處理)已經深入人心,對于任何的OS都一樣,將不那么緊急的事情推遲到bottom half中執行是OK的,具體如何推遲執行分成兩種類型:有具體時間要求的(對應linux kernel中的低精度timer和高精度timer)和沒有具體時間要求的。對于沒有具體時間要求的又可以分成兩種:

(1)越快越好型,這種實際上是有性能要求的,除了中斷top half可以搶占其執行,其他的進程上下文(無論該進程的優先級多么的高)是不會影響其執行的,一言以蔽之,在不影響中斷延遲的情況下,OS會盡快處理。

(2)隨遇而安型。這種屬于那種沒有性能需求的,其調度執行依賴系統的調度器。

本質上講,越快越好型的bottom half不應該太多,而且tasklet的callback函數不能執行時間過長,否則會產生進程調度延遲過大的現象,甚至是非常長而且不確定的延遲,對real time的系統會產生很壞的影響。

2、對linux中的bottom half機制的思考

在linux kernel中,“越快越好型”有兩種,softirq和tasklet,“隨遇而安型”也有兩種,workqueue和threaded irq handler。“越快越好型”能否只留下一個softirq呢?對于崇尚簡單就是美的程序員當然希望如此。為了回答這個問題,我們先看看tasklet對于softirq而言有哪些好處:

(1)tasklet可以動態分配,也可以靜態分配,數量不限

(2)同一種tasklet在多個cpu上也不會并行執行,這使得程序員在撰寫tasklet function的時候比較方便,減少了對并發的考慮(當然損失了性能)。

對于第一種好處,其實也就是為亂用tasklet打開了方便之門,很多撰寫驅動的軟件工程師不會仔細考量其driver是否有性能需求就直接使用了tasklet機制。對于第二種好處,本身考慮并發就是軟件工程師的職責。因此,看起來tasklet并沒有引入特別的好處,而且和softirq一樣,都不能sleep,限制了handler撰寫的方便性,看起來其實并沒有存在的必要。在4.0 kernel的代碼中,grep一下tasklet的使用,實際上是一個很長的列表,只要對這些使用進行簡單的歸類就可以刪除對tasklet的使用。對于那些有性能需求的,可以考慮并入softirq,其他的可以考慮使用workqueue來取代。Steven Rostedt試圖進行這方面的嘗試(http://lwn.net/Articles/239484/),不過這個patch始終未能進入main line。

三、tasklet的基本原理

1、如何抽象一個tasklet

內核中用下面的數據結構來表示tasklet:

struct tasklet_struct
{
??? struct tasklet_struct *next;
??? unsigned long state;
??? atomic_t count;
??? void (*func)(unsigned long);
??? unsigned long data;
};

每個cpu都會維護一個鏈表,將本cpu需要處理的tasklet管理起來,next這個成員指向了該鏈表中的下一個tasklet。func和data成員描述了該tasklet的callback函數,func是調用函數,data是傳遞給func的參數。state成員表示該tasklet的狀態,TASKLET_STATE_SCHED表示該tasklet以及被調度到某個CPU上執行TASKLET_STATE_RUN表示該tasklet正在某個cpu上執行。count成員是和enable或者disable該tasklet的狀態相關,如果count等于0那么該tasklet是處于enable的,如果大于0,表示該tasklet是disable的。在softirq文檔中,我們知道local_bh_disable/enable函數就是用來disable/enable bottom half的,這里就包括softirq和tasklet。但是,有的時候內核同步的場景不需disable所有的softirq和tasklet,而僅僅是disable該tasklet,這時候,tasklet_disable和tasklet_enable就派上用場了。

static inline void tasklet_disable(struct tasklet_struct *t)
{
??? tasklet_disable_nosync(t);-------給tasklet的count加一
??? tasklet_unlock_wait(t);-----如果該tasklet處于running狀態,那么需要等到該tasklet執行完畢
??? smp_mb();
}

static inline void tasklet_enable(struct tasklet_struct *t)
{
??? smp_mb__before_atomic();
??? atomic_dec(&t->count);-------給tasklet的count減一
}

tasklet_disable和tasklet_enable支持嵌套,但是需要成對使用。

2、系統如何管理tasklet?

系統中的每個cpu都會維護一個tasklet的鏈表,定義如下:

static DEFINE_PER_CPU(struct tasklet_head, tasklet_vec);
static DEFINE_PER_CPU(struct tasklet_head, tasklet_hi_vec);

linux kernel中,和tasklet相關的softirq有兩項,HI_SOFTIRQ用于高優先級的tasklet,TASKLET_SOFTIRQ用于普通的tasklet。對于softirq而言,優先級就是出現在softirq pending register(__softirq_pending)中的先后順序,位于bit 0擁有最高的優先級,也就是說,如果有多個不同類型的softirq同時觸發,那么執行的先后順序依賴在softirq pending register的位置kernel總是從右向左依次判斷是否置位,如果置位則執行。HI_SOFTIRQ占據了bit 0,其優先級甚至高過timer,需要慎用(實際上,我grep了內核代碼,似乎沒有發現對HI_SOFTIRQ的使用)。當然HI_SOFTIRQ和TASKLET_SOFTIRQ的機理是一樣的,因此本文只討論TASKLET_SOFTIRQ,大家可以舉一反三。

3、如何定義一個tasklet?

你可以用下面的宏定義來靜態定義tasklet:

#define DECLARE_TASKLET(name, func, data) \
struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(0), func, data }

#define DECLARE_TASKLET_DISABLED(name, func, data) \
struct tasklet_struct name = { NULL, 0, ATOMIC_INIT(1), func, data }

這兩個宏都可以靜態定義一個struct tasklet_struct的變量,只不過初始化后的tasklet一個是處于eable狀態,一個處于disable狀態的。當然,也可以動態分配tasklet,然后調用tasklet_init來初始化該tasklet

4、如何調度一個tasklet

為了調度一個tasklet執行,我們可以使用tasklet_schedule這個接口:

static inline void tasklet_schedule(struct tasklet_struct *t)
{
??? if (!test_and_set_bit(TASKLET_STATE_SCHED, &t->state))
??????? __tasklet_schedule(t);
}

程序在多個上下文中可以多次調度同一個tasklet執行(也可能來自多個cpu core),不過實際上該tasklet只會一次掛入首次調度到的那個cpu的tasklet鏈表,也就是說,即便是多次調用tasklet_schedule實際上tasklet只會掛入一個指定CPU的tasklet隊列中(而且只會掛入一次),也就是說只會調度一次執行。這是通過TASKLET_STATE_SCHED這個flag來完成的,我們可以用下面的圖片來描述:

我們假設HW block A的驅動使用的tasklet機制并且在中斷handler(top half)中將靜態定義的tasklet(這個tasklet是各個cpu共享的,不是per cpu的)調度執行(也就是調用tasklet_schedule函數)。當HW block A檢測到硬件的動作(例如接收FIFO中數據達到半滿)就會觸發IRQ line上的電平或者邊緣信號GIC檢測到該信號會將該中斷分發給某個CPU執行其top half handler,我們假設這次是cpu0,因此該driver的tasklet被掛入CPU0對應的tasklet鏈表(tasklet_vec)并將state的狀態設定為TASKLET_STATE_SCHED。HW block A的驅動中的tasklet雖已調度,但是沒有執行,如果這時候,硬件又一次觸發中斷并在cpu1上執行,雖然tasklet_schedule函數被再次調用,但是由于TASKLET_STATE_SCHED已經設定,因此不會將HW block A的驅動中的這個tasklet掛入cpu1的tasklet鏈表中。

下面我們再仔細研究一下底層的__tasklet_schedule函數:

void __tasklet_schedule(struct tasklet_struct *t)
{
??? unsigned long flags;

??? local_irq_save(flags);-------------------(1)
??? t->next = NULL;---------------------(2)
??? *__this_cpu_read(tasklet_vec.tail) = t;
??? __this_cpu_write(tasklet_vec.tail, &(t->next));
??? raise_softirq_irqoff(TASKLET_SOFTIRQ);----------(3)
??? local_irq_restore(flags);
}

(1)下面的鏈表操作是per-cpu的,因此這里禁止本地中斷就可以攔截所有的并發。

(2)這里的三行代碼就是將一個tasklet掛入鏈表的尾部

(3)raise TASKLET_SOFTIRQ類型的softirq。

5、在什么時機會執行tasklet?

上面描述了tasklet的調度,當然調度tasklet不等于執行tasklet系統會在適合的時間點執行tasklet callback function。由于tasklet是基于softirq的,因此,我們首先總結一下softirq的執行場景:

(1)在中斷返回用戶空間(進程上下文)的時候,如果有pending的softirq,那么將執行該softirq的處理函數。這里限定了中斷返回用戶空間也就是意味著限制了下面兩個場景的softirq被觸發執行:

??? (a)中斷返回hard interrupt context,也就是中斷嵌套的場景

??? (b)中斷返回software interrupt context,也就是中斷搶占軟中斷上下文的場景

(2)上面的描述缺少了一種場景:中斷返回內核態的進程上下文的場景,這里我們需要詳細說明。進程上下文中調用local_bh_enable的時候,如果有pending的softirq,那么將執行該softirq的處理函數。由于內核同步的要求,進程上下文中有可能會調用local_bh_enable/disable來保護臨界區。在臨界區代碼執行過程中,中斷隨時會到來,搶占該進程(內核態)的執行(注意:這里只是disable了bottom half,沒有禁止中斷)。在這種情況下,中斷返回的時候是否會執行softirq handler呢?當然不會,我們disable了bottom half的執行,也就是意味著不能執行softirq handler,但是本質上bottom half應該比進程上下文有更高的優先級,一旦條件允許,要立刻搶占進程上下文的執行,因此,當立刻離開臨界區,調用local_bh_enable的時候,會檢查softirq pending,如果bottom half處于enable的狀態,pending的softirq handler會被執行

(3)系統太繁忙了,不過的產生中斷,raise softirq,由于bottom half的優先級高,從而導致進程無法調度執行。這種情況下,softirq會推遲到softirqd這個內核線程中去執行

對于TASKLET_SOFTIRQ類型的softirq,其handler是tasklet_action,我們來看看各個tasklet是如何執行的:

static void tasklet_action(struct softirq_action *a)
{
??? struct tasklet_struct *list;

??? local_irq_disable();--------------------------(1)
??? list = __this_cpu_read(tasklet_vec.head);
??? __this_cpu_write(tasklet_vec.head, NULL);
??? __this_cpu_write(tasklet_vec.tail, this_cpu_ptr(&tasklet_vec.head));
??? local_irq_enable();

??? while (list) {---------遍歷tasklet鏈表
??????? struct tasklet_struct *t = list;

??????? list = list->next;

??????? if (tasklet_trylock(t)) {-----------------------(2)
??????????? if (!atomic_read(&t->count)) {------------------(3)
??????????????? if (!test_and_clear_bit(TASKLET_STATE_SCHED, &t->state))
??????????????????? BUG();
??????????????? t->func(t->data);
??????????????? tasklet_unlock(t);
??????????????? continue;-----處理下一個tasklet
??????????? }
??????????? tasklet_unlock(t);----清除TASKLET_STATE_RUN標記
??????? }

??????? local_irq_disable();-----------------------(4)
??????? t->next = NULL;
??????? *__this_cpu_read(tasklet_vec.tail) = t;
??????? __this_cpu_write(tasklet_vec.tail, &(t->next));
??????? __raise_softirq_irqoff(TASKLET_SOFTIRQ); ------再次觸發softirq,等待下一個執行時機
??????? local_irq_enable();
??? }
}

(1)從本cpu的tasklet鏈表中取出全部的tasklet,保存在list這個臨時變量中,同時重新初始化本cpu的tasklet鏈表,使該鏈表為空。由于bottom half是開中斷執行的,因此在操作tasklet鏈表的時候需要使用關中斷保護

(2)tasklet_trylock主要是用來設定該tasklet的state為TASKLET_STATE_RUN,同時判斷該tasklet是否已經處于執行狀態,這個狀態很重要,它決定了后續的代碼邏輯。

static inline int tasklet_trylock(struct tasklet_struct *t)
{
??? return !test_and_set_bit(TASKLET_STATE_RUN, &(t)->state);
}

你也許會奇怪:為何這里從tasklet的鏈表中摘下一個本cpu要處理的tasklet list,而這個list中的tasklet已經處于running狀態了,會有這種情況嗎?會的,我們再次回到上面的那個軟硬件結構圖。同樣的,HW block A的驅動使用的tasklet機制并且在中斷handler(top half)中將靜態定義的tasklet 調度執行。HW block A的硬件中斷首先送達cpu0處理,因此該driver的tasklet被掛入CPU0對應的tasklet鏈表并在適當的時間點上開始執行該tasklet。這時候,cpu0的硬件中斷又來了,該driver的tasklet callback function被搶占,雖然tasklet仍然處于running狀態。與此同時,HW block A硬件又一次觸發中斷并在cpu1上執行,這時候,該driver的tasklet處于running狀態,并且TASKLET_STATE_SCHED已經被清除,因此,調用tasklet_schedule函數將會使得該driver的tasklet掛入cpu1的tasklet鏈表中。由于cpu0在處理其他硬件中斷,因此,cpu1的tasklet后發先至,進入tasklet_action函數調用,這時候,當從cpu1的tasklet摘取所有需要處理的tasklet鏈表中,HW block A對應的tasklet實際上已經是在cpu0上處于執行狀態了。

我們在設計tasklet的時候就規定,同一種類型的tasklet只能在一個cpu上執行,因此tasklet_trylock就是起這個作用的。

(3)檢查該tasklet是否處于enable狀態,如果是,說明該tasklet可以真正進入執行狀態了。主要的動作就是清除TASKLET_STATE_SCHED狀態,執行tasklet callback function。

(4)如果該tasklet已經在別的cpu上執行了,那么我們將其掛入該cpu的tasklet鏈表的尾部,這樣,在下一個tasklet執行時機到來的時候,kernel會再次嘗試執行該tasklet,在這個時間點,也許其他cpu上的該tasklet已經執行完畢了。通過這樣代碼邏輯,保證了特定的tasklet只會在一個cpu上執行,不會在多個cpu上并發。

原創文章,轉發請注明出處。蝸窩科技

轉載于:https://www.cnblogs.com/arnoldlu/p/7599602.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Linux kernel的中断子系统之(九):tasklet的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

夜添久久精品亚洲国产精品 | 伊人影院av | 五月天婷婷狠狠 | 高清av免费一区中文字幕 | 天天躁天天躁天天躁婷 | 尤物一区二区三区 | 91久久精 | 欧美日韩免费在线视频 | 成人a视频片观看免费 | 97高清免费视频 | 98超碰在线观看 | 六月激情丁香 | 最新午夜 | 久久激情婷婷 | 午夜在线看 | 久久这里精品视频 | 91麻豆视频 | 日韩精品一区二区三区免费视频观看 | 在线免费观看的av | 不卡日韩av| 久久综合中文字幕 | 中文字幕中文字幕在线中文字幕三区 | 久久久久综合视频 | 亚洲国产久 | 国产在线观看xxx | 狠狠色丁香久久综合网 | 91在线观 | 午夜 免费 | 亚洲一区视频免费观看 | 久久国产午夜精品理论片最新版本 | 色婷婷在线观看视频 | 中文字幕视频免费观看 | 亚洲一区二区高潮无套美女 | 91爱爱中文字幕 | 亚洲精品免费在线 | 99精品免费久久久久久久久日本 | 国内精品久久久久久久 | 一区二区三区 中文字幕 | 天天操天天弄 | 午夜免费电影院 | 亚洲天堂视频在线 | 97精品国产97久久久久久久久久久久 | 国产一级h| 日韩av影视 | 久久久久久免费网 | 日日碰狠狠添天天爽超碰97久久 | 日韩欧美xx | h网站免费在线观看 | 五月天婷亚洲天综合网精品偷 | 成人av午夜 | 超碰97免费在线 | 香蕉视频亚洲 | 欧美另类一二三四区 | av一区二区三区在线播放 | 91在线精品秘密一区二区 | 精品国产一区二区三区四区vr | 成人影视片 | 99精品国产一区二区三区麻豆 | 亚洲激情视频 | 欧美日本日韩aⅴ在线视频 插插插色综合 | 日韩视频精品在线 | 就要色综合 | 玖玖视频网 | 欧美成人影音 | 丁香久久久 | 久久视频一区二区 | 黄色大片日本免费大片 | 伊人超碰在线 | 啪嗒啪嗒免费观看完整版 | 精品久操| 国产免费中文字幕 | 亚洲一二区视频 | 精品1区2区3区 | 一区二区三区 中文字幕 | 久久视频免费观看 | 亚洲午夜小视频 | 精品国产一区二区三区久久久 | 久草在线免费资源站 | 最新成人av | 国产精品视频大全 | 中文字幕在线观看2018 | 亚洲婷婷免费 | 中文字幕在线观看av | 五月天亚洲激情 | 久久艹国产视频 | 国产免费一区二区三区最新 | 久草在线免费播放 | 国产精品18久久久久久久久久久久 | 豆豆色资源网xfplay | 色综合久久88色综合天天免费 | www.狠狠插.com | 免费视频你懂得 | 丁香婷婷久久久综合精品国产 | 久久色中文字幕 | 欧美亚洲专区 | 99在线高清视频在线播放 | 日日精品| 久久久久久久久久久网站 | 色97在线 | 99色人| 日韩精品在线一区 | 国产女教师精品久久av | 93久久精品日日躁夜夜躁欧美 | 亚洲国产精品99久久久久久久久 | 成人片在线播放 | 中文字幕欧美激情 | 热久久最新地址 | 亚洲 欧美 精品 | 国产不卡精品 | 99精品在线播放 | 欧美一区二区在线免费看 | 99精品久久只有精品 | 国产在线色站 | 高清不卡一区二区在线 | 日本久久久影视 | 亚洲午夜久久久久 | 久久久2o19精品 | 日韩毛片在线播放 | 国产成人久久精品一区二区三区 | 亚洲一区美女视频在线观看免费 | 精品国产伦一区二区三区免费 | 国产精品成人久久久 | 天天色天天干天天色 | 国产黄色片免费 | 婷婷丁香在线视频 | 精品久久久久久国产91 | 欧美日韩国产在线 | 91麻豆精品 | 久久爱992xxoo | av电影一区二区三区 | 探花在线观看 | 91色吧| 日日久视频 | 911在线| 成人一区在线观看 | 亚洲国产理论片 | 99视频+国产日韩欧美 | 日日干天天干 | 黄色av高清 | 国产精品成人一区二区三区 | www黄色| 人人爽人人爽人人片av免 | 国产精品人成电影在线观看 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产精品美女久久久久久久久久久 | 91爱在线 | 免费国产ww| 欧美日本在线视频 | 国产成人777777 | 亚洲精品视频在线免费播放 | 91中文字幕永久在线 | 国产成人一区在线 | 午夜精品一区二区三区四区 | 麻豆播放 | 亚洲国内在线 | av黄色免费网站 | 91av在| 国产精品日韩欧美一区二区 | 日韩二区三区在线观看 | 2019国产精品 | 91精品网站 | 日韩欧美一级二级 | 亚洲精品一区二区三区高潮 | 最近免费中文字幕mv在线视频3 | 久久99中文字幕 | 国产精品久久久 | 欧美一级片免费播放 | 中文字幕制服丝袜av久久 | 成人一级在线 | 国产精品麻豆99久久久久久 | 国产一区免费视频 | 国产又粗又长又硬免费视频 | 黄网站色成年免费观看 | 亚洲精品欧美精品 | 四虎在线免费观看 | 亚洲人成在线电影 | 亚洲电影影音先锋 | 激情综合狠狠 | 日韩欧美一区二区在线观看 | 久久精国产 | 91福利国产在线观看 | 一区二区三区在线免费观看视频 | 三级av中文字幕 | 91免费日韩 | 亚洲日本在线视频观看 | 日本黄色大片免费看 | 五月激情av | 国产精品久久久久影视 | 日韩在线短视频 | 91网免费看 | 永久免费看av | 人人草人人草 | 中文字幕在线一区观看 | 国产高h视频 | 国产精品麻豆果冻传媒在线播放 | 91麻豆精品国产午夜天堂 | 激情综合网五月激情 | 国产激情久久久 | 中文字幕av一区二区三区四区 | 国产丝袜美腿在线 | 国产一区二区精品 | 在线免费中文字幕 | 亚洲欧美日韩国产精品一区午夜 | 色综合久久五月 | 久久成人国产精品入口 | 中文高清av | 91九色成人蝌蚪首页 | 手机av看片 | 丝袜美女在线观看 | 九月婷婷综合网 | 久久精品国产亚洲aⅴ | 亚洲一区视频免费观看 | 丁香视频在线观看 | 香蕉在线视频观看 | 国产在线最新 | 亚洲狠狠操 | av在线播放快速免费阴 | 成人午夜电影久久影院 | 国产精品一区二区吃奶在线观看 | 久久超 | 91视频免费看片 | 狠狠久久婷婷 | 久久视频一区 | 国产一区在线精品 | 在线看成人 | 亚洲 欧洲av | 国产不卡免费视频 | 97精品国产97久久久久久免费 | 国产中文字幕视频 | 欧美日韩国产精品爽爽 | 天天se天天cao天天干 | 91精品推荐 | 亚洲欧洲日韩 | 99av国产精品欲麻豆 | 亚洲国产成人精品在线 | 九九九九九九精品任你躁 | 亚洲成人欧美 | 911久久| 亚洲精品免费在线播放 | 超碰99人人 | 色综合久久中文字幕综合网 | 国产精品 中文在线 | 成人av在线影视 | 中文字幕黄色网 | 日韩一区二区三区在线观看 | 成年人黄色大片在线 | 日韩免费看片 | 亚洲精品综合欧美二区变态 | 国产精品美女久久久久久久网站 | 99热九九这里只有精品10 | 在线免费观看黄色小说 | 91刺激视频| 四虎影视精品成人 | 日本69hd| 成人啪啪18免费游戏链接 | 天天做天天爱天天爽综合网 | 999亚洲国产996395 | 国产亚洲日本 | 在线精品亚洲一区二区 | 香蕉视频网址 | 久在线观看视频 | 91色在线观看视频 | 成人午夜精品 | 天天爱天天操 | 久久久午夜精品福利内容 | 国产精品私拍 | 欧美aaa一级 | 黄色av电影在线观看 | 91麻豆精品国产91久久久无限制版 | 在线观看中文字幕一区二区 | 免费日韩 精品中文字幕视频在线 | 国产成人一区二区三区影院在线 | 91亚洲在线| 国产一区私人高清影院 | 欧美一区中文字幕 | 国产精品嫩草影视久久久 | 久久99久久99精品 | 又黄又刺激视频 | 国产日韩在线观看一区 | 最近中文字幕在线播放 | 日韩三级视频在线观看 | 久久久久www | 综合色狠狠 | 国产小视频在线观看免费 | 不卡的av在线播放 | 粉嫩av一区二区三区免费 | 国产精品高清在线 | 日本电影黄色 | 免费av高清 | 91大神一区二区三区 | 久久久www成人免费精品 | 超碰在线免费福利 | 免费h精品视频在线播放 | 久久不卡国产精品一区二区 | 亚洲综合色站 | 亚洲日本三级 | 国产色资源 | 伊人色**天天综合婷婷 | 免费在线看v | 国产亚洲精品久久久久久无几年桃 | 国产成人亚洲在线观看 | 欧美日韩免费观看一区=区三区 | adc在线观看 | 天天干婷婷 | 激情五月婷婷网 | 国产一区二区不卡视频 | www色综合 | 久久99精品热在线观看 | 久久久首页| 欧美日韩精品国产 | 99久久99久久免费精品蜜臀 | 午夜久久福利影院 | 一区二区三区在线不卡 | 久久理论影院 | 日韩精品一区二区三区丰满 | 久久视频在线观看中文字幕 | 日日久视频 | 91漂亮少妇露脸在线播放 | 日本最大色倩网站www | 成年人免费在线播放 | 国产喷水在线 | 国产在线2020| 国产在线观看地址 | 91精品爽啪蜜夜国产在线播放 | 日韩精品中文字幕在线不卡尤物 | 综合久久久久久 | 中文字幕一区二区在线播放 | 天天操天天色天天射 | 热久久免费国产视频 | 亚洲欧美精品在线 | 97香蕉久久国产在线观看 | av免费在线观看1 | 一区二区三区在线影院 | 最近中文字幕第一页 | 一区二区三区免费网站 | 中文字幕在线观看视频一区 | 欧美性色黄 | 在线观看av黄色 | 91人人插| 亚洲精品视频久久 | 国产手机在线精品 | 精品二区视频 | 国产成人精品久久久 | 国产一区精品在线 | 九九在线精品视频 | 欧美一级电影片 | 97av在线视频免费播放 | 在线韩国电影免费观影完整版 | 99国产免费网址 | 色婷婷色| 日韩一区二区三区免费视频 | 国产免费一区二区三区最新 | a视频免费| 色无五月 | 91爱看片 | 精品国产免费观看 | 中文字幕在线播放日韩 | 亚洲国产日韩在线 | 中文字幕亚洲不卡 | 99久久综合国产精品二区 | 免费视频a| www婷婷| 久久久精品影视 | 国产免费一区二区三区最新6 | 黄色美女免费网站 | 免费在线观看av | 91视频91自拍 | 久久久久五月天 | 日产乱码一二三区别免费 | 日韩网站在线观看 | 美女黄频 | 天天色综合久久 | 日韩欧美在线一区 | 欧美a级成人淫片免费看 | 亚洲伦理一区二区 | 亚洲欧洲精品一区二区 | 久久成人在线视频 | 国产精品一区专区欧美日韩 | 日韩一区视频在线 | 亚洲视频综合 | 久久国产精品一区二区三区四区 | 毛片一区二区 | 99久久精品久久久久久动态片 | 国产色中涩| 国产精品精品久久久久久 | 五月婷婷激情 | 国产视频资源在线观看 | 欧美一级艳片视频免费观看 | 一级做a爱片性色毛片www | 97人人人| 高清久久久 | 丰满少妇高潮在线观看 | 日韩精品第1页 | 亚洲视频在线视频 | 天天色天天色天天色 | www.五月婷婷.com | 精品国产三级 | 黄色小网站在线 | 亚洲视频每日更新 | 操操综合网 | 国产精品久久久久久久婷婷 | 亚洲另类在线视频 | 99在线观看视频网站 | 免费高清影视 | 又长又大又黑又粗欧美 | www.天天射 | 日韩中文字幕在线 | 午夜精品影院 | 国产精品一区二区三区四 | av久久在线 | 在线免费视| 亚洲成人黄色av | 国产中文字幕视频在线观看 | 免费的国产精品 | 成全免费观看视频 | 欧美日韩在线观看不卡 | 国产美女主播精品一区二区三区 | 日本最新中文字幕 | 一区二区视频播放 | 亚洲精品一区二区三区在线观看 | 午夜精选视频 | 国产91学生粉嫩喷水 | 久久久久久美女 | 91精品欧美 | 欧美性黄网官网 | 国产96精品 | 欧美aa一级| 国产日韩av在线 | 国产精品视频免费观看 | 欧美va天堂va视频va在线 | 丁香婷婷亚洲 | 黄色小说视频网站 | 深爱激情五月婷婷 | 国产精品亚洲人在线观看 | 国产一级三级 | 久久精品成人欧美大片古装 | 日韩免费三级 | 欧产日产国产69 | 五月婷婷一区二区三区 | 色欧美88888久久久久久影院 | 高清av免费看| 天天射天天射天天 | 97超碰免费| 国产中文在线观看 | 日韩精品一区二区不卡 | 久久精品国产精品亚洲精品 | 麻豆免费观看视频 | 亚洲精品一区二区三区在线观看 | 久久久久 免费视频 | 亚洲 在线 | 日韩欧美视频一区二区三区 | 久久九九久久 | 黄色精品网站 | 久久激情综合网 | 欧美成人亚洲 | 麻豆免费精品视频 | 亚洲精品视频在线观看网站 | 在线看片一区 | 免费网站黄 | 综合久久精品 | 久久国产精品99久久久久久丝袜 | 99精品免费久久久久久久久日本 | 少妇bbr搡bbb搡bbb | 黄色av电影 | 精品麻豆 | 日日干日日色 | 欧美aaa视频 | 亚洲欧美精品一区二区 | 综合色站导航 | 国产不卡一二三区 | 97视频资源 | 69视频网站 | 精品国产三级a∨在线欧美 免费一级片在线观看 | 看片网站黄 | 久久一区二区三区超碰国产精品 | 在线亚洲成人 | 国产免费国产 | 一区二区伦理 | 99久久精品视频免费 | 欧美日本在线观看视频 | 91视频传媒 | 精品久久久久久电影 | 国产日韩亚洲 | www.亚洲激情.com| 性色av免费看 | 91精品无人成人www | 欧美超碰在线 | 日日爱av| 久久超碰免费 | 色综合咪咪久久网 | 日韩网站视频 | 伊人干综合| 久久一二区 | 中文字幕久久精品亚洲乱码 | av怡红院| 亚洲国产精品电影在线观看 | 亚洲免费专区 | 亚洲 欧洲 国产 精品 | 精品国产一区二区三区久久久蜜臀 | 国产精品免费视频观看 | 天天干天天射天天操 | 国产午夜小视频 | 91中文在线 | 国产精品自产拍在线观看桃花 | 久久久男人的天堂 | 欧美999 | 在线国产小视频 | 97电院网手机版 | 成人免费看片网址 | 久久久久高清毛片一级 | 亚洲 欧美 国产 va在线影院 | 91视频-88av | 在线免费高清一区二区三区 | 亚洲视频1| 国产最新精品视频 | 一区二区三区手机在线观看 | 国产婷婷精品 | 成人久久影院 | 色婷婷激情四射 | 亚洲欧洲精品一区二区精品久久久 | 福利视频入口 | 久久精品国产精品亚洲精品 | 在线观看黄色免费视频 | 国产精品毛片一区二区在线看 | 又黄又刺激的网站 | 国产精品永久在线观看 | a久久免费视频 | 亚洲国产精品推荐 | 久久不射电影院 | 久久精品国产免费看久久精品 | 深夜免费福利 | 国产午夜精品一区二区三区四区 | www.国产毛片 | 成人网在线免费视频 | 美女视频黄免费 | av在线播放不卡 | 69精品视频在线观看 | 综合色在线观看 | 日韩区欠美精品av视频 | 国产精品免费久久久久久久久久中文 | 免费在线播放视频 | 国产r级在线观看 | 黄色毛片视频免费观看中文 | 久久久国产在线视频 | 欧美一级免费 | www.91国产| 伊人婷婷激情 | 久久婷婷五月综合色丁香 | 国产一区成人在线 | 国产精品黄 | 在线看国产精品 | 色婷婷激情网 | 男女免费视频观看 | 婷婷丁香在线观看 | 国产精品精品视频 | 国产v视频 | 中文字幕丝袜美腿 | 亚洲日本在线视频观看 | 在线视频 日韩 | 亚洲女人av | 中文字幕免费在线 | 夜夜爽88888免费视频4848 | 日本一区二区三区免费看 | 免费影视大全推荐 | 国精产品999国精产 久久久久 | 91九色最新 | 日韩一区在线免费观看 | 久久y| 亚洲闷骚少妇在线观看网站 | 狠狠久久婷婷 | 精品国产乱码久久久久久1区2匹 | a视频免费在线观看 | 国产成人av网址 | 激情丁香月| 91在线精品观看 | 国内免费久久久久久久久久久 | 伊人天天色| 不卡的av在线| 国产综合香蕉五月婷在线 | 久亚洲| 狠狠躁夜夜躁人人爽视频 | 成人av影视在线 | 人人干,人人爽 | 亚洲精品乱码久久久久久按摩 | 91精品久 | 在线视频日韩 | 久久艹影院| av电影在线观看完整版一区二区 | 久久人人爽人人爽人人片av软件 | 中文字幕久久久精品 | 日韩av成人在线观看 | 一级片色播影院 | 天天操天天弄 | 人人干人人做 | 久久高清国产视频 | 国产精品网红直播 | 色噜噜狠狠色综合中国 | 8x8x在线观看视频 | 超碰在线97国产 | 国产精品国产毛片 | 最近日本韩国中文字幕 | 久草视频在线新免费 | av免费网站在线观看 | 成人av影视观看 | 久久99精品国产一区二区三区 | 精品久久中文 | 国产专区在线播放 | 国产精品嫩草影院9 | 超碰97在线看 | 国产精品福利在线 | 久久97视频| 黄色a一级视频 | 国产精品一区二区久久国产 | 免费91在线| 欧美日本中文字幕 | 欧美一区二区三区免费观看 | 欧美男男激情videos | 国产白浆视频 | 国产视频一二区 | 日韩高清免费观看 | 91福利视频在线 | 国产美女视频免费观看的网站 | 特级西西人体444是什么意思 | 美女黄频 | 久久久视频在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 99r在线 | 久久国产精品二国产精品中国洋人 | 99久久久成人国产精品 | 综合国产在线 | 久久黄色网页 | 99久久久久久 | 国产精品久久久久久久久岛 | 国产亚洲欧美一区 | 欧美在线观看视频 | 少妇性bbb搡bbb爽爽爽欧美 | 欧美成人性战久久 | 99免费视频 | 99热九九这里只有精品10 | 久草在线免费看视频 | 免费观看成人av | 国精产品999国精产品视频 | 小草av在线播放 | 日韩激情小视频 | 欧美日本一二三 | 91成年视频 | 国产资源站 | 狠狠躁日日躁夜夜躁av | 超碰人人做 | 天天色天天操天天爽 | 又黄又爽又色无遮挡免费 | 成年人在线观看视频免费 | 国产精品女主播一区二区三区 | 久久在线免费视频 | 成人超碰在线 | 日本性生活免费看 | 成人免费色| 免费看久久 | 91传媒免费观看 | 国产一区二区三精品久久久无广告 | 久精品在线观看 | 91精品国产麻豆 | 久久免费视频一区 | 九九色在线观看 | 亚州av网站大全 | www.久久久.com | 久久久精品久久 | 中文字幕在线视频一区二区 | 日韩在线一区二区免费 | 在线国产日韩 | 国产精品区一区 | 日韩激情一二三区 | 黄色亚洲大片免费在线观看 | 97视频在线看 | 69av国产 | 日韩欧美视频免费看 | 日本护士三级少妇三级999 | 久久久免费视频播放 | 久久免费视频8 | 日韩高清国产精品 | 高清av中文字幕 | 香蕉视频免费看 | 中文字幕在线观看国产 | 免费a视频在线观看 | 亚洲经典中文字幕 | 草久久久 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 国产精品久久久久久久av电影 | 国产精品久久精品 | 操操操影院 | 久久精品一二三区 | 99精品一级欧美片免费播放 | 香蕉在线观看 | 免费观看性生活大片 | 天天射天天干天天插 | www.大网伊人 | 国产精品你懂的在线观看 | 激情五月激情综合网 | 在线观看的av| 亚洲欧美综合精品久久成人 | 成人动漫一区二区三区 | 国产精品自产拍在线观看中文 | 久久视频这里有精品 | 国产精品久久久亚洲 | 999精品 | 一本色道久久精品 | 国产亚洲精品久久网站 | 色播激情五月 | 亚洲激情网站免费观看 | 国产视频不卡一区 | 国产精品成人在线 | 日日夜夜天天久久 | 欧美精品久久久久久久久老牛影院 | 亚洲春色综合另类校园电影 | 狠狠色丁香婷婷综合橹88 | 超碰在线观看av.com | 在线欧美日韩 | 精品福利网站 | 国产高清在线a视频大全 | 2019中文| 五月丁香| 久久久久久久久久久久久久免费看 | 少妇自拍av | 亚洲精品国产精品99久久 | 免费在线观看黄色网 | 在线看国产精品 | 日韩激情小视频 | 中文字幕电影网 | 91在线免费看片 | 色多多污污在线观看 | 色综合天天综合 | 亚州精品天堂中文字幕 | 国产精品午夜免费福利视频 | 日本久热 | 国产精品短视频 | 国产999久久久 | 99久久99久久免费精品蜜臀 | 8x8x在线观看视频 | 久久成电影 | 亚洲综合激情 | 青春草免费视频 | 激情欧美日韩一区二区 | 国产精品中文字幕在线 | av日韩av| 日韩丝袜| 亚洲国产精品电影在线观看 | 欧美精品一二 | 久久久国产精品亚洲一区 | 久久不卡电影 | 日日干天天插 | 91看片淫黄大片91 | 欧美韩国日本在线观看 | 国产亚洲精品电影 | 99九九热只有国产精品 | 久久精品一二区 | 美女性爽视频国产免费app | 久久99精品国产99久久 | 亚洲永久免费av | 久久xx视频 | 亚洲专区视频在线观看 | 蜜臀av性久久久久av蜜臀妖精 | 午夜美女福利直播 | 欧美a级成人淫片免费看 | 午夜婷婷在线观看 | 日日干夜夜操视频 | 亚洲午夜久久久久 | 亚洲成人精品在线 | 最近2019中文免费高清视频观看www99 | 月丁香婷婷 | 黄色软件大全网站 | 天天干天天搞天天射 | 久草在线免费资源站 | 国产视频欧美视频 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 欧美做受69 | 久久国产电影院 | 精品嫩模福利一区二区蜜臀 | 日韩18p| 成年人免费看的视频 | 欧美日韩中文另类 | 97在线精品| 亚洲精品视频一 | 国产一级淫片免费看 | 色妞色视频一区二区三区四区 | 蜜桃麻豆www久久囤产精品 | 国产精品久久久久久久久久直播 | www国产亚洲精品久久网站 | 久久久午夜精品理论片中文字幕 | 日韩r级在线 | 韩日电影在线 | 狠狠干夜夜操天天爽 | 尤物97国产精品久久精品国产 | 91毛片在线观看 | 免费91麻豆精品国产自产在线观看 | 久久国产精品精品国产色婷婷 | 成人sm另类专区 | 成人影音在线 | 国产精品国产三级国产 | 亚洲精品在线观看视频 | 久久社区视频 | 亚洲精品国产精品久久99 | 国产精品久久免费看 | 国产高清无线码2021 | 国产高清视频免费 | 国产人成精品一区二区三 | 又黄又刺激 | 欧美天堂影院 | 91香蕉视频在线下载 | 国产午夜在线 | 九九九九九九精品任你躁 | 亚洲欧美成人在线 | 免费视频二区 | 精品国内自产拍在线观看视频 | 午夜av在线播放 | 99精品一级欧美片免费播放 | 亚洲精品乱码久久久久久 | 精品一区二区三区在线播放 | 国产97色在线 | 日韩一区二区三区免费视频 | 婷婷丁香在线观看 | 在线国产精品视频 | 美女国产网站 | 97热在线观看 | 四虎影视成人永久免费观看亚洲欧美 | 在线亚洲高清视频 | 黄色成人在线 | 一区二区欧美激情 | 欧美日韩不卡一区二区三区 | 五月开心婷婷 | 亚洲精品白浆高清久久久久久 | 亚洲蜜桃av| 国偷自产中文字幕亚洲手机在线 | 天天干,天天插 | a资源在线 | 久久免费观看视频 | 亚洲黄色成人 | 日韩有码欧美 | 最新国产在线视频 | 免费黄a大片 | 国产免费中文字幕 | 2022中文字幕在线观看 | 欧美 另类 交 | 免费av试看 | 色婷婷在线视频 | 日韩精品播放 | 国产成人一区二区三区久久精品 | 精品亚洲免费视频 | 黄色在线观看免费 | 黄色一区二区在线观看 | 精品一区二区精品 | 中文字幕av最新更新 | 精品免费久久久久久 | 激情黄色av | 日批视频在线播放 | 日韩美一区二区三区 | 免费看的黄网站 | 久草影视在线观看 | 亚洲高清视频在线观看免费 | 久久国产亚洲视频 | 天天干天天干天天色 | 免费成人在线视频网站 | 欧美日韩国语 | 久久亚洲热 | 成人在线视频网 | 伊人色**天天综合婷婷 | 91九色综合| 久久大视频| 精品视频免费久久久看 | 97精品国自产拍在线观看 | 麻豆精品传媒视频 | 在线观看mv的中文字幕网站 | 黄色国产高清 | 日韩欧美xxxx | 日本中文字幕在线播放 | 久久婷婷国产色一区二区三区 | 777久久久 | 人人爽影院| 亚洲精品ww| 午夜久久久久久久久久久 | 久久久久久久久网站 | 久久成人福利 | 欧美精品一区在线 | 国产高清不卡在线 | 久久av在线播放 | 三日本三级少妇三级99 | 啪啪动态视频 | 人人爽网站 | 午夜.dj高清免费观看视频 | 国产精品乱码高清在线看 | 亚洲国产精品成人av | 热久久视久久精品18亚洲精品 | 色姑娘综合天天 | 青青草国产精品 | 欧美精品一区在线发布 | 中文字幕视频在线播放 | 在线蜜桃视频 | 亚洲专区 国产精品 | 亚洲作爱视频 | 黄色网www | 国产成人亚洲在线电影 | www.少妇 | www.久久com| 日韩精品免费一区 | 天天综合网天天综合色 | 日日成人网 | 国产日韩中文字幕 | 日日干网 | 69国产精品成人在线播放 | 久久草网站 | 久久免费视频在线观看 | 一区二区三区免费播放 | 色橹橹欧美在线观看视频高清 | 福利视频网址 | 波多野结衣视频一区 | 爱爱av在线 | 中文一区二区三区在线观看 | 美女国内精品自产拍在线播放 | 国产精品久久久久久久久大全 | 午夜免费福利片 | av中文电影 | 亚洲人精品午夜 | 91午夜精品| 亚洲黄色影院 | 成人中文字幕+乱码+中文字幕 | 国产一级a毛片视频爆浆 | 国产精品门事件 | av 一区二区三区 | 在线观看岛国 | 播五月综合 | 亚洲日本欧美在线 | www.99久久.com | 天天操夜夜做 | 久久免费试看 | 天天av在线播放 | 色吊丝av中文字幕 | 天天操天天操天天操天天操天天操 | 成人在线观看网址 | 国产大片黄色 | 色综合天天综合在线视频 | 久久激情五月丁香伊人 | 99精品国产福利在线观看免费 | 日韩激情综合 | mm1313亚洲精品国产 | 免费视频国产 | 91免费观看 | 久久久免费精品 | 久久免费视屏 | 国产精品96久久久久久吹潮 | 欧美三级高清 | 夜夜操天天干, | 国产精品久久久久久久av大片 | 日本中文字幕影院 | 日本韩国精品一区二区在线观看 | 久久久三级视频 | 久久久久久亚洲精品 | 天堂av在线网站 | 丝袜av网站| 久久久久久毛片精品免费不卡 | 天天色综合久久 | 午夜精品一二区 | 欧美一级免费黄色片 | 国产精品热 | 日韩中文字幕在线不卡 | www.夜夜干.com | 成人黄色片免费看 | 高清av中文在线字幕观看1 | 成人作爱视频 | 伊人婷婷网 | 欧美日本中文字幕 | 国产亚洲精品女人久久久久久 | 成人免费视频网站 | av一本久道久久波多野结衣 | 日本精品久久久一区二区三区 | 91在线最新 | 伊人久在线 | 香蕉久久久久 | 人人插人人做 | 国产成人一级电影 | 精品久久久久久久久久久久 | 久久精品久久99 | 亚洲国产精品一区二区久久hs | 最新国产在线观看 | 亚洲精品小区久久久久久 | 狠狠躁夜夜躁人人爽超碰91 | 成人av免费在线播放 | 国产一级在线免费观看 | 久草91视频| 国产精品久久久久久久久久新婚 | av一区在线播放 | 日韩电影精品一区 | 欧女人精69xxxxxx | 日韩av高清在线观看 | 日日夜夜精品免费观看 | 免费看短 | 爱干视频 | 日韩欧美一级二级 | 超级av在线| 有没有在线观看av |