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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux 内核链表 【转】

發布時間:2025/3/16 linux 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 内核链表 【转】 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

原文:http://www.ibm.com/developerworks/cn/linux/kernel/l-chain/index.html

一、 鏈表數據結構簡介

鏈表是一種常用的組織有序數據的數據結構,它通過指針將一系列數據節點連接成一條數據鏈,是線性表的一種重要實現方式。相對于數組,鏈表具有更好的動態性,建立鏈表時無需預先知道數據總量,可以隨機分配空間,可以高效地在鏈表中的任意位置實時插入或刪除數據。鏈表的開銷主要是訪問的順序性和組織鏈的空間損失。

通常鏈表數據結構至少應包含兩個域:數據域和指針域,數據域用于存儲數據,指針域用于建立與下一個節點的聯系。按照指針域的組織以及各個節點之間的聯系形式,鏈表又可以分為單鏈表、雙鏈表、循環鏈表等多種類型,下面分別給出這幾類常見鏈表類型的示意圖:

1. 單鏈表


圖1 單鏈表
?

單鏈表是最簡單的一類鏈表,它的特點是僅有一個指針域指向后繼節點(next),因此,對單鏈表的遍歷只能從頭至尾(通常是NULL空指針)順序進行。

2. 雙鏈表


圖2 雙鏈表
?

通過設計前驅和后繼兩個指針域,雙鏈表可以從兩個方向遍歷,這是它區別于單鏈表的地方。如果打亂前驅、后繼的依賴關系,就可以構成"二叉樹";如果再讓首節點的前驅指向鏈表尾節點、尾節點的后繼指向首節點(如圖2中虛線部分),就構成了循環鏈表;如果設計更多的指針域,就可以構成各種復雜的樹狀數據結構。

3. 循環鏈表

循環鏈表的特點是尾節點的后繼指向首節點。前面已經給出了雙循環鏈表的示意圖,它的特點是從任意一個節點出發,沿兩個方向的任何一個,都能找到鏈表中的任意一個數據。如果去掉前驅指針,就是單循環鏈表。

在Linux內核中使用了大量的鏈表結構來組織數據,包括設備列表以及各種功能模塊中的數據組織。這些鏈表大多采用在[include/linux/list.h]實現的一個相當精彩的鏈表數據結構。本文的后繼部分就將通過示例詳細介紹這一數據結構的組織和使用。

二、 Linux 2.6內核鏈表數據結構的實現

盡管這里使用2.6內核作為講解的基礎,但實際上2.4內核中的鏈表結構和2.6并沒有什么區別。不同之處在于2.6擴充了兩種鏈表數據結構:鏈表的讀拷貝更新(rcu)和HASH鏈表(hlist)。這兩種擴展都是基于最基本的list結構,因此,本文主要介紹基本鏈表結構,然后再簡要介紹一下rcu和hlist。

鏈表數據結構的定義很簡單(節選自[include/linux/list.h],以下所有代碼,除非加以說明,其余均取自該文件):

struct list_head {struct list_head *next, *prev; };

?

list_head結構包含兩個指向list_head結構的指針prev和next,由此可見,內核的鏈表具備雙鏈表功能,實際上,通常它都組織成雙循環鏈表。

和第一節介紹的雙鏈表結構模型不同,這里的list_head沒有數據域。在Linux內核鏈表中,不是在鏈表結構中包含數據,而是在數據結構中包含鏈表節點。

在數據結構課本中,鏈表的經典定義方式通常是這樣的(以單鏈表為例):

struct list_node {struct list_node *next;ElemType data; };

?

因為ElemType的緣故,對每一種數據項類型都需要定義各自的鏈表結構。有經驗的C++程序員應該知道,標準模板庫中的<list>采用的是C++ Template,利用模板抽象出和數據項類型無關的鏈表操作接口。

在Linux內核鏈表中,需要用鏈表組織起來的數據通常會包含一個struct list_head成員,例如在[include/linux/netfilter.h]中定義了一個nf_sockopt_ops結構來描述Netfilter為某一協議族準備的getsockopt/setsockopt接口,其中就有一個(struct list_head list)成員,各個協議族的nf_sockopt_ops結構都通過這個list成員組織在一個鏈表中,表頭是定義在[net/core/netfilter.c]中的nf_sockopts(struct list_head)。從下圖中我們可以看到,這種通用的鏈表結構避免了為每個數據項類型定義自己的鏈表的麻煩。Linux的簡捷實用、不求完美和標準的風格,在這里體現得相當充分。


圖3 nf_sockopts鏈表示意圖
?

三、 鏈表操作接口

1. 聲明和初始化

實際上Linux只定義了鏈表節點,并沒有專門定義鏈表頭,那么一個鏈表結構是如何建立起來的呢?讓我們來看看LIST_HEAD()這個宏:

#define LIST_HEAD_INIT(name) { &(name), &(name) } #define LIST_HEAD(name) struct list_head name = LIST_HEAD_INIT(name)

?

當我們用LIST_HEAD(nf_sockopts)聲明一個名為nf_sockopts的鏈表頭時,它的next、prev指針都初始化為指向自己,這樣,我們就有了一個空鏈表,因為Linux用頭指針的next是否指向自己來判斷鏈表是否為空:

static inline int list_empty(const struct list_head *head) {return head->next == head; }

?

除了用LIST_HEAD()宏在聲明的時候初始化一個鏈表以外,Linux還提供了一個INIT_LIST_HEAD宏用于運行時初始化鏈表:

#define INIT_LIST_HEAD(ptr) do { \(ptr)->next = (ptr); (ptr)->prev = (ptr); \ } while (0)

?

我們用INIT_LIST_HEAD(&nf_sockopts)來使用它。

2. 插入/刪除/合并

a) 插入

對鏈表的插入操作有兩種:在表頭插入和在表尾插入。Linux為此提供了兩個接口:

static inline void list_add(struct list_head *new, struct list_head *head); static inline void list_add_tail(struct list_head *new, struct list_head *head);

?

因為Linux鏈表是循環表,且表頭的next、prev分別指向鏈表中的第一個和最末一個節點,所以,list_add和list_add_tail的區別并不大,實際上,Linux分別用

__list_add(new, head, head->next);

