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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【嵌入式】C语言高级编程-container_of宏(04)

發布時間:2024/4/24 编程问答 50 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【嵌入式】C语言高级编程-container_of宏(04) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

00. 目錄

文章目錄

    • 00. 目錄
    • 01. typeof 關鍵字
    • 02. typeof與宏結合
    • 03. typeof在內核源碼中應用
    • 04. container_of 宏分析
    • 05. container_of 宏應用
    • 06. 附錄

01. typeof 關鍵字

GNU C 擴展了一個關鍵字 typeof,用來獲取一個變量或表達式的類型。這里使用關鍵字可能不太合適,因為畢竟 typeof 還沒有被寫入 C 標準,是 GCC 擴展的一個關鍵字。為了方便,我們就姑且稱之為關鍵字吧。

通過使用 typeof,我們可以獲取一個變量或表達式的類型。所以 typeof 的參數有兩種形式:表達式或類型

示例:

int i ;//typeof(i)等價于int //等價于 int j = 20; typeof(i) j = 20;//等價于int * a; typeof(int *) a;int f();//typeof(f())等價于int //等價于int k; typeof(f()) k;

程序示例

#include <stdio.h>int main(void) {int i = 1;//等價于 int j = 6;typeof(i) j = 6;int *p = &j;//等價于int * q = &i;typeof(p) q = &i;printf("j = %d\n", j);printf("*p = %d\n", *p);printf("i = %d\n", i);printf("*q = %d\n", *q);return 0; }

執行結果

deng@itcast:~/tmp$ gcc 7.c deng@itcast:~/tmp$ ./a.out j = 6 *p = 6 i = 1 *q = 1

typeof高級用法

typeof (int *) y; // 把 y 定義為指向 int 類型的指針,相當于int *y; typeof (int) *y; //定義一個執行 int 類型的指針變量 y typeof (*x) y; //定義一個指針 x 所指向類型 的指針變量y typeof (int) y[4]; //相當于定義一個:int y[4] typeof (*x) y[4]; //把 y 定義為指針 x 指向的數據類型的數組 typeof (typeof (char *)[4]) y;//相當于定義字符指針數組:char *y[4]; typeof(int x[4]) y; //相當于定義:int y[4]

02. typeof與宏結合

使用 typeof 關鍵字來直接獲取參數的數據類型。

#define MAX(x, y) ({ \typeof(x) _x = x; \typeof(y) _y = y; \(void)(&_x == &_y); \_x > _y ? _x : _y; \})

有了這個思路,我們同樣也可以將以前定義的一些宏通過這種方式改寫,這樣 SWAP 宏也可以支持多種類型的數據了。

linux-3.5/include/linux/kernel.h

/** swap - swap value of @a and @b*/ #define swap(a, b) \do { typeof(a) __tmp = (a); (a) = (b); (b) = __tmp; } while (0)

03. typeof在內核源碼中應用

關鍵字 typeof 在 Linux 內核中被廣泛使用,主要用在宏定義中,用來獲取宏參數類型。比如內核中,min/max 宏的定義:

linux-3.5/include/linux/kernel.h

/** min()/max()/clamp() macros that also do* strict type-checking.. See the* "unnecessary" pointer comparison.*/ #define min(x, y) ({ \typeof(x) _min1 = (x); \typeof(y) _min2 = (y); \(void) (&_min1 == &_min2); \_min1 < _min2 ? _min1 : _min2; })#define max(x, y) ({ \typeof(x) _max1 = (x); \typeof(y) _max2 = (y); \(void) (&_max1 == &_max2); \_max1 > _max2 ? _max1 : _max2; })#define min3(x, y, z) ({ \typeof(x) _min1 = (x); \typeof(y) _min2 = (y); \typeof(z) _min3 = (z); \(void) (&_min1 == &_min2); \(void) (&_min1 == &_min3); \_min1 < _min2 ? (_min1 < _min3 ? _min1 : _min3) : \(_min2 < _min3 ? _min2 : _min3); })#define max3(x, y, z) ({ \typeof(x) _max1 = (x); \typeof(y) _max2 = (y); \typeof(z) _max3 = (z); \(void) (&_max1 == &_max2); \(void) (&_max1 == &_max3); \_max1 > _max2 ? (_max1 > _max3 ? _max1 : _max3) : \(_max2 > _max3 ? _max2 : _max3); })/*** min_not_zero - return the minimum that is _not_ zero, unless both are zero* @x: value1* @y: value2*/ #define min_not_zero(x, y) ({ \typeof(x) __x = (x); \typeof(y) __y = (y); \__x == 0 ? __y : ((__y == 0) ? __x : min(__x, __y)); })

內核中定義的宏跟我們上面舉的例子有點不一樣,多了一行代碼:

(void) (&_max1 == &_max2);

看起來是一句廢話,其實用得很巧妙!它主要是用來檢測宏的兩個參數 x 和 y 的數據類型是否相同。如果不相同,編譯器會給一個警告信息,提醒程序開發人員。

warning:comparison of distinct pointer types lacks a cast

讓我們分析一下,它是怎么實現的:語句 &_max1 == &_max2 用來判斷兩個變量 _max1 和 _max2的地址是否相等,即比較兩個指針是否相等。&_max1 和 &_max2分別表示兩個不同變量的地址,怎么可能相等呢!既然大家都知道,內存中兩個不同的變量地址肯定不相等,那為什么還要在此多此一舉呢?妙就妙在,當兩個變量類型不相同時,對應的地址,即指針類型也不相同。比如一個 int 型變量,一個 char 變量,對應的指針類型,分別為 char * 和 int *,而兩個指針比較,它們必須是同種類型的指針,否則編譯器會有警告信息。所以,通過這種“曲線救國”的方式,這行程序語句就實現了這樣一個功能:當宏的兩個參數類型不相同時,編譯器會及時給我們一個警告信息,提醒開發者。