?

__list_add(new, head->prev, head);

?

來實現兩個接口,可見,在表頭插入是插入在head之后,而在表尾插入是插入在head->prev之后。

假設有一個新nf_sockopt_ops結構變量new_sockopt需要添加到nf_sockopts鏈表頭,我們應當這樣操作:

list_add(&new_sockopt.list, &nf_sockopts);

?

從這里我們看出,nf_sockopts鏈表中記錄的并不是new_sockopt的地址,而是其中的list元素的地址。如何通過鏈表訪問到new_sockopt呢?下面會有詳細介紹。

b) 刪除

static inline void list_del(struct list_head *entry);

?

當我們需要刪除nf_sockopts鏈表中添加的new_sockopt項時,我們這么操作:

list_del(&new_sockopt.list);

?

被剔除下來的new_sockopt.list,prev、next指針分別被設為LIST_POSITION2和LIST_POSITION1兩個特殊值,這樣設置是為了保證不在鏈表中的節點項不可訪問--對LIST_POSITION1和LIST_POSITION2的訪問都將引起頁故障。與之相對應,list_del_init()函數將節點從鏈表中解下來之后,調用LIST_INIT_HEAD()將節點置為空鏈狀態。

c) 搬移

Linux提供了將原本屬于一個鏈表的節點移動到另一個鏈表的操作,并根據插入到新鏈表的位置分為兩類:

static inline void list_move(struct list_head *list, struct list_head *head); static inline void list_move_tail(struct list_head *list, struct list_head *head);

?

例如list_move(&new_sockopt.list,&nf_sockopts)會把new_sockopt從它所在的鏈表上刪除,并將其再鏈入nf_sockopts的表頭。

d) 合并

除了針對節點的插入、刪除操作,Linux鏈表還提供了整個鏈表的插入功能:

static inline void list_splice(struct list_head *list, struct list_head *head);

?

假設當前有兩個鏈表,表頭分別是list1和list2(都是struct list_head變量),當調用list_splice(&list1,&list2)時,只要list1非空,list1鏈表的內容將被掛接在list2鏈表上,位于list2和list2.next(原list2表的第一個節點)之間。新list2鏈表將以原list1表的第一個節點為首節點,而尾節點不變。如圖(虛箭頭為next指針):


圖4 鏈表合并list_splice(&list1,&list2)
?

當list1被掛接到list2之后,作為原表頭指針的list1的next、prev仍然指向原來的節點,為了避免引起混亂,Linux提供了一個list_splice_init()函數:

static inline void list_splice_init(struct list_head *list, struct list_head *head);

?

該函數在將list合并到head鏈表的基礎上,調用INIT_LIST_HEAD(list)將list設置為空鏈。

3. 遍歷

遍歷是鏈表最經常的操作之一,為了方便核心應用遍歷鏈表,Linux鏈表將遍歷操作抽象成幾個宏。在介紹遍歷宏之前,我們先看看如何從鏈表中訪問到我們真正需要的數據項。

a) 由鏈表節點到數據項變量

我們知道,Linux鏈表中僅保存了數據項結構中list_head成員變量的地址,那么我們如何通過這個list_head成員訪問到作為它的所有者的節點數據呢?Linux為此提供了一個list_entry(ptr,type,member)宏,其中ptr是指向該數據中list_head成員的指針,也就是存儲在鏈表中的地址值,type是數據項的類型,member則是數據項類型定義中list_head成員的變量名,例如,我們要訪問nf_sockopts鏈表中首個nf_sockopt_ops變量,則如此調用:

list_entry(nf_sockopts->next, struct nf_sockopt_ops, list);

?

這里"list"正是nf_sockopt_ops結構中定義的用于鏈表操作的節點成員變量名。

list_entry的使用相當簡單,相比之下,它的實現則有一些難懂:

#define list_entry(ptr, type, member) container_of(ptr, type, member) container_of宏定義在[include/linux/kernel.h]中: #define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );}) offsetof宏定義在[include/linux/stddef.h]中: #define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

?

size_t最終定義為unsigned int(i386)。

這里使用的是一個利用編譯器技術的小技巧,即先求得結構成員在與結構中的偏移量,然后根據成員變量的地址反過來得出屬主結構變量的地址。

container_of()和offsetof()并不僅用于鏈表操作,這里最有趣的地方是((type *)0)->member,它將0地址強制"轉換"為type結構的指針,再訪問到type結構中的member成員。在container_of宏中,它用來給typeof()提供參數(typeof()是gcc的擴展,和sizeof()類似),以獲得member成員的數據類型;在offsetof()中,這個member成員的地址實際上就是type數據結構中member成員相對于結構變量的偏移量。

如果這么說還不好理解的話,不妨看看下面這張圖:


圖5 offsetof()宏的原理
?

對于給定一個結構,offsetof(type,member)是一個常量,list_entry()正是利用這個不變的偏移量來求得鏈表數據項的變量地址。

b) 遍歷宏

在[net/core/netfilter.c]的nf_register_sockopt()函數中有這么一段話:

…… struct list_head *i; ……list_for_each(i, &nf_sockopts) {struct nf_sockopt_ops *ops = (struct nf_sockopt_ops *)i;……}……

?

函數首先定義一個(struct list_head *)指針變量i,然后調用list_for_each(i,&nf_sockopts)進行遍歷。在[include/linux/list.h]中,list_for_each()宏是這么定義的:

#define list_for_each(pos, head) \for (pos = (head)->next, prefetch(pos->next); pos != (head); \pos = pos->next, prefetch(pos->next))

?

它實際上是一個for循環,利用傳入的pos作為循環變量,從表頭head開始,逐項向后(next方向)移動pos,直至又回到head(prefetch()可以不考慮,用于預取以提高遍歷速度)。

那么在nf_register_sockopt()中實際上就是遍歷nf_sockopts鏈表。為什么能直接將獲得的list_head成員變量地址當成struct nf_sockopt_ops數據項變量的地址呢?我們注意到在struct nf_sockopt_ops結構中,list是其中的第一項成員,因此,它的地址也就是結構變量的地址。更規范的獲得數據變量地址的用法應該是:

struct nf_sockopt_ops *ops = list_entry(i, struct nf_sockopt_ops, list);