看完這個宏的實現,不得不感嘆內核的博大精深!每一個細節,每一個不經意的語句,細細品來,都能學到很多知識,讓你的 C 語言功底更加深厚。

04. container_of 宏分析

知道了 container_of 宏的用法之后,我們接著去分析這個宏的實現。作為一名 Linux 內核驅動開發者,除了要面對各種手冊、底層寄存器,有時候還要應付底層造輪子的事情,為了系統的穩定和性能,有時候我們不得不深入底層,死磕某個模塊,進行分析和優化。底層的工作雖然很有挑戰性,但有時候也是很枯燥的,不像應用開發那樣有意思。所以,為了提高對工作的興趣,大家表面上雖然不說自己牛 X,但內心深處,一定要建立起自己的職位優越感。人不可有傲氣,但一定要有傲骨:我們可不像應用開發,知道 API 接口、讀讀文檔、完成功能就 OK 了。作為一名底層開發者,要時刻記住,要和寄存器、內存、硬件電路等各族底層群眾打成一片。從群眾中來,到群眾中去,急群眾所急,想群眾所想,這樣才能構建一個穩定和諧的嵌入式系統:穩定高效、上下通暢、運行365個日出也不崩潰。

container_of 宏的實現主要用到了我們上兩節所學的知識:語句表達式和 typeof,再加上結構體存儲的基礎知識。為了幫助大家更好地理解這個宏,我們先復習下結構體存儲的基礎知識。

結構體內存布局

我們知道,結構體作為一個復合類型數據,它里面可以有多個成員。當我們定義一個結構體變量時,編譯器要給這個變量在內存中分配存儲空間。除了考慮數據類型、字節對齊因素之外,編譯器會按照結構體中各個成員的順序,在內存中分配一片連續的空間來存儲它們。

程序示例

struct student {int id;char sex;int age; };int main(void) {struct student s = {1, 'M', 18};printf("&s = %p\n", &s);printf("&s.id = %p\n", &s.id);printf("&s.sex = %p\n", &s.sex);printf("&s.age = %p\n", &s.age);return 0; }

執行結果

deng@itcast:~/tmp$ ./a.out &s = 0x7ffd3562d00c &s.id = 0x7ffd3562d00c &s.sex = 0x7ffd3562d010 &s.age = 0x7ffd3562d014

從運行結果我們可以看到,結構體中的每個成員變量,從結構體首地址開始,依次存放。每個成員變量相對于結構體首地址,都有一個固定偏移。比如 sex 相對于結構體首地址偏移了4個字節。age的存儲地址,相對于結構體首地址偏移了8個字節。

計算結構體成員在結構體中的偏移
一個結構體數據類型,在同一個編譯環境下,各個成員相對于結構體首地址的偏移是固定的。我們可以修改一下上面的程序,當結構體的首地址為0時,結構體中的各成員地址在數值上等于結構體各成員相對于結構體首地址的偏移。

程序示例

struct student {int id;char sex;int age; };int main(void) {printf("&id: %p\n", &((struct student*)0)->id);printf("&id: %p\n", &((struct student*)0)->sex);printf("&id: %p\n", &((struct student*)0)->age);return 0; }

執行結果

deng@itcast:~/tmp$ ./a.out &id: (nil) &id: 0x4 &id: 0x8

因為常量指針為0,即可以看做結構體首地址為0,所以結構體中每個成員變量的地址即為該成員相對于結構體首地址的偏移。container_of 宏的實現就是使用這個技巧來實現的。

計算偏移的宏實現

那如何計算結構體某個成員在結構體內的偏移呢?內核中定義了 offset 宏來實現這個功能,我們且看它的定義:

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)

這個宏有兩個參數,一個是結構體類型 TYPE,一個是結構體的成員 MEMBER,它使用的技巧跟我們上面計算0地址常量指針的偏移是一樣的:將0強制轉換為一個指向 TYPE 的結構體常量指針,然后通過這個常量指針訪問成員,獲取成員 MEMBER 的地址,其大小在數值上就等于 MEMBER 在結構體 TYPE 中的偏移。

container_of 宏的實現

有了上面的基礎,我們再去分析 container_of 宏的實現就比較簡單了。知道了結構體成員的地址,如何去獲取結構體的首地址?很簡單,直接拿結構體成員的地址,減去該成員在結構體內的偏移,就可以得到該結構體的首地址了。

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the type of the container struct this is embedded in.* @member: the name of the member within the struct.**/ #define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );})

從語法角度,我們可以看到,container_of 宏的實現由一個語句表達式構成。語句表達式的值即為最后一個表達式的值:

(type *)( (char *)__mptr - offsetof(type,member) );

最后一句的意義就是,拿結構體某個成員 member 的地址,減去這個成員在結構體 type 中的偏移,結果就是結構體 type 的首地址。因為語句表達式的值等于最后一個表達式的值,所以這個結果也是整個語句表達式的值,container_of 最后就會返回這個地址值給宏的調用者。

因為結構體的成員數據類型可以是任意數據類型,所以為了讓這個宏兼容各種數據類型。我們定義了一個臨時指針變量 __mptr,該變量用來存儲結構體成員 MEMBER 的地址,即存儲 ptr 的值。那如何獲取 ptr 指針類型呢,通過下面的方式:

const typeof( ((type *)0)->member ) *__mptr = (ptr);

我們知道,宏的參數 ptr 代表的是一個結構體成員變量 MEMBER 的地址,所以 ptr 的類型是一個指向 MEMBER 數據類型的指針,當我們使用臨時指針變量 __mptr 來存儲 ptr 的值時,必須確保 __mptr 的指針類型是一個指向 MEMBER 類型的指針變量。typeof( ((type *)0)->member )表達式使用 typeof 關鍵字,用來獲取結構體成員 member 的數據類型,然后使用該類型,使用 typeof( ((type *)0)->member ) *__mptr 這行程序語句,就可以定義一個指向該類型的指針變量了。

還有一個需要注意的細節就是:在語句表達式的最后,因為返回的是結構體的首地址,所以數據類型還必須強制轉換一下,轉換為 TYPE* ,即返回一個指向 TYPE 結構體類型的指針,所以你會在最后一個表達之中看到一個強制類型轉換(TYPE *)。

05. container_of 宏應用

有了上面語句表達式和 typeof 的基礎知識,接下來我們就可以分析 Linux 內核第一宏:container_of。這個宏在 Linux 內核中應用甚廣。

#define offsetof(TYPE, MEMBER) ((size_t) &((TYPE *)0)->MEMBER)/*** container_of - cast a member of a structure out to the containing structure* @ptr: the pointer to the member.* @type: the type of the container struct this is embedded in.* @member: the name of the member within the struct.**/ #define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );})

GNU C 高端擴展特性的綜合運用,宏中有宏,不得不佩服內核開發者這天才般地設計。那這個宏到底是干什么的呢?它的主要作用就是:根據結構體某一成員的地址,獲取這個結構體的首地址。根據宏定義,我們可以看到,這個宏有三個參數,它們分別是:

  • type:結構體類型
  • member:結構體內的成員
  • ptr:結構體內成員member的地址

也就是說,我們知道了一個結構體的類型,結構體內某一成員的地址,就可以直接獲得到這個結構體的首地址。container_of 宏返回的就是這個結構體的首地址。

比如現在,我們定義一個結構體類型 student:

程序示例

#include <stdio.h>struct student {int id;char sex;int age; };int main(void) {struct student s;printf("&s = %p\n", &s);printf("&s = %p\n", container_of(&s.sex, struct student, sex));return 0; }

執行結果

deng@itcast:~/tmp$ gcc 7.c deng@itcast:~/tmp$ ./a.out &s = 0x7ffc101be72c &s = 0x7ffc101be72c

在這個程序中,我們定義一個結構體類型 student,然后定義一個結構體變量 s,我們現在已經知道了結構體成員變量 s.sex的地址,那我們就可以通過 container_of 宏來獲取結構體變量 s的首地址。

這個宏在內核中非常重要。我們知道,Linux 內核驅動中,為了抽象,對數據結構體進行了多次封裝,往往一個結構體里面嵌套多層結構體。也就是說,內核驅動中不同層次的子系統或模塊,使用的是不同封裝程度的結構體,這也是 C 語言的面向對象思想。分層、抽象、封裝,可以讓我們的程序兼容性更好,適配更多的設備,但同時也增加了代碼的復雜度。

我們在內核中,經常會遇到這種情況:我們傳給某個函數的參數是某個結構體的成員變量,然后在這個函數中,可能還會用到此結構體的其它成員變量,那這個時候怎么辦呢?container_of 就是干這個的,通過它,我們可以首先找到結構體的首地址,然后再通過結構體的成員訪問就可以訪問其它成員變量了。

程序示例

struct student {int id;char sex;int age; };int main(void) {struct student s = {1, 'M', 18};int *p = &s.age;struct student *p1 = NULL;p1 = container_of(p, struct student, age);printf("&s = %p\n", &s);printf("id:%d\n", p1->id);printf("sex:%c\n", p1->sex);printf("age: %d\n", p1->age);return 0; }

執行結果

deng@itcast:~/tmp$ ./a.out &s = 0x7ffd1ca8e6bc id:1 sex:M age: 18

在這個程序中,我們定義一個結構體變量 s,知道了它的成員變量 age 的地址 &stu.age,我們就可以通過 container_of 宏直接獲得 s結構體變量的首地址,然后就可以直接訪問 s結構體的其它成員 s->id和 s->sex。

06. 附錄

參考:C語言嵌入式Linux高級編程

總結

以上是生活随笔為你收集整理的【嵌入式】C语言高级编程-container_of宏(04)的全部內容,希望文章能夠幫你解決所遇到的問題。

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