?

大多數情況下,遍歷鏈表的時候都需要獲得鏈表節點數據項,也就是說list_for_each()和list_entry()總是同時使用。對此Linux給出了一個list_for_each_entry()宏:

#define list_for_each_entry(pos, head, member) ……

?

與list_for_each()不同,這里的pos是數據項結構指針類型,而不是(struct list_head *)。nf_register_sockopt()函數可以利用這個宏而設計得更簡單:

…… struct nf_sockopt_ops *ops; list_for_each_entry(ops,&nf_sockopts,list){…… } ……

?

某些應用需要反向遍歷鏈表,Linux提供了list_for_each_prev()和list_for_each_entry_reverse()來完成這一操作,使用方法和上面介紹的list_for_each()、list_for_each_entry()完全相同。

如果遍歷不是從鏈表頭開始,而是從已知的某個節點pos開始,則可以使用list_for_each_entry_continue(pos,head,member)。有時還會出現這種需求,即經過一系列計算后,如果pos有值,則從pos開始遍歷,如果沒有,則從鏈表頭開始,為此,Linux專門提供了一個list_prepare_entry(pos,head,member)宏,將它的返回值作為list_for_each_entry_continue()的pos參數,就可以滿足這一要求。

4. 安全性考慮

在并發執行的環境下,鏈表操作通常都應該考慮同步安全性問題,為了方便,Linux將這一操作留給應用自己處理。Linux鏈表自己考慮的安全性主要有兩個方面:

a) list_empty()判斷

基本的list_empty()僅以頭指針的next是否指向自己來判斷鏈表是否為空,Linux鏈表另行提供了一個list_empty_careful()宏,它同時判斷頭指針的next和prev,僅當兩者都指向自己時才返回真。這主要是為了應付另一個cpu正在處理同一個鏈表而造成next、prev不一致的情況。但代碼注釋也承認,這一安全保障能力有限:除非其他cpu的鏈表操作只有list_del_init(),否則仍然不能保證安全,也就是說,還是需要加鎖保護。

b) 遍歷時節點刪除

前面介紹了用于鏈表遍歷的幾個宏,它們都是通過移動pos指針來達到遍歷的目的。但如果遍歷的操作中包含刪除pos指針所指向的節點,pos指針的移動就會被中斷,因為list_del(pos)將把pos的next、prev置成LIST_POSITION2和LIST_POSITION1的特殊值。

當然,調用者完全可以自己緩存next指針使遍歷操作能夠連貫起來,但為了編程的一致性,Linux鏈表仍然提供了兩個對應于基本遍歷操作的"_safe"接口:list_for_each_safe(pos, n, head)、list_for_each_entry_safe(pos, n, head, member),它們要求調用者另外提供一個與pos同類型的指針n,在for循環中暫存pos下一個節點的地址,避免因pos節點被釋放而造成的斷鏈。

四、 擴展

1. hlist


圖6 list和hlist
?

精益求精的Linux鏈表設計者(因為list.h沒有署名,所以很可能就是Linus Torvalds)認為雙頭(next、prev)的雙鏈表對于HASH表來說"過于浪費",因而另行設計了一套用于HASH表應用的hlist數據結構--單指針表頭雙循環鏈表,從上圖可以看出,hlist的表頭僅有一個指向首節點的指針,而沒有指向尾節點的指針,這樣在可能是海量的HASH表中存儲的表頭就能減少一半的空間消耗。

因為表頭和節點的數據結構不同,插入操作如果發生在表頭和首節點之間,以往的方法就行不通了:表頭的first指針必須修改指向新插入的節點,卻不能使用類似list_add()這樣統一的描述。為此,hlist節點的prev不再是指向前一個節點的指針,而是指向前一個節點(可能是表頭)中的next(對于表頭則是first)指針(struct list_head **pprev),從而在表頭插入的操作可以通過一致的"*(node->pprev)"訪問和修改前驅節點的next(或first)指針。

2. read-copy update

在Linux鏈表功能接口中還有一系列以"_rcu"結尾的宏,與以上介紹的很多函數一一對應。RCU(Read-Copy Update)是2.5/2.6內核中引入的新技術,它通過延遲寫操作來提高同步性能。

我們知道,系統中數據讀取操作遠多于寫操作,而rwlock機制在smp環境下隨著處理機增多性能會迅速下降(見參考資料4)。針對這一應用背景,IBM Linux技術中心的Paul E. McKenney提出了"讀拷貝更新"的技術,并將其應用于Linux內核中。RCU技術的核心是寫操作分為寫-更新兩步,允許讀操作在任何時候無阻訪問,當系統有寫操作時,更新動作一直延遲到對該數據的所有讀操作完成為止。Linux鏈表中的RCU功能只是Linux RCU的很小一部分,對于RCU的實現分析已超出了本文所及,有興趣的讀者可以自行參閱本文的參考資料;而對RCU鏈表的使用和基本鏈表的使用方法基本相同。

五、 示例

附件中的程序除了能正向、反向輸出文件以外,并無實際作用,僅用于演示Linux鏈表的使用。

為了簡便,例子采用的是用戶態程序模板,如果需要運行,可采用如下命令編譯:

gcc -D__KERNEL__ -I/usr/src/linux-2.6.7/include pfile.c -o pfile

?

因為內核鏈表限制在內核態使用,但實際上對于數據結構本身而言并非只能在核態運行,因此,在筆者的編譯中使用"-D__KERNEL__"開關"欺騙"編譯器。

?

參考資料

  • 維基百科?http://zh.wikipedia.org,一個在GNU Documentation License下發布的網絡辭典,自由軟件理念的延伸,本文的"鏈表"概念即使用它的版本。
  • 《Linux內核情景分析》,毛德操先生的這本關于Linux內核的巨著幾乎可以回答絕大部分關于內核的問題,其中也包括內核鏈表的幾個關鍵數據結構。
  • Linux內核2.6.7源代碼,所有不明白的問題,只要潛心看代碼,總能清楚。
  • Kernel Korner: Using RCU in the Linux 2.5 Kernel,RCU主要開發者Paul McKenney 2003年10月發表于Linux Journal上的一篇介紹RCU的文章。在?http://www.rdrop.com/users/paulmck/rclock/上可以獲得更多關于RCU的幫助。
  • 關于作者

    楊沙洲,目前在國防科技大學計算機學院攻讀軟件方向博士學位。對文中存在的技術問題,歡迎向?pubb@163.net質疑。

    ?

    轉載于:https://www.cnblogs.com/Leo-Forest/archive/2013/01/05/2846570.html

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的Linux 内核链表 【转】的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    五月天,com | 又黄又爽免费视频 | 午夜精品久久久久久久99无限制 | 欧美日韩国产一区二 | 亚洲精品999 | 国产精品久久久久久婷婷天堂 | 日韩欧美综合精品 | 婷婷在线网 | 97色婷婷| 色婷婷一 | 亚洲午夜久久久综合37日本 | 在线国产黄色 | 天天干,夜夜操 | 久久er99热精品一区二区 | 美女免费黄视频网站 | 性日韩欧美在线视频 | 久久高清免费 | www视频在线播放 | 狠狠色丁香婷婷综合视频 | 欧美精品亚州精品 | 97干com| 涩涩爱夜夜爱 | 国产日韩av在线 | 国产精品网红直播 | 最近免费观看的电影完整版 | 国产精品24小时在线观看 | 精品在线免费观看 | 欧美日一级片 | 97激情影院| 国产黄视频在线观看 | 国产精品第二十页 | 干干干操操操 | 91久久国产露脸精品国产闺蜜 | 日韩视频在线不卡 | 亚洲每日更新 | 亚洲精品久久久久中文字幕m男 | 国内成人综合 | 午夜在线观看影院 | 成+人+色综合 | 亚洲成人黄色在线观看 | 久久久久久免费网 | 免费国产亚洲视频 | 蜜臀av在线一区二区三区 | 深爱激情综合 | 国产一线天在线观看 | 黄色a视频 | 国产视频一区二区三区在线 | 国产精品乱码久久久久 | 西西人体4444www高清视频 | 夜夜躁狠狠躁日日躁 | 69久久99精品久久久久婷婷 | 日韩动态视频 | 日本久久久亚洲精品 | 成人午夜电影网 | 五月天婷婷在线视频 | 久久久久久免费网 | 2018亚洲男人天堂 | 日本久久免费电影 | 国产成人精品一区二区三区在线 | av超碰免费在线 | 在线观看网站你懂的 | 久久99精品久久久久久久久久久久 | 久久久毛片 | 欧美一级性生活 | 丁香六月av | 久久精品96 | 国产日本在线播放 | 91在线产啪| 天天操夜夜摸 | 91欧美国产| 人人天天夜夜 | 久久激情日本aⅴ | 国产在线观看午夜 | 综合视频在线 | 日韩理论片中文字幕 | 日韩欧美一区二区三区免费观看 | 久久精品a | 91久久奴性调教 | 狠狠躁日日躁狂躁夜夜躁 | 国产精品久久久免费看 | 五月香婷 | 国产香蕉视频在线播放 | 久久黄色精品视频 | 亚洲欧洲成人精品av97 | 成人av片在线观看 | 久久超级碰视频 | 91成版人在线观看入口 | 在线a亚洲视频播放在线观看 | 激情婷婷| 久久综合久久88 | 午夜国产一区二区三区四区 | 国产91精品在线播放 | 亚洲激情小视频 | 99精彩视频在线观看免费 | 日韩精品中文字幕在线播放 | www日韩视频 | 亚洲免费国产视频 | 亚洲综合在线五月 | 婷婷在线视频 | 久草视频免费 | 中文字幕一区二区三区精华液 | 欧美婷婷综合 | 国产精品99久久免费观看 | 午夜av激情 | 一区 二区 精品 | 欧美激情综合五月色丁香小说 | 丁香六月婷婷开心 | 日日夜夜狠狠操 | 在线观看一级片 | 久久久999免费视频 日韩网站在线 | 成人午夜电影免费在线观看 | 国产69精品久久app免费版 | 久草在线最新视频 | 亚洲综合视频网 | 日韩久久久久久久 | 黄色大片国产 | 免费看在线看www777 | 久久精品欧美一区 | 中文字幕黄色网址 | 欧美人体xx | 免费日韩电影 | 亚洲精品国偷自产在线91正片 | 日韩成人精品在线观看 | 日韩高清不卡在线 | 91免费视频网站在线观看 | 国产精品久久久久久高潮 | 视频在线精品 | 国产精品久久久久久久久久直播 | 国产一区成人在线 | 亚洲国产综合在线 | 最近最新中文字幕视频 | 欧美日韩亚洲精品在线 | 国产视频2区 | 99精品视频精品精品视频 | 日韩免费一级电影 | 91视频麻豆 | 国产青草视频在线观看 | 毛片一二区 | 国产主播99 | 91精品少妇偷拍99 | 亚洲国产精品成人女人久久 | 亚洲乱码在线观看 | 精品国产伦一区二区三区观看方式 | 久久久久综合网 | 一区二区在线电影 | 蜜桃视频在线视频 | 日韩中文在线播放 | 国产色妞影院wwwxxx | 欧美视频二区 | 狠狠色2019综合网 | 国产成在线观看免费视频 | 久久综合在线 | 亚洲激情在线观看 | 国产又粗又猛又黄又爽的视频 | 91完整版观看 | 91精品久久久久 | 成 人 黄 色 视频免费播放 | 在线观看免费av网站 | 麻豆视频免费播放 | 日日爱网站 | 91 中文字幕 | 日韩在线字幕 | 日日日干| 999久久久久久久久久久 | 特级xxxxx欧美 | 色妞色视频一区二区三区四区 | 国产视频1区2区 | 视频在线一区二区三区 | 亚洲一级电影在线观看 | 最近免费中文字幕大全高清10 | 久草a在线| 丝袜美腿一区 | 久草五月| 成人av观看 | 欧美一区二区在线 | 欧美精品在线观看一区 | 日韩aa视频| 亚洲精品中文在线观看 | www.av在线.com | 国产精品免费观看国产网曝瓜 | 在线免费日韩 | 久久精品1区 | 欧美怡红院 | 国产一区二区精品在线 | 国产精品成人免费一区久久羞羞 | 二区三区精品 | 国产精品破处视频 | 色午夜 | 久久精品电影网 | 国产精品福利在线 | 在线免费视频 你懂得 | 丁香激情综合 | 伊人久久一区 | 久久蜜臀一区二区三区av | 亚洲香蕉在线观看 | 色综合久久久久久久久五月 | 欧美日韩一区二区在线观看 | 日韩在线视频国产 | 国产精品久免费的黄网站 | 欧美伦理电影一区二区 | 国产黄色免费 | 国产视频一区精品 | 精品久久一区二区 | 91免费网站在线观看 | 久久久私人影院 | 国产一区欧美二区 | 精品视频一区在线 | 婷婷爱五月天 | 国产黄色精品在线观看 | 色综合天天射 | a在线视频v视频 | 人人爽人人爽人人爽人人爽 | 午夜av在线电影 | 午夜精品一区二区三区在线播放 | 在线观看中文字幕一区二区 | 久久av网| 日日碰夜夜爽 | 午夜视频日本 | www.干| 欧美人人爱 | 国产精品综合久久 | 2023年中文无字幕文字 | 九九九九九九精品任你躁 | 国产亚洲成av人片在线观看桃 | 国产99免费| 在线观看一区 | 日韩在线一区二区免费 | 波多野结衣视频一区二区 | 国产在线传媒 | 亚洲精品高清在线观看 | 精品国产欧美一区二区三区不卡 | 久久草在线精品 | 日韩在线高清免费视频 | 欧美激情视频三区 | 四虎国产精品免费观看视频优播 | 4438全国亚洲精品观看视频 | 免费看片黄色 | 黄色大片入口 | 草久在线视频 | 国内小视频| 国产无套精品久久久久久 | 免费精品人在线二线三线 | av中文电影| 在线a亚洲视频播放在线观看 | 不卡电影免费在线播放一区 | 亚洲人成人天堂h久久 | 岛国大片免费视频 | 一级黄色片在线观看 | 国产五月色婷婷六月丁香视频 | 欧美一级免费黄色片 | 黄色av一级片 | 97精品一区 | 国产婷婷一区二区 | 黄色精品在线看 | 视频在线91 | 97香蕉久久超级碰碰高清版 | 国产精品网站 | 深爱激情五月婷婷 | 黄污视频网站大全 | 色狠狠一区二区 | 91精品婷婷国产综合久久蝌蚪 | 国产亚洲欧美日韩高清 | 成人四虎 | 国产无套视频 | 91麻豆精品一区二区三区 | 国产理论免费 | 免费观看v片在线观看 | 久久99精品一区二区三区三区 | 国产精品综合av一区二区国产馆 | 亚洲精品欧洲精品 | 手机在线看永久av片免费 | 99re视频在线观看 | www.香蕉视频在线观看 | www久草| 亚洲精品综合一区二区 | 欧美综合在线视频 | 2021国产精品视频 | 毛片永久新网址首页 | 最近中文字幕完整视频高清1 | 人操人 | 天堂va在线高清一区 | 狠狠干天天干 | 中文字幕av日韩 | 毛片一二区 | 久久精品国产精品亚洲精品 | 天天摸天天操天天爽 | 人人爽人人做 | 四虎影视成人永久免费观看亚洲欧美 | 超碰97免费观看 | 国产小视频91 | 国产成人精品三级 | 探花视频免费观看高清视频 | 综合久久一本 | 91传媒在线看 | 狠狠五月婷婷 | 91天天视频| 国产一区高清在线观看 | 国产91在线 | 美洲 | 久99精品| 久久久精品网 | 久久久久免费精品国产小说色大师 | 四虎在线观看网址 | 国产欧美在线一区二区三区 | 久久国产精品精品国产色婷婷 | 国产在线欧美日韩 | 久久精品三 | 色射爱 | 久热免费 | 黄色一级在线观看 | 国产小视频网站 | 美女黄频视频大全 | 久久久精品影视 | 国产精品久久久久久久久久妇女 | 亚洲视频免费在线 | 亚洲激情校园春色 | 色综合久久中文字幕综合网 | 久久精品99久久久久久2456 | 在线观看的av网站 | 99热国内精品 | 99久久精品免费看 | 国产精品入口66mio女同 | 久久草在线精品 | 婷婷干五月 | 久久国产网 | 欧美日韩在线免费观看 | 日韩国产欧美在线视频 | 91丨九色丨蝌蚪丰满 | 国产精品专区一 | 欧美一进一出抽搐大尺度视频 | 亚洲一区精品二人人爽久久 | 伊人久久在线观看 | 91九色蝌蚪视频在线 | 中文字幕中文字幕在线中文字幕三区 | 狠狠久久婷婷 | 国产黄色免费 | 在线免费观看视频a | 欧美精品亚洲二区 | 永久黄网站色视频免费观看w | 韩日精品在线 | 欧美日韩免费在线视频 | 日韩网站免费观看 | 二区精品视频 | 在线免费av播放 | 日韩免费中文字幕 | 97天堂| 西西4444www大胆视频 | 久久久午夜影院 | 精品亚洲va在线va天堂资源站 | 国际精品久久久 | 免费观看性生活大片3 | 国产日韩精品在线观看 | 99久久精品日本一区二区免费 | 国产福利一区二区三区视频 | 少妇资源站 | 国产精品99久久久久久有的能看 | 在线观看色网站 | 国产对白av | 337p日本欧洲亚洲大胆裸体艺术 | 亚洲人成免费 | 国产福利网站 | av片在线看 | 伊人一级 | 狠狠干天天色 | 欧美激情视频三区 | 日韩在线一二三区 | av中文字幕免费在线观看 | 国产伦精品一区二区三区照片91 | 狠狠狠色丁香婷婷综合久久88 | 99精品国产成人一区二区 | 亚洲黄色在线观看 | 日韩在线观看视频在线 | 欧美性生活免费看 | 伊人开心激情 | 99久久久成人国产精品 | 国产青青青 | 久久免费国产视频 | 成人av在线影视 | 在线观看免费av网站 | 久久99精品国产一区二区三区 | 久久论理 | 国产成人精品一区一区一区 | 久久久久久免费视频 | 黄色成品视频 | 五月天激情综合 | 久草新在线 | 亚洲综合色播 | 成年人天堂com | 久一在线 | 一区二区三区中文字幕在线 | 狠狠的操狠狠的干 | 久久国产手机看片 | 欧美精品久久99 | 久99久中文字幕在线 | 国产一级片免费观看 | 久草久热 | 日韩一区精品 | 丝袜美腿av | 国产69久久久欧美一级 | 男女日麻批 | 美女国产精品 | 操操综合网 | 日韩欧美xxxx | 最新色站 | 国产免费中文字幕 | 黄色av一级 | 久久成人欧美 | 欧美日韩在线播放 | 黄色在线观看网站 | avlulu久久精品 | 天堂视频一区 | 亚洲电影影音先锋 | 九九九热精品免费视频观看 | 天天爱综合 | 国产又粗又猛又色又黄网站 | 少妇性色午夜淫片aaaze | 日韩毛片在线一区二区毛片 | 四虎永久视频 | 精品久久久久久久久久久久久 | 综合色久 | 国产资源在线免费观看 | av青草 | 国产一区二区免费看 | 国产成人中文字幕 | 丁香婷婷基地 | 91视频在线观看大全 | 国产成人精品女人久久久 | 国产麻豆精品一区 | 日日日日干| 黄网站免费大全入口 | 亚洲色图色| av一区在线播放 | 国产天天爽 | 黄色精品国产 | 超碰公开在线 | 成人91在线 | 美女网站在线观看 | 中文字幕在线观看免费 | 激情综合亚洲精品 | 成人永久免费 | 国产一区二区在线播放 | 97超碰在线久草超碰在线观看 | 欧美小视频在线 | 开心丁香婷婷深爱五月 | 久久久久久久久久久成人 | 久草精品在线 | 免费人人干 | 国产精品欧美久久久久天天影视 | 国产中文在线视频 | 正在播放国产一区 | 国内精品视频一区二区三区八戒 | 日韩一区二区三区观看 | 激情综合网婷婷 | 国产黄色片免费在线观看 | 日韩av看片 | 国产在线精品区 | 久久欧美视频 | 亚洲国产精品一区二区尤物区 | 天天伊人网| 在线观看视频在线观看 | 1024手机看片国产 | 国产99久久精品一区二区300 | 免费又黄又爽的视频 | 狠狠色噜噜狠狠 | 婷婷播播网 | 欧美日本中文字幕 | 国产精品资源在线 | 蜜臀av性久久久久蜜臀av | 午夜国产福利在线 | 天天综合网入口 | 欧美精品久久久久久久久久久 | 国产精品嫩草影视久久久 | 国产aa精品| www.亚洲精品视频 | 免费观看日韩av | 中文字幕一区二区三区久久 | 二区三区在线观看 | 在线观看中文av | 九九热免费在线观看 | 久草亚洲视频 | 国产精品wwwwww | 免费av片在线 | 激情综合亚洲精品 | 免费在线观看污 | 三级av片 | 久久久久亚洲最大xxxx | 美女啪啪图片 | 午夜三级毛片 | 成人动图| 日韩欧美高清视频在线观看 | 视频国产区 | 在线成人免费电影 | 国产一区二区三区黄 | 波多野结衣久久资源 | 日韩精品在线观看av | 91精品少妇偷拍99 | 中国一区二区视频 | 亚洲国产美女精品久久久久∴ | av动态图片 | 久草干| 欧美日韩视频观看 | 中文字幕在线观看完整 | 91在线在线观看 | 久久伦理 | 亚洲激情视频在线观看 | 日本精品视频一区二区 | 91中文在线观看 | 久久久久综合精品福利啪啪 | 色网站免费在线看 | 中文字幕在线成人 | 丁香激情婷婷 | 欧美成人91 | 在线观看日韩视频 | 精品国产视频在线观看 | www.久久久精品 | 美女久久久久久久久久久 | 黄污网站在线观看 | 500部大龄熟乱视频 欧美日本三级 | 免费看黄在线网站 | 久久激情网站 | 五月天天天操 | 精品你懂的 | 久久综合狠狠 | 中文字幕中文字幕 | 最近中文字幕免费观看 | 国产亚洲视频系列 | 久久优 | 91精品国产综合久久福利 | 激情久久综合 | 激情综合色综合久久 | 看av在线| 成人久久久久久久久 | 成人av在线网 | 91精品福利在线 | 在线视频精品播放 | 亚洲免费观看视频 | 在线免费观看羞羞视频 | 伊人狠狠色丁香婷婷综合 | 色综合久久久久久久久五月 | 黄色成人在线网站 | 色午夜 | 久久精品美女视频网站 | 国产精品日韩 | 久久乐九色婷婷综合色狠狠182 | 日韩网站免费观看 | 国产又黄又硬又爽 | 国产不卡免费视频 | 亚洲精品美女在线观看播放 | 久久玖 | 国产精品com | 中文av字幕在线观看 | 国产欧美精品一区二区三区 | 91最新在线| 亚洲精品tv久久久久久久久久 | 国产精品一区二区美女视频免费看 | 久久兔费看a级 | 999成人网 | 亚洲婷婷在线视频 | 99麻豆久久久国产精品免费 | 国产午夜精品一区二区三区四区 | 精品视频免费观看 | 天天干,天天插 | 国产高清精品在线 | 欧美视频www | 亚洲高清视频在线观看 | 日韩免费高清在线 | 国产精久久久久久久 | 一区二区三区免费在线观看视频 | 中文字幕在线观看免费高清完整版 | 麻豆av一区二区三区在线观看 | 亚洲伦理精品 | 91九色视频观看 | 日韩精品在线看 | 亚洲精品视频播放 | 午夜av剧场 | 在线免费观看国产黄色 | 亚洲一区天堂 | 一区二区三区影院 | 久久在线精品视频 | 一区二区国产精品 | 色播激情五月 | 国产91粉嫩白浆在线观看 | 色婷婷亚洲综合 | 国产午夜免费视频 | 久久国产网站 | 色久综合 | 欧美一区二区三区在线视频观看 | 美女网站视频一区 | 99精品在线观看视频 | 欧美大片在线看免费观看 | 日本精品视频一区 | 成人黄在线观看 | 91精品国产自产在线观看 | 欧美肥妇free | 国产91aaa | 五月天婷婷在线观看视频 | 久久久69 | 欧美一区二区在线刺激视频 | 黄污网| 日韩中文字幕电影 | 国产黄色免费观看 | 人人玩人人添人人 | 天天插综合 | av综合网址 | 少妇bbb好爽 | 国产精品福利在线 | 午夜久久久久久久久久久 | 色噜噜在线观看 | 日韩精品91偷拍在线观看 | 国产男女无遮挡猛进猛出在线观看 | 欧美另类成人 | 免费观看黄 | 欧美成人h版 | 国产视频一区在线免费观看 | 色夜视频 | av在线激情 | 婷婷六月天天 | 久久免费a | 欧美一区二区免费在线观看 | 色噜噜在线观看视频 | 超碰97在线人人 | 伊人久久婷婷 | 99热手机在线观看 | 久久这里只有精品9 | 91久草视频 | 日本黄区免费视频观看 | 日韩免费中文 | 99精品久久久久久久 | 一区 二区电影免费在线观看 | 色的网站在线观看 | 国产在线观看地址 | 狠狠操综合网 | 看毛片的网址 | 久久特级毛片 | 日韩av中文 | 2019中文最近的2019中文在线 | 在线观看视频色 | 国产黄色美女 | 久久久久久激情 | 国产精品女人网站 | 18国产精品白浆在线观看免费 | 久久黄色a级片 | av在线免费播放 | 中文字幕在线观看免费高清完整版 | 亚洲人久久久 | 欧美日韩18 | 精品天堂av| 久久深夜福利免费观看 | 在线观看岛国片 | 在线免费黄色毛片 | 中文国产成人精品久久一 | 激情综合久久 | 日本黄色大片免费 | 久草香蕉在线 | 久久久久久高潮国产精品视 | 国产永久网站 | 日日操天天操狠狠操 | 亚洲综合在线五月 | 五月综合激情网 | 久久成人综合 | av三级在线播放 | 午夜精品久久久久久久久久久久久久 | 天天拍天天爽 | 青青河边草观看完整版高清 | 日韩免费久久 | 欧美电影在线观看 | 最近中文字幕久久 | 人人搞人人爽 | 天天操天天干天天操天天干 | 九九热有精品 | 精品毛片一区二区免费看 | 中文字幕免费播放 | 亚洲最大av| 成人av资源 | 国产精品黑丝在线观看 | 98超碰人人| www日韩视频 | 久久免费国产视频 | 狠狠成人 | 91亚洲精品国产 | 99久热在线精品视频成人一区 | 日韩视频一区二区在线 | 国产精品国产毛片 | 国产精品一区二区三区在线 | 欧美日韩18 | 91在线国产观看 | 综合网天天 | 激情黄色一级片 | 黄色片网站 | 麻豆免费精品视频 | 91麻豆精品国产91久久久久久久久 | 波多在线视频 | 免费看成人a | 久久在线| 日韩免费精品 | 国内小视频在线观看 | 亚洲综合在线一区二区三区 | 久久精品一区二区三区四区 | 一区二区三区动漫 | 成年人免费观看国产 | 成人久久久久久久久久 | 97成人在线 | 亚洲区精品视频 | 毛片美女网站 | 色婷婷激情四射 | 色国产精品 | 女人高潮特级毛片 | 日韩在线视频国产 | 国产精品欧美久久久久三级 | 黄色av一区| 免费中文字幕 | 黄色在线免费观看网址 | 91视频在线免费看 | 欧美日韩不卡在线视频 | 国产精品k频道 | 天天射天天爱天天干 | 五月婷婷中文网 | 亚洲免费精品一区二区 | 日日操日日干 | 久久精品电影 | 国产精品国产亚洲精品看不卡 | 欧美性另类 | 五月婷婷视频在线观看 | 日韩精品久久久 | 久草在线免费资源 | 在线免费观看麻豆视频 | 欧美色888 | 中文亚洲欧美日韩 | 综合在线色 | 毛片在线播放网址 | 久久短视频| 色香网| 日本少妇久久久 | 国产精品久久久av | 公开超碰在线 | 国产人成在线观看 | av不卡免费看 | 国产成人av一区二区三区在线观看 | 99色在线播放| 国产精品久久久久久久久蜜臀 | 最近中文字幕完整高清 | 99一级片 | 日韩特黄一级欧美毛片特黄 | www亚洲精品 | 欧美极度另类 | 三级黄色欧美 | 久久tv| 成人av在线看 | 91精品国产91久久久久 | www国产亚洲精品久久网站 | 国产手机精品视频 | 国产日韩欧美视频 | 精品视频在线播放 | 九九热免费视频在线观看 | 狠狠干天天操 | 国产精品久久久久一区二区三区 | 天天插天天干天天操 | 97偷拍在线视频 | 欧美伦理一区二区三区 | 国产精品亚洲片夜色在线 | 香蕉视频国产在线 | 国产在线视频导航 | 亚洲精品99久久久久中文字幕 | 日韩美av在线 | 蜜臀久久99精品久久久酒店新书 | 三日本三级少妇三级99 | 波多野结衣电影一区二区三区 | 麻豆综合网 | 亚洲精品啊啊啊 | 亚州精品天堂中文字幕 | 亚洲视频电影在线 | 麻豆久久一区 | 二区三区在线视频 | www色婷婷com | 一区二区三区四区在线免费观看 | 国产超碰在线 | 久久艹国产视频 | 精品字幕在线 | 91亚洲欧美 | 亚洲欧美日韩在线一区二区 | 中文字幕一区二区三区在线播放 | 亚洲一区二区三区在线看 | 亚洲精品玖玖玖av在线看 | 日韩免费在线 | 久久人91精品久久久久久不卡 | 国产精品视频免费观看 | 黄色日本免费 | 久久一区精品 | 丁香久久综合 | 久久五月天婷婷 | 婷婷色综合 | 国产精品二区在线 | 欧美一区二区在线免费观看 | 成人免费看片98欧美 | 婷婷在线播放 | 激情在线五月天 | 最近中文字幕mv免费高清在线 | 欧美91精品国产自产 | 国产高清专区 | 一区二区三区在线影院 | 五月婷婷爱| 日韩视频免费播放 | 日韩在线观看一区二区 | 狠狠色丁香婷婷综合欧美 | 国产黄色电影 | 日韩在线一级 | 精品国产一区二区三区在线观看 | 亚洲免费av一区二区 | 免费污片| 亚洲午夜精 | 国产精品国产亚洲精品看不卡15 | 天天干,天天射,天天操,天天摸 | 欧美二区视频 | 久久精品视频3 | 国产日韩在线播放 | 深夜免费福利视频 | 一区二区av | 欧洲黄色片 | 4p变态网欧美系列 | 国产玖玖在线 | 久久国产视频网站 | 中文字幕 影院 | 久插视频| 很黄很污的视频网站 | 久久精品欧美日韩精品 | 中文字幕在线观看完整版 | 日本久久久久久久久 | 美女久久一区 | 午夜丁香网 | 91视频免费播放 | 天天操天天射天天爱 | 亚洲va欧美| 在线电影 一区 | 亚洲精品乱码久久久一二三 | 六月色| 性日韩欧美在线视频 | 亚洲激情久久 | www.天天射.com| 成人h动漫精品一区二 | 99精品久久久久久久久久综合 | 日韩乱码在线 | 成人sm另类专区 | 日韩免费观看一区二区 | 91精品免费在线 | 香蕉网在线观看 | 在线免费观看黄色av | 97视频免费| 麻豆影视在线播放 | 国产精品亚洲综合久久 | 又黄又刺激视频 | 在线观看视频三级 | 天天综合久久综合 | 久草a视频| 国产福利91精品张津瑜 | 在线观看免费国产小视频 | 夜夜操网站 | 久久97久久97精品免视看 | 国产精品一区电影 | 亚洲精品乱码久久久久 | 伊人亚洲综合网 | 日韩欧美精品一区二区 | 东方av在线免费观看 | 久久精品国产第一区二区三区 | 成年一级片 | 中文欧美字幕免费 | 91福利在线观看 | 视频在线观看入口黄最新永久免费国产 | 久久久一本精品99久久精品 | 日韩在线二区 | 欧美日韩精品免费观看视频 | 最近2019好看的中文字幕免费 | 人人澡超碰碰 | 婷婷六月色 | 九九视频免费 | 亚洲h视频在线 | 亚洲精品免费播放 | 日b黄色片 | 色香天天| 九九在线播放 | 亚洲精品高清一区二区三区四区 | 日本黄色免费网站 | 在线观看视频精品 | 日本在线观看一区二区三区 | 成人精品一区二区三区电影免费 | 视频在线一区 | 免费视频久久久久 | 五月天色综合 | 99久免费精品视频在线观看 | 亚洲天天综合 | 日韩欧美一区二区在线 | 一区二区三区高清在线观看 | 成人午夜精品福利免费 | 欧美一区二区免费在线观看 | 婷婷深爱五月 | 中文在线8资源库 | 麻豆va一区二区三区久久浪 | 免费在线精品视频 | 欧美精品一区二区性色 | 色狠狠综合天天综合综合 | 亚洲理论影院 | 久久精品伊人 | 久久97精品 | 日韩在线视频观看免费 | 开心激情婷婷 | 久久久三级视频 | 国产高清网站 | 蜜臀av免费一区二区三区 | 五月婷久久 | 91九色在线视频 | 日本美女xx | 黄色av免费在线 | 国产福利久久 | 夜色资源网 | 日韩高清在线观看 | 国产精品专区一 | 日韩xxxxxxxxx| 国产精品大片在线观看 | 人人干干人人 | 91成人免费视频 | 国产精品永久在线 | 国产黄色在线观看 | 久久久精品 | 亚洲欧美一区二区三区孕妇写真 | 日韩有码网站 | 五月天天色 | 日韩天堂在线观看 | 亚洲精品国产免费 | 亚洲一区视频免费观看 | 9ⅰ精品久久久久久久久中文字幕 | 草樱av | 久久女教师 | 日韩欧美高清视频在线观看 | 麻豆国产精品视频 | 欧美日韩高清免费 | 不卡av在线 | 亚洲精品在线免费看 | 免费91在线观看 | 久久免费精品一区二区三区 | www.色就是色| 99久久久久久久 | 欧美精品久久久久久久久免 | 91在线视频一区 | 中文资源在线播放 | 国产日韩欧美在线免费观看 | 国产精品婷婷午夜在线观看 | 中文在线资源 | 黄色三级网站在线观看 | 91超级碰碰 | 色97在线 | 国产精品18久久久久久vr | 欧美成人性战久久 | 欧美在线视频一区二区 | 日本久久精品视频 | 91大片成人网 | 亚洲免费永久精品国产 | 天天色天天色 | 啪啪免费试看 | 91污污视频在线观看 | 色天堂在线视频 | 久久久久综合精品福利啪啪 | 日韩av看片 | 激情视频在线观看网址 | 日韩专区 在线 | 久久国产热 | 精品国产一区二区三区久久久蜜臀 | 99精品在线观看视频 | 欧美-第1页-屁屁影院 | 国产成人福利在线观看 | 69精品在线| 日韩丝袜在线观看 | 国产精品自产拍在线观看网站 | 在线a人v观看视频 | 狠色狠色综合久久 | 免费av片在线 | 国产精品第52页 | 免费看污在线观看 | 久久久久久99精品 | 久久久国产日韩 | 国产日韩精品一区二区在线观看播放 | 91精品国产99久久久久久红楼 | 久久男女视频 | 精品高清美女精品国产区 | 成人av动漫在线 | 婷婷伊人五月天 | 亚洲国产电影在线观看 | 亚洲精品在线观看的 | 日韩剧 | 国产小视频在线免费观看视频 | 一本一道久久a久久综合蜜桃 | 国产美女网站视频 | 一区二区视频欧美 | 久久免费国产视频 | 嫩草av影院| 日本视频久久久 | 亚洲国产一区在线观看 | 久草免费在线观看 | 精品福利片| av丝袜美腿 | 欧美日韩国产一区二区三区 |