天天操天天干天天爱 | 337p日本大胆噜噜噜噜 | av电影不卡在线 | 色com | 欧洲精品亚洲精品 | 欧美另类一二三四区 | 91在线视频在线观看 | 中文字幕日韩电影 | 日韩成人精品一区二区 | 天天干国产 | 99视频精品视频高清免费 | 亚洲欧美乱综合图片区小说区 | 国产在线中文字幕 | 日本黄色一级电影 | 97av影院| 亚洲午夜激情网 | 午夜私人影院久久久久 | 日韩精品网址 | 欧美成年性 | av片在线看| 婷婷色中文 | 美女国产网站 | 成人a级大片| 丁香六月五月婷婷 | 超碰人人超| 激情伊人五月天久久综合 | 免费看一级一片 | 九九热精| 欧美人人 | 国产小视频福利在线 | 国产区精品视频 | 最近av在线| 成年人在线免费看 | 亚洲午夜久久久综合37日本 | 国产无套一区二区三区久久 | 美女网站黄在线观看 | 激情在线五月天 | 免费高清看电视网站 | 国产一级二级三级在线观看 | 国产成人精品久久二区二区 | 天天色天天射天天综合网 | 国产精品情侣视频 | 国产啊v在线 | 国产免费又粗又猛又爽 | 黄色美女免费网站 | 在线观看第一页 | 免费观看全黄做爰大片国产 | 国产 日韩 欧美 在线 | 国产日产精品一区二区三区四区 | 免费视频一区 | 玖玖视频在线 | 日本中文字幕高清 | 欧美激情xxxx性bbbb | 色久综合 | 婷婷丁香导航 | 亚洲精品乱码久久久久久蜜桃动漫 | 久久午夜视频 | 狠狠干夜夜操 | 日韩最新av| 狠狠色香婷婷久久亚洲精品 | 亚洲一区二区观看 | 成人毛片在线观看视频 | 超碰在线1 | 婷婷射五月 | 一本一本久久a久久精品综合妖精 | 黄色亚洲 | 亚洲美女视频网 | 中文字幕一区二区三区四区久久 | 日韩欧美高清不卡 | av爱干| 免费一级片在线 | 亚洲综合精品在线 | 蜜臀久久99精品久久久酒店新书 | 精品久久国产精品 | 99精品在线看 | 欧美做受xxx | www.人人草 | 国产无遮挡又黄又爽馒头漫画 | 摸阴视频| 在线小视频你懂的 | 国产拍揄自揄精品视频麻豆 | 国产亚洲日本 | 麻豆传媒在线视频 | 欧美婷婷色 | 干狠狠 | 日韩电影黄色 | 最新av网址在线观看 | 欧美一区二区三区激情视频 | 欧美日在线观看 | 久久久久在线观看 | 美女av免费 | 国产一二三在线视频 | 97成人资源 | av网站在线观看播放 | 欧美精品久久99 | 日韩av高清| 婷婷丁香视频 | 久久在线视频精品 | 蜜桃久久久 | 久久精品国产亚洲精品2020 | 在线观看视频免费大全 | 91激情小视频 | 操操操日日日干干干 | 欧美日产在线观看 | 91桃色在线播放 | 亚洲欧美婷婷六月色综合 | 婷婷色综 | 一本一本久久a久久精品综合 | 日韩高清成人 | 国产亚洲视频在线免费观看 | 97超碰国产精品女人人人爽 | 色在线免费观看 | 日韩在线免费小视频 | 国产大尺度视频 | 黄网站免费大全入口 | 国产精品久久99 | 色国产精品一区在线观看 | 一本一本久久a久久精品综合妖精 | 亚洲婷婷综合色高清在线 | 久久五月天色综合 | 国产精品一区二区三区四区在线观看 | 亚洲精品在线观看免费 | 伊人va| 国产精品乱码在线 | 免费的黄色的网站 | 欧美少妇的秘密 | 欧美一区在线观看视频 | 亚洲国产中文字幕在线观看 | 免费看成人av | 色99视频| 一区二区三区手机在线观看 | 久久xx视频 | 久久福利电影 | av一级网站 | www.夜色.com | 三级黄色免费 | 日韩成人精品一区二区三区 | 911久久| 久久久久亚洲最大xxxx | 99在线视频观看 | 久久经典国产视频 | 最近中文字幕高清字幕在线视频 | 天天干天天拍天天操 | 四虎成人精品永久免费av九九 | 精品视频久久 | 国产精品视屏 | 狠狠天天| 久久综合九色综合久99 | 27xxoo无遮挡动态视频 | 国产高清日韩欧美 | 色a在线观看 | 国产一级二级在线观看 | 国产第一福利网 | 国产精品入口麻豆www | 婷婷日 | 96精品高清视频在线观看软件特色 | 久久久精品久久 | 日本精品一区二区三区在线播放视频 | 欧美日韩一区二区在线 | 9在线观看免费高清完整版 玖玖爱免费视频 | 天天操天天添 | 免费a v网站| www.天天射 | 亚洲成 人精品 | 亚洲成a人片在线观看网站口工 | 丁香九月婷婷综合 | 在线91播放 | 91大神dom调教在线观看 | 亚洲永久精品视频 | 国产黄色免费 | 欧美一级片在线观看视频 | 国产亚洲视频在线观看 | 婷婷色九月 | 九九热在线播放 | 中文在线字幕观看电影 | 丰满少妇高潮在线观看 | 99久久网站 | 又黄又爽又无遮挡的视频 | 国产美女视频免费 | 国产日产精品一区二区三区四区的观看方式 | av中文在线 | 日韩在线观看视频在线 | 99精品国产兔费观看久久99 | 午夜视频一区二区 | 亚洲午夜av | 亚洲精品xx | 欧美亚洲国产精品久久高清浪潮 | 日本99久久 | 欧洲亚洲激情 | 日本精品在线看 | 欧洲性视频 | 久草青青在线观看 | 亚洲欧美日韩精品久久奇米一区 | 亚洲精品av中文字幕在线在线 | 欧美日韩一区二区在线观看 | 久久视频在线免费观看 | 久久99久久精品国产 | 亚洲va欧美va人人爽 | 五月婷婷久久综合 | 中文字幕一区二区三区乱码不卡 | 天天草天天 | 日韩在线视频二区 | 国产精品国产三级国产 | 久久免费视频一区 | 久久专区 | 在线观看的黄色 | 欧美日韩视频精品 | 天天摸日日操 | 欧美福利视频一区 | 色婷婷欧美 | 久久精品亚洲精品国产欧美 | 亚洲成av人片在线观看 | 麻豆精品传媒视频 | 日本中文字幕视频 | 日本中文字幕在线一区 | 欧美一区二区在线免费看 | 欧美一级免费片 | 五月开心婷婷 | 国产一区在线免费观看 | 久久免费福利 | 在线观看国产一区二区 | 久久精品中文字幕 | 日韩欧美在线视频一区二区三区 | 黄免费网站 | 国产在线观看你懂得 | 日韩精品一区二区三区电影 | 在线观看色视频 | 亚洲免费在线播放视频 | 91av视频 | 国产精品美女999 | 一级免费黄色 | 亚洲资源| 色五月色开心色婷婷色丁香 | 全黄网站| 国产亚洲视频在线观看 | 国产黑丝一区二区三区 | 免费高清在线观看成人 | 久久av在线 | 亚洲精品国偷拍自产在线观看蜜桃 | 97在线观看免费观看 | 久久久久免费观看 | av观看在线观看 | 久久久久久久久久伊人 | 日韩在线视频播放 | 精品黄色片 | 91黄色在线看 | 中文字幕日韩免费视频 | 欧美日韩在线网站 | 久久激情视频免费观看 | 91亚洲影院| 国产精品久久久久久麻豆一区 | 在线视频久久 | 99国产精品 | 欧美精品一区在线 | 国产一区二区精品久久 | 亚州天堂| 国产精品久久久久久久久久久免费看 | 国产精品毛片一区二区三区 | 蜜臀av在线一区二区三区 | 国产精品成人av久久 | 久久艹国产 | 久久黄色片 | 人人干人人草 | 韩日av一区二区 | 亚洲视频六区 | 婷婷成人在线 | 日韩精品黄 | 国产亚洲成av片在线观看 | 欧美日韩在线观看视频 | 中文字幕亚洲综合久久五月天色无吗'' | 中文成人字幕 | 中文字幕在线观看第二页 | 97看片吧| 久草免费在线视频 | 国产999精品久久久久久绿帽 | 黄色在线观看www | 亚洲欧美激情精品一区二区 | 999超碰| 成人久久18免费网站图片 | 国产另类av | 色婷婷激情综合 | 欧美大片mv免费 | 免费精品视频在线 | .国产精品成人自产拍在线观看6 | 99精品欧美一区二区三区黑人哦 | 日韩av午夜在线观看 | 国产女人18毛片水真多18精品 | 99国产精品久久久久久久久久 | 97免费在线观看视频 | 一区二区三区四区久久 | 欧美精品二区 | 日韩理论片在线 | 国产在线观看国语版免费 | 在线欧美小视频 | 国产精品一区二区久久久 | 免费又黄又爽视频 | 久久综合网色—综合色88 | 成人免费在线电影 | 三级a毛片 | 黄色小网站在线 | 久久免费视频7 | 国产操在线 | 69视频在线 | 麻豆你懂的 | 黄色av免费| 国产精品九九九九九九 | 黄色福利网站 | 亚洲精品久久在线 | 国产精品久久久久婷婷二区次 | 日韩中文字幕免费视频 | av免费在线免费观看 | 国内精品久久影院 | 在线播放国产精品 | 日女人电影| 一本一本久久a久久精品牛牛影视 | 日本中文在线播放 | 国产精品麻豆99久久久久久 | 亚洲二级片| 日日夜夜婷婷 | 久久免费高清 | 亚洲网久久 | 亚洲精品国产精品国自产观看浪潮 | 国产一级片一区二区三区 | 97视频资源 | 黄色在线网站噜噜噜 | 国产成人福利在线观看 | 超碰在线亚洲 | 成人啊 v | www.888av| 久久黄色a级片 | 国产精品福利在线 | 8x成人免费视频 | 麻豆视频成人 | 日韩欧美69| 夜夜夜夜操 | 四虎国产精品成人免费影视 | 久久国产精品免费一区二区三区 | 国产成人精品午夜在线播放 | 天天干夜夜擦 | 91成人午夜 | 激情五月综合 | 久久精品这里热有精品 | 欧美激情亚洲综合 | 91av在线免费播放 | 中文字幕一区二区三区在线播放 | 一本一道久久a久久精品 | 五月婷在线视频 | 人人玩人人添人人 | 欧美精选一区二区三区 | 国产精品嫩草55av | 91久久一区二区 | 亚洲日本va午夜在线影院 | 国产最新视频在线 | 免费在线激情电影 | 色综合久久久 | 夜夜夜影院 | 国产视频午夜 | 69av在线播放 | 91精品视频免费看 | 色婷婷国产精品一区在线观看 | 国产在线观看免费av | 国产精品原创av片国产免费 | 精品亚洲国产视频 | 麻豆视频国产在线观看 | 91在线播放综合 | 成人h动漫精品一区二 | 色噜噜在线观看视频 | 久久在线精品视频 | 青草视频在线 | 日韩色av色资源 | 婷婷亚洲激情 | 高清色免费 | 国产精品99久久99久久久二8 | 在线观看国产中文字幕 | 亚洲成人精品影院 | 99久久久久免费精品国产 | 成人a级大片 | 18岁免费看片 | 亚洲一区免费在线 | 国产日韩欧美在线一区 | 91免费高清观看 | 国产视频精品视频 | 国产精品亚洲精品 | 国产午夜在线观看 | 亚洲一区免费在线 | 国产麻豆果冻传媒在线观看 | 日韩中文在线观看 | 在线免费三级 | 国产免费xvideos视频入口 | 天堂va在线高清一区 | 六月丁香激情网 | av短片在线 | 久久精选视频 | 日韩av男人的天堂 | 免费日韩三级 | 免费在线色视频 | 午夜精品一区二区三区视频免费看 | 色99久久| 99在线国产 | 中文字幕有码在线观看 | 国产精品久久久久免费 | 免费高清av在线看 | 玖玖色在线观看 | 欧美一区二区在线刺激视频 | 国产免费视频在线 | 日韩免费在线视频 | 黄色av电影免费观看 | 免费午夜网站 | 黄色一级大片在线免费看产 | 精品一区二区免费在线观看 | av在线电影网站 | 色美女在线| 看片黄网站 | 欧美日韩高清一区二区 国产亚洲免费看 | 精品在线一区二区三区 | 干干操操 | 日韩美女一级片 | 日本少妇久久久 | 欧美日韩裸体免费视频 | 99色国产 | 中文在线中文a | 亚洲国产欧洲综合997久久, | 最新的av网站 | 久久人人爽人人 | 成人免费毛片aaaaaa片 | 国产精品 中文字幕 亚洲 欧美 | 久久久久亚洲精品中文字幕 | 国产精品视频在线看 | 西西www444| 又湿又紧又大又爽a视频国产 | 久久精品2 | 欧美 亚洲 另类 激情 另类 | 97精品国产91久久久久久 | 日韩字幕在线 | 中文字幕在 | 国产首页| 国产高清视频免费最新在线 | 久久99九九99精品 | 国产一级片播放 | 欧美日韩性视频 | 久草精品视频在线观看 | 综合久久久久久久 | 国产视频一区在线免费观看 | 欧洲精品亚洲精品 | 亚洲电影第一页av | 免费视频黄 | 国产精品18久久久久久首页狼 | 久久久亚洲麻豆日韩精品一区三区 | 美女在线国产 | 激情小说 五月 | 日韩精品免费在线播放 | 久久久久久亚洲精品 | 五月婷婷综合在线 | 中文字幕久久久精品 | 亚洲欧洲成人 | 久久亚洲国产精品 | 国产精品完整版 | 成人免费看片98欧美 | 欧美另类tv | 国产精品成人av在线 | 中文av在线免费观看 | 日韩中文字幕一区 | 欧美成人69av | 中文字幕欲求不满 | 天天操天天舔天天爽 | 国产网站色 | 午夜精品一区二区三区在线 | 在线免费国产 | 极品久久久久久久 | 成人九九视频 | 天天射,天天干 | 黄色片视频在线观看 | 久久9999久久免费精品国产 | 人人狠狠综合久久亚洲 | 青草草在线 | 国产精品毛片久久 | 麻豆视频免费在线观看 | 9幺看片| 中文字幕欧美日韩va免费视频 | 91在线一区二区 | 天天色天天操综合 | 激情网在线观看 | 99九九热只有国产精品 | 五月婷婷丁香六月 | 欧美一级片在线观看视频 | 91九色视频在线 | 久久香蕉电影 | 波多野结衣在线观看一区二区三区 | 国产在线v| 久草在线最新免费 | www.com久久| 欧美一区二区免费在线观看 | 99热9| 五月婷久久 | 精品一区二区在线免费观看 | 国产午夜三级一二三区 | 中文字幕91 | 久久开心激情 | 欧美日韩国产在线 | 深爱激情婷婷网 | 欧美孕交vivoestv另类 | 国产高清亚洲 | 9ⅰ精品久久久久久久久中文字幕 | 色婷婷国产精品 | 在线观看免费视频 | 日韩av中文字幕在线 | 99综合电影在线视频 | 黄色一级免费网站 | av品善网| 国产高清免费在线观看 | 亚洲高清在线观看视频 | 久久久久一区 | 在线电影日韩 | 欧美成年黄网站色视频 | 日韩在线资源 | 天天做天天爱天天综合网 | 国产一级性生活视频 | 成人网在线免费视频 | 一级成人在线 | 91av在线免费观看 | av成人在线观看 | 久久69精品久久久久久久电影好 | 国产18精品乱码免费看 | av大全在线 | 99久久精品国产亚洲 | 免费视频久久久 | 在线观看中文字幕第一页 | 欧美日韩视频一区二区三区 | 久久综合中文色婷婷 | 久久午夜精品视频 | 91精品影视| 91视频国产免费 | 欧美有色 | 在线观看黄污 | 久久久久国产精品www | 91在线免费观看国产 | 亚洲一区二区三区91 | 91视频最新网址 | 1024手机基地在线观看 | 新版资源中文在线观看 | 午夜视频在线观看一区二区三区 | 婷婷亚洲激情 | 亚洲不卡av一区二区三区 | 在线观看国产日韩欧美 | adn—256中文在线观看 | 亚洲涩综合 | 色综合久久中文字幕综合网 | 国产精品资源网 | 日韩精品影视 | 91高清不卡 | 亚洲国产欧美在线看片xxoo | 欧美99精品 | 999久久国精品免费观看网站 | 人人干人人搞 | 免费看片色 | 久久精品成人热国产成 | 97视频免费在线观看 | 国产精品乱码一区二区视频 | 探花视频网站 | 天天操天操| 天天干视频在线 | 日日摸日日添日日躁av | 国产美女免费观看 | 欧美91精品 | aaa日本高清在线播放免费观看 | 国产成人av在线影院 | 国产亚洲欧美在线视频 | 成人黄色电影在线 | 久久精品日产第一区二区三区乱码 | 亚洲天堂网在线观看视频 | 99久久视频| 日韩精品久久久久久中文字幕8 | 久久久久伦理电影 | 国产精品女同一区二区三区久久夜 | 久操视频在线免费看 | 国产69精品久久久久99 | a资源在线| 日韩理论视频 | 99精品视频在线观看 | 中文字幕色婷婷在线视频 | 中文字幕在线观看网 | 精品理论片 | 亚洲成av人影院 | 综合黄色网 | 色婷婷国产 | 91激情在线视频 | 91成人短视频在线观看 | 色综合欧洲 | 欧美成人中文字幕 | 最新色视频 | 国产一级精品视频 | 中文字幕视频三区 | 欧美成亚洲 | 国产精品久久久久久久久久免费 | 高清国产午夜精品久久久久久 | 天天操狠狠操夜夜操 | 丁香六月婷婷激情 | 亚洲视频免费在线观看 | 久久在现 | 99r在线播放 | 精品国产福利在线 | 久久久高清一区二区三区 | 久久久久久久久国产 | 天天爱天天射天天干天天 | 亚洲欧美日本一区二区三区 | 西西444www大胆高清视频 | 亚洲国产99 | av在线影片 | 国产小视频在线播放 | 久久99久久99| 久久综合桃花 | www.777奇米| 亚洲日本一区二区在线 | 成人黄色国产 | 香蕉视频啪啪 | 中文字幕一区在线观看视频 | 精品视频免费观看 | 在线视频 日韩 | 国产色区| 91亚洲国产成人 | 国产精品成人在线观看 | 黄色小网站在线观看 | 91看片在线| 亚洲欧美成人在线 | 97超视频| 国产高清小视频 | 日韩精品久久一区二区三区 | 日韩丝袜 | 天天射天天舔天天干 | 夜夜爽天天爽 | 欧美 日韩 国产 成人 在线 | 欧美一级日韩免费不卡 | 在线小视频国产 | av中文字幕不卡 | 99精品久久久久久久久久综合 | 五月天婷婷在线播放 | 国产精品午夜av | 青青河边草免费观看完整版高清 | 又污又黄的网站 | 一二三四精品 | 国产成人精品一区二区三区网站观看 | 久久久午夜剧场 | 在线观看日本韩国电影 | 九九热免费在线视频 | 久草新在线 | 亚洲午夜剧场 | 久久精品理论 | 天天透天天插 | 最近中文字幕 | 欧美国产日韩中文 | 狠狠操天天干 | 日本精品中文字幕 | 亚洲春色综合另类校园电影 | 玖玖视频国产 | 久久婷亚洲五月一区天天躁 | 看av在线| 精品国产亚洲日本 | 日韩一级理论片 | 日日摸日日添日日躁av | 日日爽| www.av免费观看| 久久久国产一区 | 国产福利91精品一区二区三区 | 精品国产成人在线影院 | 91视频a| 国产黑丝一区二区 | 91丨九色丨蝌蚪丰满 | 欧美日韩不卡在线 | 91人人视频在线观看 | 久久精品毛片 | 国产精品密入口果冻 | 国产福利一区二区三区视频 | 亚洲精品黄色片 | 欧美日韩免费观看一区=区三区 | 久久精品亚洲 | 天天射天天操天天干 | 国产精品h在线观看 | 2018亚洲男人天堂 | 色国产精品一区在线观看 | 在线成人一区 | 国产精品福利小视频 | av色图天堂网 | 在线视频欧美精品 | 国产精品久久久久久久久久东京 | 亚洲欧美999| 欧美日韩高清一区二区三区 | 久久久精品一区二区三区 | 免费在线观看一级片 | 国产91大片 | 99久久精品国产观看 | 欧美99久久| 精品一区久久 | 久久精品亚洲 | 99久久精品视频免费 | 黄色三级免费 | 中文字幕a∨在线乱码免费看 | 国产午夜精品久久 | 免费黄色看片 | 亚洲一本视频 | 韩日av在线 | 天天色天天上天天操 | 国内精品久久久久久久久久 | 久久av影视 | 在线免费观看一区二区三区 | 亚洲国产成人久久 | 中文区中文字幕免费看 | 亚洲精品免费播放 | 91视频午夜| 不卡国产视频 | 夜夜躁天天躁很躁波 | 日韩欧美精品在线视频 | 亚洲精品免费观看视频 | 国产精品剧情在线亚洲 | 国产成人精品一二三区 | 日韩久久激情 | 免费精品国产 | 日韩精品一区二区免费 | 午夜在线观看影院 | 国产精品久久久久久电影 | 国产精品嫩草69影院 | 久久理论电影 | 丁香婷婷在线 | 久久久亚洲国产精品麻豆综合天堂 | 香蕉视频在线观看免费 | 91丨九色丨首页 | 国产一卡在线 | 最近中文字幕在线播放 | av专区在线 | 狠狠色丁香婷婷综合久小说久 | 亚洲视频一区二区三区在线观看 | 婷婷五天天在线视频 | 欧美日韩激情网 | 99久免费精品视频在线观看 | 国产黄a三级三级 | 色综合久久中文综合久久牛 | 国产精品99在线播放 | 成人va在线观看 | 亚洲最新av在线网址 | 欧美日本高清视频 | 日韩久久精品一区二区 | 97香蕉超级碰碰久久免费软件 | 在线观看一区二区视频 | 国产在线观看你懂得 | 日韩高清一区二区 | 毛片网站免费在线观看 | 美女在线免费视频 | 国产精品久久99精品毛片三a | 久久九九影视网 | 亚洲2019精品 | av不卡免费看 | 免费看污黄网站 | 中文字幕免费观看 | 久久色亚洲 | 中文字幕在线观看的网站 | 国产操在线 | 日b黄色片| 免费中文字幕在线观看 | 在线观看国产成人av片 | 成人动漫一区二区 | 国产精品一级在线 | 最新久久久 | 久久国产精品二国产精品中国洋人 | 91精彩视频在线观看 | 成年人免费看的视频 | 国产一区二区三区网站 | 日本激情动作片免费看 | 久久精品草 | 午夜黄网| www看片网站| 欧美性做爰猛烈叫床潮 | 日韩中午字幕 | 波多野结衣电影一区 | 精品国产视频一区 | 在线观看一区二区视频 | 成人黄色大片 | 五月天综合婷婷 | 中文字幕高清视频 | 久亚洲 | 亚洲日本成人网 | 国产精品午夜av | 久章草在线 | 国产成人精品久久 | 成年人在线电影 | 97偷拍在线视频 | 久久久久国产精品视频 | 在线免费黄 | 日本大片免费观看在线 | 99999精品 | 特级黄色视频毛片 | 久久成 | 日韩小视频网站 | 一区二区三区日韩视频在线观看 | 五月婷婷国产 | 日韩欧美视频免费看 | 久久久久久草 | 国产亚洲va综合人人澡精品 | 午夜天使| 久久精品久久精品久久39 | 久久成人免费电影 | 色综合久久久久久久 | 久久大片| 国产精品福利午夜在线观看 | 中文字幕黄色网 | 国产日韩欧美网站 | 中文字幕在线视频一区 | 91麻豆精品国产91久久久使用方法 | 五月婷婷综合久久 | 麻豆视频一区 | 婷婷福利影院 | 亚洲一区 影院 | 中文字幕在线观看免费观看 | 91精品国产三级a在线观看 | 国产麻豆精品一区二区 | 九九99 | 日韩免费网站 | 9在线观看免费高清完整版在线观看明 | www.69xx| 香蕉蜜桃视频 | 丁香婷婷综合激情五月色 | 日本中文字幕在线播放 | 亚洲久草网 | 久久在线一区 | 欧美日韩不卡在线视频 | 黄色a在线观看 | 激情五月婷婷综合 | 久久亚洲精品电影 | 国产一区高清在线 | 欧美aaa一级| 精品免费视频123区 午夜久久成人 | 国产美女久久 | 国产日韩精品一区二区三区 | 91热视频在线观看 | 亚洲精品在线观看视频 | 欧美黄在线 | 天天操偷偷干 | 国产精品久久久久久麻豆一区 | 美女黄网站视频免费 | 欧美日韩国产伦理 | 黄色av网站在线免费观看 | 高清美女视频 | 天天干.com| 91精品国自产在线偷拍蜜桃 | 999免费视频 | 亚洲尺码电影av久久 | 欧美最猛性xxx | 亚洲综合小说电影qvod | 日本69hd | 热久久视久久精品18亚洲精品 | 五月天天色| 免费网站在线观看成人 | 日韩精品在线一区 | 中文字幕在线观看第三页 | 国产在线国产 | 成人欧美亚洲 | 天天玩天天干天天操 | 日日夜夜噜 | 射射射av | wwwwww色| 国产午夜精品久久久久久久久久 | 激情深爱五月 | 在线亚洲午夜片av大片 | 久久久人人人 | 免费视频黄| 日韩激情av在线 | 91视频免费看网站 | 国内揄拍国内精品 | 精品国产欧美一区二区三区不卡 | 久久精品99国产精品亚洲最刺激 | 激情综合五月天 | 成人免费观看视频网站 | 久久久精品欧美一区二区免费 | 国产又粗又猛又色又黄视频 | 国产亲近乱来精品 | 亚洲免费av片 | 久草在线视频首页 | 国产午夜精品一区二区三区在线观看 | 欧美另类网站 | 国产精品亚洲人在线观看 | 三级黄色在线观看 | 国产一区在线精品 | 天堂在线免费视频 | 99久久精品国产一区 | 国产福利午夜 | 久久精品电影网 | 久久精品高清 | 国产中文字幕第一页 | 丁香国产视频 | 国产精品第三页 | 国内外成人在线视频 | 色婷久久| 亚洲精品1234区 | 黄色国产成人 | 99中文字幕 | 亚洲亚洲精品在线观看 | 久久久久电影网站 | 日本夜夜草视频网站 | 黄色毛片观看 | 婷婷综合 | 又黄又爽又湿又无遮挡的在线视频 | 国产精品久久一 | 五月天综合网站 | 精品美女国产在线 | 国产精品乱码久久久久久1区2区 | 久久99中文字幕 | 天堂在线视频免费观看 | 欧美不卡视频在线 | 91完整视频 | 麻豆一二 | 亚洲经典在线 | 久久综合亚洲鲁鲁五月久久 | 欧美一级片免费播放 | 日韩av一区二区在线影视 | jizz18欧美18 | 在线观看亚洲电影 | 国产黄色网 | 狠狠操电影网 | 韩日视频在线 | 久视频在线播放 | 综合影视 | 日韩av中文在线 | 91丨九色丨蝌蚪丨老版 | 欧美精品久久久久久 | 中文字幕免费看 | 国产精品区二区三区日本 | 亚洲成人家庭影院 | 操操日 | 亚洲激情电影在线 | 二区精品视频 | 久久国产一区 | 色婷婷激情网 | av青草| 亚洲作爱视频 | 99精品国产福利在线观看免费 | 久久综合免费视频 | 久久免费视频这里只有精品 | 中文在线中文资源 | av最新资源 | 日本黄色大片免费看 | 91视频在线免费 | 欧美国产日韩在线视频 | 亚洲国产中文在线观看 | 国产中文字幕网 | 天天爱天天射天天干天天 | av黄色在线观看 | 欧美色伊人| 国产高清一区二区 | 热re99久久精品国产99热 | 亚洲在线黄色 | 中文字幕成人在线观看 | 日韩在线精品一区 | 在线观看片 | 黄a在线看 | 狠狠艹夜夜干 | 日韩美av在线 | 日韩视频精品在线 | 91超碰免费在线 | 亚洲天堂社区 | 国产精品电影一区二区 | 色网站在线免费 | 婷婷丁香色综合狠狠色 | 中文字幕一区二区三区乱码在线 | 天天干,夜夜爽 | 97爱| 国产精品毛片一区二区三区 | 天天操天天色天天射 | 国产精品系列在线观看 | 香蕉视频在线免费看 | 色狠狠综合 | 日本xxxxav | 国产激情小视频在线观看 | av电影在线播放 | 日韩亚洲在线视频 | 韩国精品在线观看 | www色综合 | 丝袜少妇在线 | 婷婷av综合 | 精品国产一区二区三区久久 | 97人人精品 | 在线观看黄色av | 五月天久久狠狠 | 日本三级香港三级人妇99 | 天天综合网 天天 | 9999在线| 久久精品免费观看 | 国产精品美女久久久久久久网站 | 二区视频在线观看 | 久久成年人 | www.国产毛片 | 国产精品美女网站 | 成人免费视频网 | 日韩在线免费小视频 | www久久久久 | 激情伊人五月天久久综合 | 国产精品麻豆一区二区三区 | 97成人免费 | 欧美视频99 | 91网在线看 | 国产字幕在线观看 |