久久精品国产精品国产精品污,男人扒开添女人下部免费视频,一级国产69式性姿势免费视频,夜鲁夜鲁很鲁在线视频 视频,欧美丰满少妇一区二区三区,国产偷国产偷亚洲高清人乐享,中文 在线 日韩 亚洲 欧美,熟妇人妻无乱码中文字幕真矢织江,一区二区三区人妻制服国产

歡迎訪問 生活随笔!

生活随笔

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

编程问答

Epoll详解及源码分析

發布時間:2023/11/30 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Epoll详解及源码分析 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章來源:http://blog.csdn.net/chen19870707/article/details/42525887

  • Author:Echo Chen(陳斌)

  • Email:chenb19870707@gmail.com

  • Blog:Blog.csdn.net/chen19870707

  • Date:Jan.7th, 2015

?

1.什么是epoll

epoll是當前在Linux下開發大規模并發網絡程序的熱門人選,epoll 在Linux2.6內核中正式引入,和select相似,都是I/O多路復用(IO multiplexing)技術,按照man手冊的說法:是為處理大批量句柄而作了改進的poll。

Linux下有以下幾個經典的服務器模型:

?

①Apache模型(Process Per Connection,簡稱PPC) 和 TPC(Thread Per Connection)模型

這兩種模型思想類似,就是讓每一個到來的連接都有一個進程/線程來服務。這種模型的代價是它要時間和空間。連接較多時,進程/線程切換的開銷比較大。因此這類模型能接受的最大連接數都不會高,一般在幾百個左右。

?

②select模型

最大并發數限制:因為一個進程所打開的fd(文件描述符)是有限制的,由FD_SETSIZE設置,默認值是1024/2048,因此select模型的最大并發數就被相應限制了。

效率問題:select每次調用都會線性掃描全部的fd集合,這樣效率就會呈現線性下降,把FD_SETSIZE改大可能造成這些fd都超時了。

內核/用戶空間內存拷貝問題:如何讓內核把fd消息通知給用戶空間呢?在這個問題上select采取了內存拷貝方法。?

?

③poll模型

雖然解決了select 最大并發數的限制,但是依然存在select的效率問題,select缺點的2和3它都沒有改掉。

?

④epoll模型

對比其他模型的問題,epoll的改進如下:

1.支持一個進程打開大數目的socket描述符(FD)?
??? select 最不能忍受的是一個進程所打開的FD是有一定限制的,由FD_SETSIZE設置,默認值是2048。對于那些需要支持的上萬連接數目的IM服務器來說顯然太少了。這時候你一是可以選擇修改這個宏然后重新編譯內核,不過資料也同時指出這樣會帶來網絡效率的下降,二是可以選擇多進程的解決方案(傳統的 Apache方案),不過雖然linux上面創建進程的代價比較小,但仍舊是不可忽視的,加上進程間數據同步遠比不上線程間同步的高效,所以也不是一種完美的方案。不過 epoll則沒有這個限制,它所支持的FD上限是最大可以打開文件的數目,這個數字一般遠大于2048,舉個例子,在1GB內存的機器上大約是10萬左右,具體數目可以cat /proc/sys/fs/file-max察看,一般來說這個數目和系統內存關系很大。?
??
???? 2.IO效率不隨FD數目增加而線性下降?
??? 傳統的select/poll另一個致命弱點就是當你擁有一個很大的socket集合,不過由于網絡延時,任一時間只有部分的socket是"活躍"的,但是select/poll每次調用都會線性掃描全部的集合,導致效率呈現線性下降。但是epoll不存在這個問題,它只會對"活躍"的socket進行操作---這是因為在內核實現中epoll是根據每個fd上面的callback函數實現的。那么,只有"活躍"的socket才會主動的去調用 callback函數,其他idle狀態socket則不會,在這點上,epoll實現了一個"偽"AIO,因為這時候推動力在os內核。在一些 benchmark中,如果所有的socket基本上都是活躍的---比如一個高速LAN環境,epoll并不比select/poll有什么效率,相反,如果過多使用epoll_ctl,效率相比還有稍微的下降。但是一旦使用idle connections模擬WAN環境,epoll的效率就遠在select/poll之上了。
??
3.使用mmap加速內核與用戶空間的消息傳遞?
??? 這點實際上涉及到epoll的具體實現了。無論是select,poll還是epoll都需要內核把FD消息通知給用戶空間,如何避免不必要的內存拷貝就很重要,在這點上,epoll是通過內核于用戶空間mmap同一塊內存實現的。而如果你想我一樣從2.5內核就關注epoll的話,一定不會忘記手工 mmap這一步的。
??
4.內核微調?
????? 這一點其實不算epoll的優點了,而是整個linux平臺的優點。也許你可以懷疑linux平臺,但是你無法回避linux平臺賦予你微調內核的能力。比如,內核TCP/IP協議棧使用內存池管理sk_buff結構,那么可以在運行時期動態調整這個內存pool(skb_head_pool)的大小--- 通過echo XXXX>/proc/sys/net/core/hot_list_length完成。再比如listen函數的第2個參數(TCP完成3次握手的數據包隊列長度),也可以根據你平臺內存大小動態調整。更甚至在一個數據包面數目巨大但同時每個數據包本身大小卻很小的特殊系統上嘗試最新的NAPI網卡驅動架構。
?

2.Epoll API?

epoll只有epoll_create,epoll_ctl,epoll_wait 3個系統調用。

1: #include? <sys/epoll.h> 2:? 3: int? epoll_create(int? size); 4:? 5: int? epoll_ctl(int epfd, int op, int fd, structepoll_event *event); 6:? 7: int? epoll_wait(int epfd, struct epoll_event* events, int maxevents. int timeout); 8:? 9:?

① int epoll_create(int size);

創建一個epoll的句柄。自從linux2.6.8之后,size參數是被忽略的。需要注意的是,當創建好epoll句柄后,它就是會占用一個fd值,在linux下如果查看/proc/進程id/fd/,是能夠看到這個fd的,所以在使用完epoll后,必須調用close()關閉,否則可能導致fd被耗盡。

②int epoll_ctl(int epfd, int op, int fd, struct epoll_event *event);

epoll的事件注冊函數,它不同于select()是在監聽事件時告訴內核要監聽什么類型的事件,而是在這里先注冊要監聽的事件類型。?
第一個參數是epoll_create()的返回值。?
第二個參數表示動作,用三個宏來表示:?
EPOLL_CTL_ADD:注冊新的fd到epfd中;?
EPOLL_CTL_MOD:修改已經注冊的fd的監聽事件;?
EPOLL_CTL_DEL:從epfd中刪除一個fd;?
??
第三個參數是需要監聽的fd。?
第四個參數是告訴內核需要監聽什么事,struct epoll_event結構如下:

1: //保存觸發事件的某個文件描述符相關的數據(與具體使用方式有關) 2:? 3: typedef?union epoll_data { 4:???? void *ptr; 5:???? int fd; 6:???? __uint32_t u32; 7:???? __uint64_t u64; 8: } epoll_data_t; 9:? //感興趣的事件和被觸發的事件 10: struct epoll_event { 11:???? __uint32_t events; /* Epoll events */ 12:???? epoll_data_t data; /* User data variable */ 13: };

events可以是以下幾個宏的集合:?
EPOLLIN :表示對應的文件描述符可以讀(包括對端SOCKET正常關閉);?
EPOLLOUT:表示對應的文件描述符可以寫;?
EPOLLPRI:表示對應的文件描述符有緊急的數據可讀(這里應該表示有帶外數據到來);?
EPOLLERR:表示對應的文件描述符發生錯誤;?
EPOLLHUP:表示對應的文件描述符被掛斷;?
EPOLLET: 將EPOLL設為邊緣觸發(Edge Triggered)模式,這是相對于水平觸發(Level Triggered)來說的。?
EPOLLONESHOT:只監聽一次事件,當監聽完這次事件之后,如果還需要繼續監聽這個socket的話,需要再次把這個socket加入到EPOLL隊列里

③ int epoll_wait(int epfd, struct epoll_event * events, int maxevents, int timeout);

收集在epoll監控的事件中已經發送的事件。參數events是分配好的epoll_event結構體數組,epoll將會把發生的事件賦值到events數組中(events不可以是空指針,內核只負責把數據復制到這個events數組中,不會去幫助我們在用戶態中分配內存)。maxevents告之內核這個events有多大,這個 maxevents的值不能大于創建epoll_create()時的size,參數timeout是超時時間(毫秒,0會立即返回,-1將不確定,也有說法說是永久阻塞)。如果函數調用成功,返回對應I/O上已準備好的文件描述符數目,如返回0表示已超時。

3.Epoll? 工作模式

①LT模式:Level Triggered水平觸發

這個是缺省的工作模式。同時支持block socket和non-block socket。內核會告訴程序員一個文件描述符是否就緒了。如果程序員不作任何操作,內核仍會通知。

?

②ET模式:Edge Triggered 邊緣觸發

是一種高速模式。僅當狀態發生變化的時候才獲得通知。這種模式假定程序員在收到一次通知后能夠完整地處理事件,于是內核不再通知這一事件。注意:緩沖區中還有未處理的數據不算狀態變化,所以ET模式下程序員只讀取了一部分數據就再也得不到通知了,正確的用法是程序員自己確認讀完了所有的字節(一直調用read/write直到出錯EAGAIN為止)。

?

如下圖:

0:表示文件描述符未準備就緒

1:表示文件描述符準備就緒

?

對于水平觸發模式(LT):在1處,如果你不做任何操作,內核依舊會不斷的通知進程文件描述符準備就緒。

對于邊緣出發模式(ET): 只有在0變化到1處的時候,內核才會通知進程文件描述符準備就緒。之后如果不在發生文件描述符狀態變化,內核就不會再通知進程文件描述符已準備就緒。

?

Nginx 默認采用的就是ET。

?

?

4.實例

?

1: #include <stdio.h> 2: #include <stdlib.h> 3: #include <unistd.h> 4: #include <sys/socket.h> 5: #include <errno.h> 6: #include <sys/epoll.h> 7: #include <netinet/in.h> 8: #include <fcntl.h> 9: #include <string.h> 10:? #include <netdb.h> 11:? 12:? 13:? 14: struct epoll_event? *events = NULL; 15: int epollFd = -1; 16:? 17: const?int MAX_SOCK_NUM = 1024; 18:? 19:? 20: int epoll_init(); 21: int epoll_socket(int domain, int type, int protocol); 22: int epoll_cleanup(); 23: int epoll_new_conn(int sfd); 24:? 25:? 26: int main() 27: { 28:?????? struct sockaddr_in listenAddr; 29:?????? int listenFd = -1; 30:? 31:?????? if(-1 == epoll_init()) 32:?????? { 33:?????????? printf("epoll_init err\n"); 34:?????????? return -1; 35:?????? } 36:? 37:?????? if((listenFd = epoll_socket(AF_INET,SOCK_STREAM,0)) == -1) 38:?????? { 39:?????????? printf("epoll_socket err\n"); 40:?????????? epoll_cleanup(); 41:?????????? return -1; 42:?????? } 43:? 44:?????? listenAddr.sin_family = AF_INET; 45:?????? listenAddr.sin_port = htons(999); 46:?????? listenAddr.sin_addr.s_addr = htonl(INADDR_ANY); 47:? 48:?????? if(-1 == bind(listenFd,(struct sockaddr*)&listenAddr,sizeof(listenAddr))) 49:?????? { 50:?????????? printf("bind err %d\n",errno); 51:?????????? epoll_cleanup(); 52:?????????? return -1; 53:?????? } 54:? 55:?????? if(-1 == listen(listenFd,1024)) 56:?????? { 57:?????????? printf("listen err\n"); 58:?????????? epoll_cleanup(); 59:?????????? return -1; 60:?????? } 61:? 62:?????? //Add ListenFd into epoll 63:?????? if(-1 == epoll_new_conn(listenFd)) 64:?????? { 65:?????????? printf("eph_new_conn err\n"); 66:?????????? close(listenFd); 67:???????? epoll_cleanup(); 68:???????? return -1; 69:?????? } 70:? 71:? 72:?????? //LOOP 73:?????? while(1) 74:?????? { 75:?????????? int n; 76:?????????? n = epoll_wait(listenFd,events,MAX_SOCK_NUM,-1); 77:?????????? for (int i = 0; i < n; i++) 78:?????????? { 79:??????????????? if( (events[i].events & EPOLLERR) || ( events[i].events & EPOLLHUP ) || !(events[i].events & EPOLLIN) ) 80:??????????????? { 81:??????????????????? printf("epoll err\n"); 82:??????????????????? close(events[i].data.fd); 83:??????????????????? continue; 84:??????????????? } 85:??????????????? else?if(events[i].data.fd == listenFd) 86:??????????????? { 87:??????????????????? while(1) 88:??????????????????? { 89:??????????????????????? struct sockaddr inAddr; 90:??????????????????????? char hbuf[1024],sbuf[NI_MAXSERV]; 91:??????????????????????? socklen_t inLen = -1; 92:??????????????????????? int inFd = -1; 93:??????????????????????? int s = 0; 94:??????????????????????? int flag = 0; 95:? 96:??????????????????????? inLen = sizeof(inAddr); 97:??????????????????????? inFd = accept(listenFd,&inAddr,&inLen); 98:? 99:??????????????????????? if(inFd == -1) 100:??????????????????????? { 101:??????????????????????????? if( errno == EAGAIN || errno == EWOULDBLOCK ) 102:??????????????????????????? { 103:??????????????????????????????? break; 104:??????????????????????????? } 105:??????????????????????????? else 106:??????????????????????????? { 107:??????????????????????????????? printf("accept error\n"); 108:??????????????????????????????? break; 109:??????????????????????????? } 110:??????????????????????? } 111:? 112:???????????????????? if (s ==? getnameinfo (&inAddr, inLen, hbuf, sizeof(hbuf), sbuf, sizeof(sbuf), NI_NUMERICHOST | NI_NUMERICSERV)) 113:???????????????????? { 114:???????????????????????? printf("Accepted connection on descriptor %d (host=%s, port=%s)\n", inFd, hbuf, sbuf); 115:???????????????????? } 116:? 117:???????????????????? //Set Socket to non-block 118:???????????????????? if((flag = fcntl(inFd,F_GETFL,0)) < 0 || fcntl(inFd,F_SETFL,flag | O_NONBLOCK) < 0) 119:???????????????????? { 120:???????????????????????? close(inFd); 121:???????????????????????? return -1; 122:???????????????????? } 123:? 124:???????????????????? epoll_new_conn(inFd); 125:??????????????????? } 126:??????????????? } 127:??????????????? else 128:??????????????? { 129:???????????????????????? while (1) 130:???????????????????????? { 131:???????????????????????? ssize_t count; 132:???????????????????????? char buf[512]; 133:? 134:???????????????????????? count = read (events[i].data.fd, buf, sizeof buf); 135:? 136:???????????????????????? if (count == -1) 137:???????????????????????? { 138:???????????????????????????? if (errno != EAGAIN) 139:????????????????????????????? { 140:???????????????????????????????? printf("read err\n"); 141:???????????????????????????????? } 142:? 143:???????????????????????????? break; 144:? 145:???????????????????????? } 146:???????????????????????? else?if (count == 0) 147:???????????????????????? {? 148:???????????????????????????? break; 149:???????????????????????? } 150:? 151:???????????????????????? write (1, buf, count); 152:???????????????????? } 153:???????????????? } 154:?????????? } 155:? 156:?????? } 157:? 158:?????? epoll_cleanup(); 159: } 160:? 161:? 162: int epoll_init() 163: { 164:???? if(!(events = (struct epoll_event* ) malloc ( MAX_SOCK_NUM * sizeof(struct epoll_event)))) 165:???? { 166:???????? return -1; 167:???? } 168:? 169:???? if( (epollFd = epoll_create(MAX_SOCK_NUM)) < 0 ) 170:???? { 171:???????? return -1; 172:???? } 173:? 174:???? return 0; 175: } 176:? 177: int epoll_socket(int domain, int type, int protocol) 178: { 179:???? int sockFd = -1; 180:???? int flag = -1; 181:? 182:???? if ((sockFd = socket(domain,type,protocol)) < 0) 183:???? { 184:???????? return -1; 185:???? } 186:? 187:???? //Set Socket to non-block 188:???? if((flag = fcntl(sockFd,F_GETFL,0)) < 0 || fcntl(sockFd,F_SETFL,flag | O_NONBLOCK) < 0) 189:???? { 190:???????? close(sockFd); 191:???????? return -1; 192:???? } 193:? 194:???? return sockFd; 195: } 196:? 197: int epoll_cleanup() 198: { 199:???? free(events); 200:???? close(epollFd); 201:???? return 0; 202: } 203:? 204: int epoll_new_conn(int sfd) 205: { 206:? 207:?????? struct epoll_event? epollEvent; 208:?????? memset(&epollEvent, 0, sizeof(struct epoll_event)); 209:?????? epollEvent.events = EPOLLIN | EPOLLERR | EPOLLHUP | EPOLLET; 210:?????? epollEvent.data.ptr = NULL; 211:?????? epollEvent.data.fd? = sfd; 212:? 213:?????? if (epoll_ctl(epollFd, EPOLL_CTL_ADD, sfd, &epollEvent) < 0) 214:?????? { 215:???????? return -1; 216:?????? } 217:? 218:???? epollEvent.data.fd? = sfd; 219:? 220:???? return 0; 221: }

5.Epoll為什么高效

Epoll高效主要體現在以下三個方面:

①從上面的調用方式就可以看出epoll比select/poll的一個優勢:select/poll每次調用都要傳遞所要監控的所有fd給select/poll系統調用(這意味著每次調用都要將fd列表從用戶態拷貝到內核態,當fd數目很多時,這會造成低效)。而每次調用epoll_wait時(作用相當于調用select/poll),不需要再傳遞fd列表給內核,因為已經在epoll_ctl中將需要監控的fd告訴了內核(epoll_ctl不需要每次都拷貝所有的fd,只需要進行增量式操作)。所以,在調用epoll_create之后,內核已經在內核態開始準備數據結構存放要監控的fd了。每次epoll_ctl只是對這個數據結構進行簡單的維護。

?

② 此外,內核使用了slab機制,為epoll提供了快速的數據結構:

在內核里,一切皆文件。所以,epoll向內核注冊了一個文件系統,用于存儲上述的被監控的fd。當你調用epoll_create時,就會在這個虛擬的epoll文件系統里創建一個file結點。當然這個file不是普通文件,它只服務于epoll。epoll在被內核初始化時(操作系統啟動),同時會開辟出epoll自己的內核高速cache區,用于安置每一個我們想監控的fd,這些fd會以紅黑樹的形式保存在內核cache里,以支持快速的查找、插入、刪除。這個內核高速cache區,就是建立連續的物理內存頁,然后在之上建立slab層,簡單的說,就是物理上分配好你想要的size的內存對象,每次使用時都是使用空閑的已分配好的對象。

?

③ epoll的第三個優勢在于:當我們調用epoll_ctl往里塞入百萬個fd時,epoll_wait仍然可以飛快的返回,并有效的將發生事件的fd給我們用戶。這是由于我們在調用epoll_create時,內核除了幫我們在epoll文件系統里建了個file結點,在內核cache里建了個紅黑樹用于存儲以后epoll_ctl傳來的fd外,還會再建立一個list鏈表,用于存儲準備就緒的事件,當epoll_wait調用時,僅僅觀察這個list鏈表里有沒有數據即可。有數據就返回,沒有數據就sleep,等到timeout時間到后即使鏈表沒數據也返回。所以,epoll_wait非常高效。而且,通常情況下即使我們要監控百萬計的fd,大多一次也只返回很少量的準備就緒fd而已,所以,epoll_wait僅需要從內核態copy少量的fd到用戶態而已。那么,這個準備就緒list鏈表是怎么維護的呢?當我們執行epoll_ctl時,除了把fd放到epoll文件系統里file對象對應的紅黑樹上之外,還會給內核中斷處理程序注冊一個回調函數,告訴內核,如果這個fd的中斷到了,就把它放到準備就緒list鏈表里。所以,當一個fd(例如socket)上有數據到了,內核在把設備(例如網卡)上的數據copy到內核中后就來把fd(socket)插入到準備就緒list鏈表里了。

如此,一顆紅黑樹,一張準備就緒fd鏈表,少量的內核cache,就幫我們解決了大并發下的fd(socket)處理問題。

1.執行epoll_create時,創建了紅黑樹和就緒list鏈表。

2.執行epoll_ctl時,如果增加fd(socket),則檢查在紅黑樹中是否存在,存在立即返回,不存在則添加到紅黑樹上,然后向內核注冊回調函數,用于當中斷事件來臨時向準備就緒list鏈表中插入數據。

3.執行epoll_wait時立刻返回準備就緒鏈表里的數據即可。

6.Epoll源碼分析

?

1: static?int __init eventpoll_init(void) 2: { 3:?? mutex_init(&pmutex); 4:? 5:?? ep_poll_safewake_init(&psw); 6:? 7:?? epi_cache = kmem_cache_create("eventpoll_epi", sizeof(struct epitem), 0, SLAB_HWCACHE_ALIGN|EPI_SLAB_DEBUG|SLAB_PANIC, NULL); 8:? 9:?? pwq_cache = kmem_cache_create("eventpoll_pwq", sizeof(struct eppoll_entry), 0, EPI_SLAB_DEBUG|SLAB_PANIC, NULL); 10:? 11:?? return 0; 12: }

?

epoll用kmem_cache_create(slab分配器)分配內存用來存放struct?epitem和struct?eppoll_entry。

?

當向系統中添加一個fd時,就創建一個epitem結構體,這是內核管理epoll的基本數據結構:

1: struct epitem 2: { 3:???? struct rb_node? rbn;??????? //用于主結構管理的紅黑樹 4:? 5:???? struct list_head? rdllink;? //事件就緒隊列 6:? 7:???? struct epitem? *next;?????? //用于主結構體中的鏈表 8:? 9:???? struct epoll_filefd? ffd;?? //這個結構體對應的被監聽的文件描述符信息 10:? 11:???? int? nwait;???????????????? //poll操作中事件的個數 12:? 13:???? struct list_head? pwqlist;? //雙向鏈表,保存著被監視文件的等待隊列,功能類似于select/poll中的poll_table 14:? 15:???? struct eventpoll? *ep;????? //該項屬于哪個主結構體(多個epitm從屬于一個eventpoll) 16:? 17:???? struct list_head? fllink;?? //雙向鏈表,用來鏈接被監視的文件描述符對應的struct file。因為file里有f_ep_link,用來保存所有監視這個文件的epoll節點 18:? 19:???? struct epoll_event? event;? //注冊的感興趣的事件,也就是用戶空間的epoll_event 20:? 21: }

?

而每個epoll fd(epfd)對應的主要數據結構為:

1: struct eventpoll 2: { 3:???? spin_lock_t?????? lock;???????????? //對本數據結構的訪問 4:? 5:???? struct mutex????? mtx;????????????? //防止使用時被刪除 6:? 7:???? wait_queue_head_t???? wq;?????????? //sys_epoll_wait() 使用的等待隊列 8:? 9:???? wait_queue_head_t?? poll_wait;????? //file->poll()使用的等待隊列 10:? 11:???? struct list_head??? rdllist;??????? //事件滿足條件的鏈表 12:? 13:???? struct rb_root????? rbr;??????????? //用于管理所有fd的紅黑樹(樹根) 14:? 15:???? struct epitem????? *ovflist;?????? //將事件到達的fd進行鏈接起來發送至用戶空間 16:? 17: } 18:?

?

eventpoll在epoll_create時創建:

1: long sys_epoll_create(int size) 2: { 3:? 4:???? struct eventpoll *ep; 5:? 6:???? ... 7:? 8:???? ep_alloc(&ep); //為ep分配內存并進行初始化 9:? 10: /* 調用anon_inode_getfd 新建一個file instance,也就是epoll可以看成一個文件(匿名文件)。因此我們可以看到epoll_create會返回一個fd。epoll所管理的所有的fd都是放在一個大的結構eventpoll(紅黑樹)中, 11: 將主結構體struct eventpoll *ep放入file->private項中進行保存(sys_epoll_ctl會取用)*/ 12:? 13:? fd = anon_inode_getfd("[eventpoll]", &eventpoll_fops, ep, O_RDWR | (flags & O_CLOEXEC)); 14:? 15:????? return fd; 16:? 17: }

??

其中,ep_alloc(struct?eventpoll **pep)為pep分配內存,并初始化。

其中,上面注冊的操作eventpoll_fops定義如下:?

1: static?const?struct file_operations eventpoll_fops = { 2:? 3:???? .release=? ep_eventpoll_release, 4:? 5:???? .poll??? =? ep_eventpoll_poll, 6:? 7: };

??

這樣說來,內核中維護了一棵紅黑樹,大致的結構如下:?

??

?

接著是epoll_ctl函數(省略了出錯檢查等代碼):

1: asmlinkage long sys_epoll_ctl(int epfd,int op,int fd,struct epoll_event __user *event) { 2:? 3:??? int error; 4:? 5:??? struct file *file,*tfile; 6:? 7:??? struct eventpoll *ep; 8:? 9:??? struct epoll_event epds; 10:? 11:? 12:? 13:??? error = -FAULT; 14:? 15:??? //判斷參數的合法性,將 __user *event 復制給 epds。 16:? 17:??? if(ep_op_has_event(op) && copy_from_user(&epds,event,sizeof(struct epoll_event))) 18:? 19:??????????? goto error_return; //省略跳轉到的代碼 20:? 21:? 22:? 23:??? file? = fget (epfd); // epoll fd 對應的文件對象 24:? 25:??? tfile = fget(fd);??? // fd 對應的文件對象 26:? 27:? 28:? 29:??? //在create時存入進去的(anon_inode_getfd),現在取用。 30:? 31:??? ep = file->private->data; 32:? 33:? 34:? 35:??? mutex_lock(&ep->mtx); 36:? 37:? 38:? 39:??? //防止重復添加(在ep的紅黑樹中查找是否已經存在這個fd) 40:? 41:??? epi = epi_find(ep,tfile,fd); 42:? 43:? 44:? 45:??? switch(op) 46:? 47:??? { 48:? 49:?????? ... 50:? 51:??????? case EPOLL_CTL_ADD:? //增加監聽一個fd 52:? 53:??????????? if(!epi) 54:? 55:??????????? { 56:? 57:??????????????? epds.events |= EPOLLERR | POLLHUP;???? //默認包含POLLERR和POLLHUP事件 58:? 59:??????????????? error = ep_insert(ep,&epds,tfile,fd);? //在ep的紅黑樹中插入這個fd對應的epitm結構體。 60:? 61:??????????? } else? //重復添加(在ep的紅黑樹中查找已經存在這個fd)。 62:? 63:??????????????? error = -EEXIST; 64:? 65:??????????? break; 66:? 67:??????? ... 68:? 69:??? } 70:? 71:??? return error; 72:? 73:? 74:?

?

ep_insert的實現如下:

1: static?int ep_insert(struct eventpoll *ep, struct epoll_event *event, struct file *tfile, int fd) 2:? 3: { 4:? 5:??? int error ,revents,pwake = 0; 6:? 7:??? unsigned?long flags ; 8:? 9:??? struct epitem *epi; 10:? 11:??? /* 12: 13: ????? struct ep_queue{ 14: 15: ???????? poll_table pt; 16: 17: ???????? struct epitem *epi; 18: 19: ????? }?? */ 20:? 21:? 22:? 23:??? struct ep_pqueue epq; 24:? 25:? 26:? 27:??? //分配一個epitem結構體來保存每個加入的fd 28:? 29:??? if(!(epi = kmem_cache_alloc(epi_cache,GFP_KERNEL))) 30:? 31:?????? goto error_return; 32:? 33:??? //初始化該結構體 34:? 35:??? ep_rb_initnode(&epi->rbn); 36:? 37:??? INIT_LIST_HEAD(&epi->rdllink); 38:? 39:??? INIT_LIST_HEAD(&epi->fllink); 40:? 41:??? INIT_LIST_HEAD(&epi->pwqlist); 42:? 43:??? epi->ep = ep; 44:? 45:??? ep_set_ffd(&epi->ffd,tfile,fd); 46:? 47:??? epi->event = *event; 48:? 49:??? epi->nwait = 0; 50:? 51:??? epi->next = EP_UNACTIVE_PTR; 52:? 53:? 54:? 55:??? epq.epi = epi; 56:? 57:??? //安裝poll回調函數 58:? 59:??? init_poll_funcptr(&epq.pt, ep_ptable_queue_proc ); 60:? 61:??? /* 調用poll函數來獲取當前事件位,其實是利用它來調用注冊函數ep_ptable_queue_proc(poll_wait中調用)。 62: 63: ?????? 如果fd是套接字,f_op為socket_file_ops,poll函數是 64: 65: ?????? sock_poll()。如果是TCP套接字的話,進而會調用 66: 67: ?????? 到tcp_poll()函數。此處調用poll函數查看當前 68: 69: ?????? 文件描述符的狀態,存儲在revents中。 70: 71: ?????? 在poll的處理函數(tcp_poll())中,會調用sock_poll_wait(), 72: 73: ?????? 在sock_poll_wait()中會調用到epq.pt.qproc指向的函數, 74: 75: ?????? 也就是ep_ptable_queue_proc()。? */? 76:? 77:? 78:? 79:??? revents = tfile->f_op->poll(tfile, &epq.pt); 80:? 81:? 82:? 83:??? spin_lock(&tfile->f_ep_lock); 84:? 85:??? list_add_tail(&epi->fllink,&tfile->f_ep_lilnks); 86:? 87:??? spin_unlock(&tfile->f_ep_lock); 88:? 89:? 90:? 91:??? ep_rbtree_insert(ep,epi); //將該epi插入到ep的紅黑樹中 92:? 93:? 94:? 95:??? spin_lock_irqsave(&ep->lock,flags); 96:? 97:? 98:? 99: //? revents & event->events:剛才fop->poll的返回值中標識的事件有用戶event關心的事件發生。 100:? 101: // !ep_is_linked(&epi->rdllink):epi的ready隊列中有數據。ep_is_linked用于判斷隊列是否為空。 102:? 103: /*? 如果要監視的文件狀態已經就緒并且還沒有加入到就緒隊列中,則將當前的 104: 105: ??? epitem加入到就緒隊列中.如果有進程正在等待該文件的狀態就緒,則 106: 107: ??? 喚醒一個等待的進程。? */? 108:? 109:? 110:? 111: if((revents & event->events) && !ep_is_linked(&epi->rdllink)) { 112:? 113:?????? list_add_tail(&epi->rdllink,&ep->rdllist); //將當前epi插入到ep->ready隊列中。 114:? 115: /* 如果有進程正在等待文件的狀態就緒, 116: 117: 也就是調用epoll_wait睡眠的進程正在等待, 118: 119: 則喚醒一個等待進程。 120: 121: waitqueue_active(q) 等待隊列q中有等待的進程返回1,否則返回0。 122: 123: */ 124:? 125:? 126:? 127:?????? if(waitqueue_active(&ep->wq)) 128:? 129:????????? __wake_up_locked(&ep->wq,TAKS_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE); 130:? 131:? 132:? 133: /*? 如果有進程等待eventpoll文件本身(???)的事件就緒, 134: 135: ?????????? 則增加臨時變量pwake的值,pwake的值不為0時, 136: 137: ?????????? 在釋放lock后,會喚醒等待進程。 */? 138:? 139:? 140:? 141:?????? if(waitqueue_active(&ep->poll_wait)) 142:? 143:????????? pwake++; 144:? 145:??? } 146:? 147:??? spin_unlock_irqrestore(&ep->lock,flags); 148:? 149:?? 150:? 151:? 152:? 153: if(pwake) 154:? 155:?????? ep_poll_safewake(&psw,&ep->poll_wait);//喚醒等待eventpoll文件狀態就緒的進程 156:? 157:??? return 0; 158:? 159: }

?

init_poll_funcptr(&epq.pt,?ep_ptable_queue_proc);?

revents = tfile->f_op->poll(tfile, &epq.pt);?

這兩個函數將ep_ptable_queue_proc注冊到epq.pt中的qproc。?

??

1: typedef?struct poll_table_struct { 2:? 3: poll_queue_proc qproc; 4:? 5: unsigned?long key; 6:? 7: }poll_table;

執行f_op->poll(tfile, &epq.pt)時,XXX_poll(tfile, &epq.pt)函數會執行poll_wait(),poll_wait()會調用epq.pt.qproc函數,即ep_ptable_queue_proc。

ep_ptable_queue_proc函數如下:?

1: /*? 在文件操作中的poll函數中調用,將epoll的回調函數加入到目標文件的喚醒隊列中。 2: 3: ??? 如果監視的文件是套接字,參數whead則是sock結構的sk_sleep成員的地址。? */ 4:? 5: static?void ep_ptable_queue_proc(struct file *file, wait_queue_head_t *whead, poll_table *pt) { 6:? 7: /* struct ep_queue{ 8: 9: ???????? poll_table pt; 10: 11: ???????? struct epitem *epi; 12: 13: ????? } */ 14:? 15:???? struct epitem *epi = ep_item_from_epqueue(pt); //pt獲取struct ep_queue的epi字段。 16:? 17:???? struct eppoll_entry *pwq; 18:? 19:? 20:? 21:???? if (epi->nwait >= 0 && (pwq = kmem_cache_alloc(pwq_cache, GFP_KERNEL))) { 22:? 23:???????? init_waitqueue_func_entry(&pwq->wait, ep_poll_callback); 24:? 25:???????? pwq->whead = whead; 26:? 27:???????? pwq->base = epi; 28:? 29:???????? add_wait_queue(whead, &pwq->wait); 30:? 31:???????? list_add_tail(&pwq->llink, &epi->pwqlist); 32:? 33:???????? epi->nwait++; 34:? 35:???? } else { 36:? 37:???????? /* We have to signal that an error occurred */ 38:? 39:???????? /* 40: 41: ???????? * 如果分配內存失敗,則將nwait置為-1,表示 42: 43: ???????? * 發生錯誤,即內存分配失敗,或者已發生錯誤 44: 45: ???????? */ 46:? 47:???????? epi->nwait = -1; 48:? 49:???? } 50:? 51: }

?

其中struct?eppoll_entry定義如下:

1: struct eppoll_entry { 2:? 3: struct list_head llink; 4:? 5: struct epitem *base; 6:? 7: wait_queue_t wait; 8:? 9: wait_queue_head_t *whead; 10:? 11: };

?

ep_ptable_queue_proc 函數完成 epitem 加入到特定文件的wait隊列任務。?

ep_ptable_queue_proc有三個參數:?

struct?file *file; 該fd對應的文件對象?

wait_queue_head_t *whead; 該fd對應的設備等待隊列(同select中的mydev->wait_address)?

poll_table *pt; f_op->poll(tfile, &epq.pt)中的epq.pt?

在ep_ptable_queue_proc函數中,引入了另外一個非常重要的數據結構eppoll_entry。eppoll_entry主要完成epitem和epitem事件發生時的callback(ep_poll_callback)函數之間的關聯。首先將eppoll_entry的whead指向fd的設備等待隊列(同select中的wait_address),然后初始化eppoll_entry的base變量指向epitem,最后通過add_wait_queue將epoll_entry掛載到fd的設備等待隊列上。完成這個動作后,epoll_entry已經被掛載到fd的設備等待隊列。

??

由于ep_ptable_queue_proc函數設置了等待隊列的ep_poll_callback回調函數。所以在設備硬件數據到來時,硬件中斷處理函數中會喚醒該等待隊列上等待的進程時,會調用喚醒函數ep_poll_callback

??

1: static?int ep_poll_callback(wait_queue_t *wait, unsigned mode, int sync, void *key) { 2:? 3:??? int pwake = 0; 4:? 5:??? unsigned?long flags; 6:? 7:??? struct epitem *epi = ep_item_from_wait(wait); 8:? 9:??? struct eventpoll *ep = epi->ep; 10:? 11:? 12:? 13:??? spin_lock_irqsave(&ep->lock, flags); 14:? 15:??? //判斷注冊的感興趣事件 16:? 17: //#define EP_PRIVATE_BITS? (EPOLLONESHOT | EPOLLET) 18:? 19: //有非EPOLLONESHONT或EPOLLET事件 20:? 21:??? if (!(epi->event.events & ~EP_PRIVATE_BITS)) 22:? 23:?????? goto out_unlock; 24:? 25:? 26:? 27:??? if (unlikely(ep->ovflist != EP_UNACTIVE_PTR)) { 28:? 29:?????? if (epi->next == EP_UNACTIVE_PTR) { 30:? 31:????????? epi->next = ep->ovflist; 32:? 33:????????? ep->ovflist = epi; 34:? 35:?????? } 36:? 37:?????? goto out_unlock; 38:? 39:??? } 40:? 41:? 42:? 43:??? if (ep_is_linked(&epi->rdllink)) 44:? 45:?????? goto is_linked; 46:? 47:???? //***關鍵***,將該fd加入到epoll監聽的就緒鏈表中 48:? 49:??? list_add_tail(&epi->rdllink, &ep->rdllist); 50:? 51:??? //喚醒調用epoll_wait()函數時睡眠的進程。用戶層epoll_wait(...) 超時前返回。 52:? 53: if (waitqueue_active(&ep->wq)) 54:? 55:?????? __wake_up_locked(&ep->wq, TASK_UNINTERRUPTIBLE | TASK_INTERRUPTIBLE); 56:? 57:??? if (waitqueue_active(&ep->poll_wait)) 58:? 59:?????? pwake++; 60:? 61:??? out_unlock: spin_unlock_irqrestore(&ep->lock, flags); 62:? 63:??? if (pwake) 64:? 65:?????? ep_poll_safewake(&psw, &ep->poll_wait); 66:? 67:??? return 1; 68:? 69: }

?

所以ep_poll_callback函數主要的功能是將被監視文件的等待事件就緒時,將文件對應的epitem實例添加到就緒隊列中,當用戶調用epoll_wait()時,內核會將就緒隊列中的事件報告給用戶。

epoll_wait實現如下:?

1: SYSCALL_DEFINE4(epoll_wait, int, epfd, struct epoll_event __user *, events, int, maxevents, int, timeout)? { 2:? 3:??? int error; 4:? 5:??? struct file *file; 6:? 7:??? struct eventpoll *ep; 8:? 9:???? /* 檢查maxevents參數。 */ 10:? 11:??? if (maxevents <= 0 || maxevents > EP_MAX_EVENTS) 12:? 13:?????? return -EINVAL; 14:? 15:???? /* 檢查用戶空間傳入的events指向的內存是否可寫。參見__range_not_ok()。 */ 16:? 17:??? if (!access_ok(VERIFY_WRITE, events, maxevents * sizeof(struct epoll_event))) { 18:? 19:?????? error = -EFAULT; 20:? 21:?????? goto error_return; 22:? 23:??? } 24:? 25:???? /* 獲取epfd對應的eventpoll文件的file實例,file結構是在epoll_create中創建。 */ 26:? 27:??? error = -EBADF; 28:? 29:??? file = fget(epfd); 30:? 31:??? if (!file) 32:? 33:?????? goto error_return; 34:? 35:???? /* 通過檢查epfd對應的文件操作是不是eventpoll_fops 來判斷epfd是否是一個eventpoll文件。如果不是則返回EINVAL錯誤。 */ 36:? 37:??? error = -EINVAL; 38:? 39:??? if (!is_file_epoll(file)) 40:? 41:?????? goto error_fput; 42:? 43:???? /* At this point it is safe to assume that the "private_data" contains? */ 44:? 45:??? ep = file->private_data; 46:? 47:???? /* Time to fish for events ... */ 48:? 49:??? error = ep_poll(ep, events, maxevents, timeout); 50:? 51:???? error_fput: 52:? 53:??? fput(file); 54:? 55: error_return: 56:? 57:??? return error; 58:? 59: } 60:? 61:? 62:? 63: epoll_wait調用ep_poll,ep_poll實現如下: 64:? 65:? static?int ep_poll(struct eventpoll *ep, struct epoll_event __user *events, int maxevents, long timeout) { 66:? 67:???? int res, eavail; 68:? 69:??? unsigned?long flags; 70:? 71:??? long jtimeout; 72:? 73:??? wait_queue_t wait; 74:? 75:???? /* timeout是以毫秒為單位,這里是要轉換為jiffies時間。這里加上999(即1000-1),是為了向上取整。 */ 76:? 77:??? jtimeout = (timeout < 0 || timeout >= EP_MAX_MSTIMEO) ?MAX_SCHEDULE_TIMEOUT : (timeout * HZ + 999) / 1000; 78:? 79:? retry: 80:? 81:??? spin_lock_irqsave(&ep->lock, flags); 82:? 83:???? res = 0; 84:? 85:??? if (list_empty(&ep->rdllist)) { 86:? 87:?????? /* 沒有事件,所以需要睡眠。當有事件到來時,睡眠會被ep_poll_callback函數喚醒。*/ 88:? 89:?????? init_waitqueue_entry(&wait, current); //將current進程放在wait這個等待隊列中。 90:? 91:?????? wait.flags |= WQ_FLAG_EXCLUSIVE; 92:? 93:?????? /* 將當前進程加入到eventpoll的等待隊列中,等待文件狀態就緒或直到超時,或被信號中斷。 */ 94:? 95:?????? __add_wait_queue(&ep->wq, &wait); 96:? 97:??????? for (;;) { 98:? 99:????????? /* 執行ep_poll_callback()喚醒時應當需要將當前進程喚醒,所以當前進程狀態應該為“可喚醒”TASK_INTERRUPTIBLE? */ 100:? 101:????????? set_current_state(TASK_INTERRUPTIBLE); 102:? 103:????????? /* 如果就緒隊列不為空,也就是說已經有文件的狀態就緒或者超時,則退出循環。*/ 104:? 105:????????? if (!list_empty(&ep->rdllist) || !jtimeout) 106:? 107:???????????? break; 108:? 109:????????? /* 如果當前進程接收到信號,則退出循環,返回EINTR錯誤 */ 110:? 111:????????? if (signal_pending(current)) { 112:? 113:???????????? res = -EINTR; 114:? 115:???????????? break; 116:? 117:????????? } 118:? 119:?????????? spin_unlock_irqrestore(&ep->lock, flags); 120:? 121:????????? /* 主動讓出處理器,等待ep_poll_callback()將當前進程喚醒或者超時,返回值是剩余的時間。 122: 123: 從這里開始當前進程會進入睡眠狀態,直到某些文件的狀態就緒或者超時。 124: 125: 當文件狀態就緒時,eventpoll的回調函數ep_poll_callback()會喚醒在ep->wq指向的等待隊列中的進程。*/ 126:? 127:????????? jtimeout = schedule_timeout(jtimeout); 128:? 129:????????? spin_lock_irqsave(&ep->lock, flags); 130:? 131:?????? } 132:? 133:?????? __remove_wait_queue(&ep->wq, &wait); 134:? 135:??????? set_current_state(TASK_RUNNING); 136:? 137:??? } 138:? 139:???? /* ep->ovflist鏈表存儲的向用戶傳遞事件時暫存就緒的文件。 140: 141: ??? * 所以不管是就緒隊列ep->rdllist不為空,或者ep->ovflist不等于 142: 143: ??? * EP_UNACTIVE_PTR,都有可能現在已經有文件的狀態就緒。 144: 145: ??? * ep->ovflist不等于EP_UNACTIVE_PTR有兩種情況,一種是NULL,此時 146: 147: ??? * 可能正在向用戶傳遞事件,不一定就有文件狀態就緒, 148: 149: ??? * 一種情況時不為NULL,此時可以肯定有文件狀態就緒, 150: 151: ??? * 參見ep_send_events()。 152: 153: ??? */ 154:? 155:??? eavail = !list_empty(&ep->rdllist) || ep->ovflist != EP_UNACTIVE_PTR; 156:? 157:???? spin_unlock_irqrestore(&ep->lock, flags); 158:? 159:???? /* Try to transfer events to user space. In case we get 0 events and there's still timeout left over, we go trying again in search of more luck. */ 160:? 161:??? /* 如果沒有被信號中斷,并且有事件就緒,但是沒有獲取到事件(有可能被其他進程獲取到了),并且沒有超時,則跳轉到retry標簽處,重新等待文件狀態就緒。 */ 162:? 163:??? if (!res && eavail && !(res = ep_send_events(ep, events, maxevents)) && jtimeout) 164:? 165:?????? goto retry; 166:? 167:???? /* 返回獲取到的事件的個數或者錯誤碼 */ 168:? 169:??? return res; 170:? 171: }

?

?

ep_send_events函數向用戶空間發送就緒事件。?

ep_send_events()函數將用戶傳入的內存簡單封裝到ep_send_events_data結構中,然后調用ep_scan_ready_list() 將就緒隊列中的事件傳入用戶空間的內存。

用戶空間訪問這個結果,進行處理。?

?

?

7.參考

?

1.http://www.cnblogs.com/apprentice89/p/3234677.html

2.http://www.cnblogs.com/apprentice89/archive/2013/05/06/3063039.html


總結

以上是生活随笔為你收集整理的Epoll详解及源码分析的全部內容,希望文章能夠幫你解決所遇到的問題。

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

精品欧美一区二区三区久久久 | 人人妻人人澡人人爽人人精品浪潮 | 国产激情无码一区二区app | 色婷婷av一区二区三区之红樱桃 | 成人精品视频一区二区三区尤物 | 色欲综合久久中文字幕网 | 亚洲精品综合一区二区三区在线 | 99久久人妻精品免费二区 | 亚洲色欲久久久综合网东京热 | 亚洲中文字幕无码一久久区 | 2020最新国产自产精品 | 美女黄网站人色视频免费国产 | 国产亚洲精品久久久久久久久动漫 | 国产性猛交╳xxx乱大交 国产精品久久久久久无码 欧洲欧美人成视频在线 | 中文毛片无遮挡高清免费 | 日本丰满熟妇videos | 亚洲欧洲日本综合aⅴ在线 | 国产精品香蕉在线观看 | 欧美人与牲动交xxxx | 未满小14洗澡无码视频网站 | 国产偷抇久久精品a片69 | 国产免费观看黄av片 | 亚洲中文字幕在线观看 | 久久久av男人的天堂 | 亚洲国产综合无码一区 | 欧美兽交xxxx×视频 | 亚洲码国产精品高潮在线 | 人人爽人人澡人人高潮 | 久久亚洲精品中文字幕无男同 | 国产一区二区三区精品视频 | 内射老妇bbwx0c0ck | 久久综合给久久狠狠97色 | 在线天堂新版最新版在线8 | 无码吃奶揉捏奶头高潮视频 | www国产精品内射老师 | 亚洲精品国偷拍自产在线麻豆 | 亚洲精品中文字幕久久久久 | 国产疯狂伦交大片 | 国产卡一卡二卡三 | 色婷婷香蕉在线一区二区 | 蜜桃臀无码内射一区二区三区 | 老子影院午夜伦不卡 | 无码人妻久久一区二区三区不卡 | aⅴ亚洲 日韩 色 图网站 播放 | 欧美成人高清在线播放 | 欧美日韩视频无码一区二区三 | 精品国偷自产在线 | 国产情侣作爱视频免费观看 | aⅴ亚洲 日韩 色 图网站 播放 | 少妇无套内谢久久久久 | 一本久道高清无码视频 | 国产在线无码精品电影网 | 中文亚洲成a人片在线观看 | 亚洲欧洲日本综合aⅴ在线 | 亚洲成a人片在线观看无码 | 精品厕所偷拍各类美女tp嘘嘘 | 一本久久伊人热热精品中文字幕 | 少妇被黑人到高潮喷出白浆 | 亚洲精品午夜无码电影网 | 精品国产精品久久一区免费式 | 欧美色就是色 | 国产亚洲精品久久久闺蜜 | 无码av免费一区二区三区试看 | 国产精品.xx视频.xxtv | 国产偷抇久久精品a片69 | 亚洲a无码综合a国产av中文 | 久久久av男人的天堂 | 色狠狠av一区二区三区 | 国产精品欧美成人 | 国产偷国产偷精品高清尤物 | 欧美丰满熟妇xxxx性ppx人交 | 成人无码精品一区二区三区 | 午夜嘿嘿嘿影院 | 无码人妻丰满熟妇区五十路百度 | 丰满少妇熟乱xxxxx视频 | 一本色道婷婷久久欧美 | 精品夜夜澡人妻无码av蜜桃 | 99久久精品日本一区二区免费 | 日本欧美一区二区三区乱码 | 国产超级va在线观看视频 | 97夜夜澡人人爽人人喊中国片 | 巨爆乳无码视频在线观看 | 亚洲无人区一区二区三区 | 特黄特色大片免费播放器图片 | 久久99精品久久久久婷婷 | 国产农村妇女高潮大叫 | 男女性色大片免费网站 | 中文字幕无码热在线视频 | 狂野欧美性猛xxxx乱大交 | 日韩精品一区二区av在线 | 欧美喷潮久久久xxxxx | 99久久精品日本一区二区免费 | 中文字幕无码人妻少妇免费 | 国产成人无码av一区二区 | 中文精品久久久久人妻不卡 | 国产亚洲日韩欧美另类第八页 | 波多野结衣av在线观看 | 图片区 小说区 区 亚洲五月 | 东京热无码av男人的天堂 | 欧美丰满老熟妇xxxxx性 | 性做久久久久久久久 | 欧美性色19p | 国产精品第一区揄拍无码 | 久久99精品国产麻豆 | 又大又硬又爽免费视频 | 中文字幕无码视频专区 | 中文毛片无遮挡高清免费 | 日产精品高潮呻吟av久久 | 天堂无码人妻精品一区二区三区 | 国产三级精品三级男人的天堂 | 捆绑白丝粉色jk震动捧喷白浆 | 国产精品办公室沙发 | 成年女人永久免费看片 | 高潮毛片无遮挡高清免费视频 | 国产在线精品一区二区高清不卡 | 黑森林福利视频导航 | 国内少妇偷人精品视频免费 | 女人被爽到呻吟gif动态图视看 | 东京一本一道一二三区 | 国产黑色丝袜在线播放 | 亚洲另类伦春色综合小说 | 亚洲国产成人av在线观看 | 噜噜噜亚洲色成人网站 | 纯爱无遮挡h肉动漫在线播放 | 国产成人精品无码播放 | 在线观看国产午夜福利片 | 性欧美熟妇videofreesex | 人人妻人人澡人人爽人人精品 | 中文字幕无码日韩专区 | 亚洲国产精品毛片av不卡在线 | 日本乱偷人妻中文字幕 | 欧美国产亚洲日韩在线二区 | 爆乳一区二区三区无码 | 精品少妇爆乳无码av无码专区 | 亚洲色欲色欲欲www在线 | 又大又硬又黄的免费视频 | 亚洲精品鲁一鲁一区二区三区 | 亚洲精品国产品国语在线观看 | 国产内射爽爽大片视频社区在线 | 欧美三级a做爰在线观看 | www一区二区www免费 | 高清无码午夜福利视频 | 午夜福利不卡在线视频 | 高潮喷水的毛片 | 国产又爽又猛又粗的视频a片 | 亚洲性无码av中文字幕 | aⅴ在线视频男人的天堂 | 国产激情精品一区二区三区 | 一区二区三区高清视频一 | 六月丁香婷婷色狠狠久久 | 色 综合 欧美 亚洲 国产 | 色窝窝无码一区二区三区色欲 | 97无码免费人妻超级碰碰夜夜 | 免费国产黄网站在线观看 | 亚洲最大成人网站 | 亚洲 日韩 欧美 成人 在线观看 | 正在播放东北夫妻内射 | а√天堂www在线天堂小说 | 国产凸凹视频一区二区 | 四虎国产精品一区二区 | 丰满妇女强制高潮18xxxx | 人人妻人人藻人人爽欧美一区 | 精品人妻中文字幕有码在线 | 久久国产精品_国产精品 | 狠狠cao日日穞夜夜穞av | 少妇太爽了在线观看 | 无码av免费一区二区三区试看 | 麻豆精产国品 | 国产精品va在线观看无码 | 精品国产av色一区二区深夜久久 | 天天做天天爱天天爽综合网 | 97久久精品无码一区二区 | 精品aⅴ一区二区三区 | 久久99久久99精品中文字幕 | 精品无码一区二区三区的天堂 | 国产亚洲精品久久久闺蜜 | 蜜桃无码一区二区三区 | v一区无码内射国产 | 国产精品手机免费 | 国产成人精品久久亚洲高清不卡 | 婷婷五月综合缴情在线视频 | 亚洲 a v无 码免 费 成 人 a v | 狠狠色噜噜狠狠狠狠7777米奇 | 午夜无码人妻av大片色欲 | 欧美熟妇另类久久久久久多毛 | 国产特级毛片aaaaaa高潮流水 | 欧美人与禽zoz0性伦交 | 国产综合久久久久鬼色 | 少妇人妻大乳在线视频 | 欧美成人午夜精品久久久 | 精品厕所偷拍各类美女tp嘘嘘 | 人妻aⅴ无码一区二区三区 | 国产色视频一区二区三区 | 99riav国产精品视频 | 亚洲熟悉妇女xxx妇女av | 玩弄少妇高潮ⅹxxxyw | 奇米影视888欧美在线观看 | www国产亚洲精品久久网站 | 久久天天躁夜夜躁狠狠 | 人妻体内射精一区二区三四 | av人摸人人人澡人人超碰下载 | 精品无码国产一区二区三区av | 亚洲精品一区二区三区大桥未久 | 少妇性l交大片 | 精品久久久无码中文字幕 | 久久婷婷五月综合色国产香蕉 | 色综合久久网 | 久久99精品国产麻豆蜜芽 | 日本熟妇人妻xxxxx人hd | 日韩在线不卡免费视频一区 | 色婷婷综合中文久久一本 | 成 人 免费观看网站 | 精品国产成人一区二区三区 | 国内精品人妻无码久久久影院 | 377p欧洲日本亚洲大胆 | 国产香蕉尹人视频在线 | 久久精品国产99久久6动漫 | 国产亚洲精品久久久久久大师 | √天堂中文官网8在线 | 国产精品亚洲五月天高清 | 国产真实伦对白全集 | 午夜丰满少妇性开放视频 | 亚洲爆乳大丰满无码专区 | 一本色道婷婷久久欧美 | 在线 国产 欧美 亚洲 天堂 | 中文字幕无码日韩欧毛 | 香蕉久久久久久av成人 | 欧美老人巨大xxxx做受 | 动漫av一区二区在线观看 | 欧洲vodafone精品性 | 欧美激情一区二区三区成人 | 亚无码乱人伦一区二区 | 亚洲国产欧美国产综合一区 | 国内少妇偷人精品视频 | 性欧美videos高清精品 | 欧美日韩亚洲国产精品 | 亚洲国产精品毛片av不卡在线 | 日本一区二区三区免费播放 | 久久亚洲中文字幕无码 | 国产成人无码av片在线观看不卡 | 兔费看少妇性l交大片免费 | 午夜精品久久久久久久久 | 日日天日日夜日日摸 | 51国偷自产一区二区三区 | 亚洲日韩乱码中文无码蜜桃臀网站 | 久久久久久a亚洲欧洲av冫 | 人人爽人人爽人人片av亚洲 | 中文字幕人妻丝袜二区 | 精品人妻人人做人人爽夜夜爽 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 老熟女乱子伦 | 中文字幕无码免费久久9一区9 | 亚洲理论电影在线观看 | 人妻中文无码久热丝袜 | 久久天天躁夜夜躁狠狠 | 国产精品99爱免费视频 | 欧美 日韩 亚洲 在线 | 色五月丁香五月综合五月 | 无码人妻丰满熟妇区毛片18 | 人妻夜夜爽天天爽三区 | 国产在线精品一区二区三区直播 | 国产热a欧美热a在线视频 | 国产成人无码午夜视频在线观看 | 成在人线av无码免费 | 国产精品永久免费视频 | 国产亚洲精品久久久久久大师 | 日产国产精品亚洲系列 | 曰韩少妇内射免费播放 | 少妇无码av无码专区在线观看 | 日本一卡2卡3卡四卡精品网站 | av人摸人人人澡人人超碰下载 | 色综合久久久无码网中文 | 亚洲中文字幕无码一久久区 | 免费看少妇作爱视频 | 日韩人妻无码一区二区三区久久99 | 国产精品高潮呻吟av久久 | 国产亚洲精品久久久闺蜜 | 麻豆av传媒蜜桃天美传媒 | 日本熟妇乱子伦xxxx | 十八禁视频网站在线观看 | 久久国产精品偷任你爽任你 | 国产亚洲精品久久久久久久久动漫 | 国产亚洲精品久久久ai换 | 亚洲色大成网站www | 亚洲欧美综合区丁香五月小说 | 亚洲七七久久桃花影院 | av在线亚洲欧洲日产一区二区 | 午夜成人1000部免费视频 | 国产亚洲欧美在线专区 | 一本久久伊人热热精品中文字幕 | 国产精品久久久久7777 | 亚洲欧美日韩成人高清在线一区 | 四虎永久在线精品免费网址 | 久在线观看福利视频 | 国产在线一区二区三区四区五区 | 亚洲中文字幕va福利 | 中文字幕av日韩精品一区二区 | 日韩av激情在线观看 | 国产口爆吞精在线视频 | 图片区 小说区 区 亚洲五月 | 色综合久久久无码中文字幕 | 欧洲极品少妇 | 国产艳妇av在线观看果冻传媒 | 奇米影视888欧美在线观看 | 黑人粗大猛烈进出高潮视频 | 天下第一社区视频www日本 | 大屁股大乳丰满人妻 | 欧美人与禽猛交狂配 | 中文字幕无码免费久久9一区9 | 自拍偷自拍亚洲精品10p | 小泽玛莉亚一区二区视频在线 | 欧美丰满熟妇xxxx | 亚洲国产日韩a在线播放 | 亚洲精品一区二区三区在线观看 | 少妇人妻偷人精品无码视频 | 国产麻豆精品精东影业av网站 | 欧美喷潮久久久xxxxx | 对白脏话肉麻粗话av | 九九久久精品国产免费看小说 | 国产香蕉尹人视频在线 | 国产精品无套呻吟在线 | 成人影院yy111111在线观看 | 麻豆国产丝袜白领秘书在线观看 | 未满成年国产在线观看 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 人妻中文无码久热丝袜 | 亚洲欧美综合区丁香五月小说 | 亚洲成a人片在线观看无码 | 大屁股大乳丰满人妻 | 欧美一区二区三区 | 午夜精品一区二区三区在线观看 | 3d动漫精品啪啪一区二区中 | 国产深夜福利视频在线 | 欧美熟妇另类久久久久久不卡 | 人人妻在人人 | 东京热男人av天堂 | 秋霞成人午夜鲁丝一区二区三区 | 搡女人真爽免费视频大全 | 人妻无码久久精品人妻 | 国产成人一区二区三区别 | 国产又粗又硬又大爽黄老大爷视 | 国产人妻精品一区二区三区不卡 | 欧美成人午夜精品久久久 | 国产精品手机免费 | 无码国产乱人伦偷精品视频 | 国产精品久久久久久久影院 | 大肉大捧一进一出好爽视频 | 久久人妻内射无码一区三区 | 婷婷丁香五月天综合东京热 | 国产亚av手机在线观看 | 久久精品中文字幕大胸 | 国内精品久久毛片一区二区 | 亚洲欧美精品aaaaaa片 | 成人一区二区免费视频 | 国产亚洲精品久久久久久久 | 国产真实伦对白全集 | 蜜桃无码一区二区三区 | 亚洲成熟女人毛毛耸耸多 | 7777奇米四色成人眼影 | 欧美激情综合亚洲一二区 | 亚洲国产欧美在线成人 | 欧美精品免费观看二区 | 午夜不卡av免费 一本久久a久久精品vr综合 | 全黄性性激高免费视频 | 欧美人与动性行为视频 | 国产精品国产自线拍免费软件 | 婷婷丁香五月天综合东京热 | 无码吃奶揉捏奶头高潮视频 | 国产精品无码一区二区桃花视频 | 午夜精品一区二区三区在线观看 | 久久天天躁狠狠躁夜夜免费观看 | 丰满人妻一区二区三区免费视频 | 亚洲s色大片在线观看 | 图片区 小说区 区 亚洲五月 | 中文字幕色婷婷在线视频 | 午夜精品一区二区三区的区别 | 少妇激情av一区二区 | 妺妺窝人体色www婷婷 | 色综合久久久无码网中文 | 久久人人爽人人爽人人片ⅴ | 激情内射日本一区二区三区 | 欧美国产亚洲日韩在线二区 | 东京一本一道一二三区 | 久久无码中文字幕免费影院蜜桃 | 国产av无码专区亚洲awww | 欧美国产日韩久久mv | 人妻少妇精品无码专区动漫 | 国产精品对白交换视频 | 久久人人爽人人爽人人片av高清 | 伊人久久大香线蕉亚洲 | 少妇无码av无码专区在线观看 | 婷婷色婷婷开心五月四房播播 | 国产成人无码av片在线观看不卡 | 一本久道久久综合婷婷五月 | 曰韩少妇内射免费播放 | 日日鲁鲁鲁夜夜爽爽狠狠 | 无遮挡啪啪摇乳动态图 | 高潮喷水的毛片 | 18精品久久久无码午夜福利 | 女人被爽到呻吟gif动态图视看 | 麻豆果冻传媒2021精品传媒一区下载 | 欧美阿v高清资源不卡在线播放 | 国产女主播喷水视频在线观看 | 一本无码人妻在中文字幕免费 | 亚洲自偷自拍另类第1页 | 国产激情精品一区二区三区 | 欧洲精品码一区二区三区免费看 | 亚洲精品一区二区三区四区五区 | 亚洲精品一区二区三区四区五区 | 亚洲中文字幕久久无码 | 国产成人无码av在线影院 | 欧美三级不卡在线观看 | 日本乱人伦片中文三区 | 在线精品国产一区二区三区 | 高潮喷水的毛片 | 亚洲精品一区二区三区大桥未久 | 亚洲日韩乱码中文无码蜜桃臀网站 | 精品无码国产一区二区三区av | 99久久亚洲精品无码毛片 | 欧美日韩人成综合在线播放 | 天下第一社区视频www日本 | 男人扒开女人内裤强吻桶进去 | 欧美一区二区三区 | 88国产精品欧美一区二区三区 | 少女韩国电视剧在线观看完整 | 成熟妇人a片免费看网站 | 精品国产aⅴ无码一区二区 | 在线成人www免费观看视频 | 亚洲成av人在线观看网址 | 精品无码一区二区三区爱欲 | 性做久久久久久久久 | 人妻与老人中文字幕 | 无套内射视频囯产 | 男人和女人高潮免费网站 | 高潮毛片无遮挡高清免费视频 | 久久精品无码一区二区三区 | 美女极度色诱视频国产 | www国产精品内射老师 | 精品欧美一区二区三区久久久 | 日本精品人妻无码77777 天堂一区人妻无码 | 亚洲色偷偷男人的天堂 | 麻豆av传媒蜜桃天美传媒 | 国产午夜福利亚洲第一 | 久久久www成人免费毛片 | 国产成人无码av一区二区 | 扒开双腿吃奶呻吟做受视频 | 亚洲精品国产品国语在线观看 | 无码人妻黑人中文字幕 | 少妇无套内谢久久久久 | 波多野结衣一区二区三区av免费 | 人妻人人添人妻人人爱 | 国产成人久久精品流白浆 | 在线成人www免费观看视频 | 成人片黄网站色大片免费观看 | 麻豆精产国品 | 午夜成人1000部免费视频 | 国色天香社区在线视频 | 日产国产精品亚洲系列 | 亚洲一区二区三区 | 在线а√天堂中文官网 | 天天做天天爱天天爽综合网 | 中文无码精品a∨在线观看不卡 | 中文字幕亚洲情99在线 | 99久久久国产精品无码免费 | 国产色视频一区二区三区 | 亚洲午夜无码久久 | 日韩av无码一区二区三区 | aⅴ亚洲 日韩 色 图网站 播放 | 成人av无码一区二区三区 | 欧美 丝袜 自拍 制服 另类 | 国产精品毛片一区二区 | 国产av久久久久精东av | 国产一区二区三区精品视频 | 久久aⅴ免费观看 | 国产尤物精品视频 | 99久久精品日本一区二区免费 | 内射巨臀欧美在线视频 | 97夜夜澡人人爽人人喊中国片 | 天堂亚洲免费视频 | 色欲久久久天天天综合网精品 | 无码精品人妻一区二区三区av | 国产超碰人人爽人人做人人添 | 精品水蜜桃久久久久久久 | 少妇高潮喷潮久久久影院 | av人摸人人人澡人人超碰下载 | 人妻少妇精品无码专区动漫 | 日本xxxx色视频在线观看免费 | 一二三四在线观看免费视频 | 少妇久久久久久人妻无码 | 男人的天堂2018无码 | 兔费看少妇性l交大片免费 | 国产国语老龄妇女a片 | 日韩精品乱码av一区二区 | 亚洲国产精品一区二区第一页 | 99久久久无码国产精品免费 | 激情爆乳一区二区三区 | 久久99热只有频精品8 | 无码av岛国片在线播放 | 亚洲日韩乱码中文无码蜜桃臀网站 | 国内精品人妻无码久久久影院 | 色诱久久久久综合网ywww | 人人澡人人透人人爽 | 日日摸天天摸爽爽狠狠97 | 色婷婷av一区二区三区之红樱桃 | 97色伦图片97综合影院 | 国产成人一区二区三区在线观看 | 又粗又大又硬又长又爽 | 2020最新国产自产精品 | 久久精品无码一区二区三区 | 久久99精品国产麻豆蜜芽 | 中文字幕久久久久人妻 | 亚洲码国产精品高潮在线 | 中国大陆精品视频xxxx | 国产后入清纯学生妹 | 67194成是人免费无码 | 草草网站影院白丝内射 | 蜜臀aⅴ国产精品久久久国产老师 | 欧美丰满熟妇xxxx性ppx人交 | 亚洲午夜无码久久 | 国产明星裸体无码xxxx视频 | 日本一卡2卡3卡4卡无卡免费网站 国产一区二区三区影院 | 国产一区二区三区日韩精品 | 国产乱人伦偷精品视频 | 色妞www精品免费视频 | 午夜性刺激在线视频免费 | 亚洲成色在线综合网站 | 亚洲 a v无 码免 费 成 人 a v | 国产精品无套呻吟在线 | 欧美亚洲国产一区二区三区 | 永久免费观看国产裸体美女 | 国产一区二区三区影院 | 国产女主播喷水视频在线观看 | 亚洲人成人无码网www国产 | 亚洲人成网站色7799 | 中文字幕无码热在线视频 | 久久99精品久久久久久动态图 | 日韩人妻无码中文字幕视频 | 国产成人综合色在线观看网站 | 沈阳熟女露脸对白视频 | 日本熟妇人妻xxxxx人hd | 亚无码乱人伦一区二区 | 激情内射日本一区二区三区 | 秋霞特色aa大片 | 亚洲精品一区国产 | 国产乱人伦av在线无码 | 国产精品欧美成人 | 欧洲美熟女乱又伦 | 日韩少妇内射免费播放 | 最新版天堂资源中文官网 | 无码乱肉视频免费大全合集 | 强开小婷嫩苞又嫩又紧视频 | 国产午夜精品一区二区三区嫩草 | 麻豆成人精品国产免费 | 乱中年女人伦av三区 | 国产午夜视频在线观看 | 国产精品美女久久久久av爽李琼 | 亚洲成av人片在线观看无码不卡 | 天堂а√在线地址中文在线 | 亚洲国产一区二区三区在线观看 | 俄罗斯老熟妇色xxxx | 久久精品国产一区二区三区肥胖 | 亚洲va中文字幕无码久久不卡 | 男女猛烈xx00免费视频试看 | 欧美精品免费观看二区 | 少妇人妻偷人精品无码视频 | 一本大道久久东京热无码av | 99久久无码一区人妻 | 国内老熟妇对白xxxxhd | 精品一区二区三区无码免费视频 | 一区二区三区乱码在线 | 欧洲 | 婷婷六月久久综合丁香 | 鲁大师影院在线观看 | 又紧又大又爽精品一区二区 | 成人性做爰aaa片免费看不忠 | 亚洲精品国产精品乱码视色 | 精品一区二区不卡无码av | 亚洲欧美综合区丁香五月小说 | 又大又紧又粉嫩18p少妇 | 性色av无码免费一区二区三区 | 天天拍夜夜添久久精品 | 欧美成人家庭影院 | a片在线免费观看 | 秋霞成人午夜鲁丝一区二区三区 | 成人影院yy111111在线观看 | 四虎永久在线精品免费网址 | 国产亚洲精品久久久久久大师 | 乱码av麻豆丝袜熟女系列 | 少妇无码一区二区二三区 | 又大又紧又粉嫩18p少妇 | 婷婷丁香六月激情综合啪 | 中文字幕无码视频专区 | 中文字幕中文有码在线 | 国产精品igao视频网 | 国产成人无码一二三区视频 | 久久精品人人做人人综合 | 少妇被粗大的猛进出69影院 | 欧美日韩在线亚洲综合国产人 | 天天综合网天天综合色 | 欧美性黑人极品hd | 少妇一晚三次一区二区三区 | 日韩av无码中文无码电影 | 午夜精品久久久久久久 | 日韩无套无码精品 | 宝宝好涨水快流出来免费视频 | 天堂а√在线地址中文在线 | 亚洲国产精品久久人人爱 | 牲欲强的熟妇农村老妇女视频 | 少妇高潮一区二区三区99 | 色综合视频一区二区三区 | 无码人妻丰满熟妇区毛片18 | 少妇无套内谢久久久久 | 久激情内射婷内射蜜桃人妖 | 性做久久久久久久久 | 国产色在线 | 国产 | 国产舌乚八伦偷品w中 | 免费人成在线观看网站 | 亚洲无人区午夜福利码高清完整版 | 欧美性生交活xxxxxdddd | 国产精品久久久午夜夜伦鲁鲁 | 亚洲国产av精品一区二区蜜芽 | 丰满少妇女裸体bbw | 美女黄网站人色视频免费国产 | 亚洲成a人一区二区三区 | 天堂久久天堂av色综合 | 偷窥日本少妇撒尿chinese | 国产精品亚洲а∨无码播放麻豆 | 亚洲国产av精品一区二区蜜芽 | 欧美色就是色 | 久久国产精品精品国产色婷婷 | 好爽又高潮了毛片免费下载 | 午夜丰满少妇性开放视频 | 久久午夜夜伦鲁鲁片无码免费 | 精品国产精品久久一区免费式 | 国产凸凹视频一区二区 | 亚洲男人av天堂午夜在 | 国产精品久久久一区二区三区 | 久久国产精品二国产精品 | 性色欲网站人妻丰满中文久久不卡 | 欧美日韩在线亚洲综合国产人 | 激情人妻另类人妻伦 | 欧美三级不卡在线观看 | 久久国产精品萌白酱免费 | 亚洲 欧美 激情 小说 另类 | 亚洲第一无码av无码专区 | 特级做a爰片毛片免费69 | 强伦人妻一区二区三区视频18 | 大肉大捧一进一出视频出来呀 | 一本大道久久东京热无码av | 亚洲中文无码av永久不收费 | 麻豆果冻传媒2021精品传媒一区下载 | 日日碰狠狠躁久久躁蜜桃 | 久久久精品成人免费观看 | 丰满人妻精品国产99aⅴ | 男女性色大片免费网站 | 老司机亚洲精品影院 | av香港经典三级级 在线 | 精品国产国产综合精品 | 99国产精品白浆在线观看免费 | 俄罗斯老熟妇色xxxx | 乱人伦人妻中文字幕无码久久网 | 国产午夜亚洲精品不卡下载 | 无码乱肉视频免费大全合集 | 一本无码人妻在中文字幕免费 | 熟妇女人妻丰满少妇中文字幕 | 黑人巨大精品欧美黑寡妇 | 国产精品高潮呻吟av久久4虎 | 四十如虎的丰满熟妇啪啪 | 老熟妇乱子伦牲交视频 | 中文无码伦av中文字幕 | 精品夜夜澡人妻无码av蜜桃 | 色综合久久88色综合天天 | 伊人久久大香线蕉午夜 | 无码国内精品人妻少妇 | 国产欧美亚洲精品a | 无码人妻精品一区二区三区下载 | 人人妻人人藻人人爽欧美一区 | 无码一区二区三区在线 | 国产亚洲日韩欧美另类第八页 | 久久国产精品精品国产色婷婷 | 18精品久久久无码午夜福利 | 免费中文字幕日韩欧美 | 亚洲成av人片天堂网无码】 | 成人无码影片精品久久久 | 国产精品久久精品三级 | 亚洲经典千人经典日产 | 无码人中文字幕 | 黑人粗大猛烈进出高潮视频 | 熟女少妇人妻中文字幕 | 荫蒂添的好舒服视频囗交 | 激情人妻另类人妻伦 | 成 人 网 站国产免费观看 | 中文字幕无码日韩专区 | 成人免费无码大片a毛片 | 波多野结衣av一区二区全免费观看 | 夫妻免费无码v看片 | 国产精品-区区久久久狼 | 国产一区二区三区影院 | 免费观看又污又黄的网站 | 天天躁日日躁狠狠躁免费麻豆 | 久久久av男人的天堂 | 人人爽人人澡人人人妻 | 国内精品久久久久久中文字幕 | 国产亚洲精品久久久ai换 | 丝袜足控一区二区三区 | 国产内射爽爽大片视频社区在线 | 男人的天堂2018无码 | 免费国产黄网站在线观看 | 日韩成人一区二区三区在线观看 | 成人试看120秒体验区 | 在线欧美精品一区二区三区 | 色综合视频一区二区三区 | 亚洲国产精品无码一区二区三区 | 亚洲欧美精品伊人久久 | 国产激情精品一区二区三区 | 国产女主播喷水视频在线观看 | 又大又黄又粗又爽的免费视频 | 国产亚洲精品久久久久久大师 | 亚洲aⅴ无码成人网站国产app | 99精品国产综合久久久久五月天 | 亚洲色www成人永久网址 | a在线亚洲男人的天堂 | 国产成人综合色在线观看网站 | 欧美三级不卡在线观看 | 亚洲一区二区三区在线观看网站 | 嫩b人妻精品一区二区三区 | 无码福利日韩神码福利片 | 亚洲精品国产品国语在线观看 | 窝窝午夜理论片影院 | 日韩亚洲欧美精品综合 | 麻豆蜜桃av蜜臀av色欲av | 亚洲精品午夜无码电影网 | 国产成人无码区免费内射一片色欲 | 亚洲精品www久久久 | 久久亚洲精品成人无码 | 九九久久精品国产免费看小说 | 在线播放免费人成毛片乱码 | 女人被爽到呻吟gif动态图视看 | 99久久99久久免费精品蜜桃 | 久久精品中文闷骚内射 | 黑人粗大猛烈进出高潮视频 | 曰韩少妇内射免费播放 | 国产亚洲欧美在线专区 | 国产凸凹视频一区二区 | 日韩av无码中文无码电影 | 夜夜夜高潮夜夜爽夜夜爰爰 | 大地资源网第二页免费观看 | 在线a亚洲视频播放在线观看 | 久久国产精品偷任你爽任你 | 国产明星裸体无码xxxx视频 | 国产精品人人爽人人做我的可爱 | 巨爆乳无码视频在线观看 | 国产精品久久福利网站 | 亚洲 日韩 欧美 成人 在线观看 | 成熟人妻av无码专区 | 国内揄拍国内精品人妻 | 夜夜影院未满十八勿进 | 在线观看国产午夜福利片 | 亚洲综合久久一区二区 | 成年美女黄网站色大免费视频 | 国产午夜无码视频在线观看 | 日韩精品成人一区二区三区 | 图片区 小说区 区 亚洲五月 | 精品久久久中文字幕人妻 | 日韩少妇内射免费播放 | 国产精品久久久久久无码 | 日本熟妇大屁股人妻 | 色欲av亚洲一区无码少妇 | 欧美激情内射喷水高潮 | 中文字幕人妻无码一区二区三区 | av在线亚洲欧洲日产一区二区 | 欧美熟妇另类久久久久久多毛 | 亚洲精品国产品国语在线观看 | 亚洲精品中文字幕乱码 | 久久综合狠狠综合久久综合88 | 内射老妇bbwx0c0ck | 人妻夜夜爽天天爽三区 | 久久亚洲中文字幕无码 | 亚洲 a v无 码免 费 成 人 a v | 亚洲男人av天堂午夜在 | 天干天干啦夜天干天2017 | 成人无码视频在线观看网站 | 麻豆人妻少妇精品无码专区 | 内射巨臀欧美在线视频 | 色综合久久久无码网中文 | 国产亚洲精品久久久久久国模美 | 日本饥渴人妻欲求不满 | 亚洲乱码中文字幕在线 | 狠狠亚洲超碰狼人久久 | 人人爽人人爽人人片av亚洲 | 无码av岛国片在线播放 | 亚洲中文字幕乱码av波多ji | 国产九九九九九九九a片 | 又紧又大又爽精品一区二区 | 亚洲成av人片天堂网无码】 | 国产精品无码一区二区三区不卡 | 18黄暴禁片在线观看 | 99在线 | 亚洲 | 黑人玩弄人妻中文在线 | 搡女人真爽免费视频大全 | 国模大胆一区二区三区 | 免费无码一区二区三区蜜桃大 | 国产精品人人爽人人做我的可爱 | 九一九色国产 | 麻豆国产人妻欲求不满谁演的 | 丰满人妻精品国产99aⅴ | 国产精品手机免费 | 中文字幕人妻无码一区二区三区 | 日本熟妇乱子伦xxxx | 免费看男女做好爽好硬视频 | 亚洲日本va中文字幕 | 国产精品高潮呻吟av久久4虎 | 国产精品99久久精品爆乳 | 久久久久成人片免费观看蜜芽 | 欧美日本日韩 | 国产性生交xxxxx无码 | 伊人久久大香线蕉av一区二区 | 无码人妻丰满熟妇区毛片18 | 日韩精品乱码av一区二区 | 国产午夜亚洲精品不卡下载 | 成人av无码一区二区三区 | 国产欧美亚洲精品a | 久久婷婷五月综合色国产香蕉 | 国产sm调教视频在线观看 | 无码av免费一区二区三区试看 | 亚洲 日韩 欧美 成人 在线观看 | 日韩精品久久久肉伦网站 | 欧美精品无码一区二区三区 | 人人爽人人澡人人人妻 | 女人高潮内射99精品 | 亚洲中文字幕无码一久久区 | 荫蒂添的好舒服视频囗交 | 亚洲欧美中文字幕5发布 | 日本高清一区免费中文视频 | 在线观看国产一区二区三区 | 午夜理论片yy44880影院 | 亚洲成a人一区二区三区 | 欧洲欧美人成视频在线 | 日日橹狠狠爱欧美视频 | 亚洲乱码国产乱码精品精 | 亚洲国产精品毛片av不卡在线 | 55夜色66夜色国产精品视频 | 未满成年国产在线观看 | 亚洲成av人在线观看网址 | аⅴ资源天堂资源库在线 | 蜜臀av在线播放 久久综合激激的五月天 | 秋霞特色aa大片 | 日韩亚洲欧美中文高清在线 | 久久亚洲a片com人成 | 好男人www社区 | 一本久道高清无码视频 | 无码人妻少妇伦在线电影 | 少妇邻居内射在线 | 国产偷自视频区视频 | 欧美丰满老熟妇xxxxx性 | a在线亚洲男人的天堂 | 国产熟妇另类久久久久 | 55夜色66夜色国产精品视频 | 成年美女黄网站色大免费视频 | 亚洲色偷偷男人的天堂 | 中文字幕av无码一区二区三区电影 | 欧美激情一区二区三区成人 | 久久熟妇人妻午夜寂寞影院 | 精品国精品国产自在久国产87 | 亚洲精品一区二区三区四区五区 | 人人妻人人澡人人爽欧美一区九九 | 天天躁日日躁狠狠躁免费麻豆 | 性史性农村dvd毛片 | 天堂在线观看www | 亚洲欧美国产精品久久 | 国产精品亚洲а∨无码播放麻豆 | 久久亚洲日韩精品一区二区三区 | 国内少妇偷人精品视频 | 麻豆国产人妻欲求不满 | 中文字幕日产无线码一区 | 亚洲一区二区观看播放 | 亚洲人成无码网www | 樱花草在线播放免费中文 | 一二三四社区在线中文视频 | 国产人妻精品一区二区三区 | 中文字幕乱码中文乱码51精品 | 国产精品高潮呻吟av久久 | 国模大胆一区二区三区 | 高潮毛片无遮挡高清免费 | 亚洲精品国产品国语在线观看 | 高潮毛片无遮挡高清免费视频 | 午夜精品一区二区三区的区别 | 十八禁视频网站在线观看 | 亚洲精品一区国产 | 亚洲色偷偷偷综合网 | 无码帝国www无码专区色综合 | 精品人人妻人人澡人人爽人人 | 国产口爆吞精在线视频 | 国産精品久久久久久久 | 乌克兰少妇性做爰 | 国产精品亚洲lv粉色 | 双乳奶水饱满少妇呻吟 | 国内精品九九久久久精品 | 亚洲中文字幕av在天堂 | 久久精品女人天堂av免费观看 | 青青青手机频在线观看 | 国产精品亚洲五月天高清 | 免费观看黄网站 | 国产精品国产三级国产专播 | 性生交大片免费看l | 欧美黑人乱大交 | 国产精品亚洲五月天高清 | 中文毛片无遮挡高清免费 | 99麻豆久久久国产精品免费 | 婷婷丁香六月激情综合啪 | 欧美老人巨大xxxx做受 | 日韩无码专区 | 国产无遮挡又黄又爽又色 | 日本一区二区三区免费播放 | 亚洲综合久久一区二区 | 一二三四在线观看免费视频 | 成年美女黄网站色大免费视频 | 激情爆乳一区二区三区 | 丰满人妻一区二区三区免费视频 | 十八禁视频网站在线观看 | 欧美亚洲日韩国产人成在线播放 | 亚洲毛片av日韩av无码 | 国产av一区二区精品久久凹凸 | 国产精品亚洲а∨无码播放麻豆 | 性做久久久久久久免费看 | 亚洲国产精品无码久久久久高潮 | 日本在线高清不卡免费播放 | 亚洲国产一区二区三区在线观看 | 成 人 网 站国产免费观看 | 欧美人与物videos另类 | 欧美日韩一区二区三区自拍 | 毛片内射-百度 | 波多野结衣av一区二区全免费观看 | 性欧美熟妇videofreesex | 国产人妻精品一区二区三区 | 沈阳熟女露脸对白视频 | 啦啦啦www在线观看免费视频 | 十八禁视频网站在线观看 | 日本熟妇乱子伦xxxx | 宝宝好涨水快流出来免费视频 | 国产精品亚洲一区二区三区喷水 | 一区二区三区高清视频一 | 国产明星裸体无码xxxx视频 | 亚洲中文字幕成人无码 | 免费人成在线视频无码 | 国产午夜福利亚洲第一 | 女高中生第一次破苞av | 久久久久久a亚洲欧洲av冫 | 久久久久99精品成人片 | 欧美性黑人极品hd | 亚洲中文字幕无码中文字在线 | 国产成人无码av在线影院 | 97资源共享在线视频 | 亚洲热妇无码av在线播放 | 樱花草在线社区www | 久久久久99精品国产片 | 午夜无码人妻av大片色欲 | 国内精品一区二区三区不卡 | 国产麻豆精品精东影业av网站 | 中文字幕人妻丝袜二区 | 日本精品久久久久中文字幕 | 最近的中文字幕在线看视频 | 日本丰满熟妇videos | 熟妇激情内射com | 国产精品无码一区二区三区不卡 | 中文字幕日产无线码一区 | 丰满人妻被黑人猛烈进入 | 中文字幕 亚洲精品 第1页 | 中国女人内谢69xxxx | 国产一区二区三区日韩精品 | 兔费看少妇性l交大片免费 | 国内精品人妻无码久久久影院蜜桃 | 日本乱偷人妻中文字幕 | 日韩精品成人一区二区三区 | 无码国内精品人妻少妇 | 国产人妻精品一区二区三区 | 亚洲一区二区三区无码久久 | 狂野欧美性猛交免费视频 | 国产艳妇av在线观看果冻传媒 | 日韩无套无码精品 | 欧洲精品码一区二区三区免费看 | 日韩人妻少妇一区二区三区 | 久久亚洲精品成人无码 | 沈阳熟女露脸对白视频 | 久久久www成人免费毛片 | 国产av无码专区亚洲a∨毛片 | 无码av岛国片在线播放 | 国产精品无码一区二区桃花视频 | 日本精品人妻无码77777 天堂一区人妻无码 | 无码av岛国片在线播放 | 亚洲另类伦春色综合小说 | 131美女爱做视频 | 国产精品久久久av久久久 | 国产精品欧美成人 | 亚洲日韩精品欧美一区二区 | 3d动漫精品啪啪一区二区中 | 亚洲中文无码av永久不收费 | 国产亚洲欧美日韩亚洲中文色 | 精品久久久中文字幕人妻 | 丰满肥臀大屁股熟妇激情视频 | 久久aⅴ免费观看 | 亚洲熟妇色xxxxx欧美老妇y | 日韩亚洲欧美精品综合 | 午夜嘿嘿嘿影院 | 扒开双腿吃奶呻吟做受视频 | 国产精品无码永久免费888 | 无码任你躁久久久久久久 | 狂野欧美性猛xxxx乱大交 | 亚洲综合另类小说色区 | 欧美人与动性行为视频 | 亚洲中文字幕在线无码一区二区 | 色综合视频一区二区三区 | 全黄性性激高免费视频 | 亚洲日韩av一区二区三区四区 | 久久人妻内射无码一区三区 | 欧美精品免费观看二区 | 曰韩无码二三区中文字幕 | 免费乱码人妻系列无码专区 | 野外少妇愉情中文字幕 | 无码成人精品区在线观看 | 欧美日韩人成综合在线播放 | 亚洲国产欧美国产综合一区 | 亚洲中文字幕成人无码 | 无码一区二区三区在线 | 老头边吃奶边弄进去呻吟 | 久久久久99精品国产片 | 免费无码av一区二区 | 麻豆国产丝袜白领秘书在线观看 | 女高中生第一次破苞av | 亚洲va欧美va天堂v国产综合 | 久久精品国产日本波多野结衣 | 精品国偷自产在线视频 | 国产在线aaa片一区二区99 | 日日噜噜噜噜夜夜爽亚洲精品 | 丝袜人妻一区二区三区 | 久久久久成人片免费观看蜜芽 | 亚洲国产高清在线观看视频 | 色综合久久久无码中文字幕 | 国产精品18久久久久久麻辣 | 久久亚洲精品成人无码 | 亚洲狠狠婷婷综合久久 | 无码国产色欲xxxxx视频 | 久久久久久久人妻无码中文字幕爆 | 亚洲色无码一区二区三区 | 国产人妻大战黑人第1集 | 成人性做爰aaa片免费看 | 内射欧美老妇wbb | 大地资源网第二页免费观看 | 岛国片人妻三上悠亚 | 欧美熟妇另类久久久久久多毛 | 黑人巨大精品欧美一区二区 | 全黄性性激高免费视频 | 大屁股大乳丰满人妻 | 成人无码精品1区2区3区免费看 | 麻豆av传媒蜜桃天美传媒 | 久久久久亚洲精品男人的天堂 | www一区二区www免费 | 亚洲啪av永久无码精品放毛片 | 麻豆人妻少妇精品无码专区 | 国产色视频一区二区三区 | 日本欧美一区二区三区乱码 | 又湿又紧又大又爽a视频国产 | 又湿又紧又大又爽a视频国产 | 九月婷婷人人澡人人添人人爽 | 日本丰满熟妇videos | 波多野结衣av在线观看 | 无码午夜成人1000部免费视频 | 亚洲综合伊人久久大杳蕉 | 国产成人人人97超碰超爽8 | 天天综合网天天综合色 | 亚洲一区二区三区国产精华液 | 国产农村乱对白刺激视频 | 日韩av激情在线观看 | 乱人伦人妻中文字幕无码久久网 | 国产特级毛片aaaaaa高潮流水 | 老熟妇乱子伦牲交视频 | 对白脏话肉麻粗话av | 麻豆成人精品国产免费 | 樱花草在线社区www | 久久精品国产日本波多野结衣 | 牲交欧美兽交欧美 | 久久久亚洲欧洲日产国码αv | 欧美老熟妇乱xxxxx | 久久久久国色av免费观看性色 | 亚洲一区二区三区四区 | 东京热男人av天堂 | 国产精品久免费的黄网站 | 极品尤物被啪到呻吟喷水 | 久久五月精品中文字幕 | 青青草原综合久久大伊人精品 | 99久久无码一区人妻 | 在线欧美精品一区二区三区 | 人妻少妇精品无码专区动漫 | 国产手机在线αⅴ片无码观看 | 国精产品一区二区三区 | 亚洲熟妇自偷自拍另类 | 亚洲国产精品久久人人爱 | 国产精品久免费的黄网站 | 国产精品人人妻人人爽 | 国内精品人妻无码久久久影院蜜桃 | 性生交大片免费看女人按摩摩 | 99视频精品全部免费免费观看 | 久久精品国产日本波多野结衣 | 自拍偷自拍亚洲精品10p | 亚洲人成影院在线无码按摩店 | 男女爱爱好爽视频免费看 | 国产乡下妇女做爰 | 亚洲欧美日韩国产精品一区二区 | 大乳丰满人妻中文字幕日本 | 国产一区二区不卡老阿姨 | 亚洲精品久久久久久久久久久 | 丰满少妇女裸体bbw | 强伦人妻一区二区三区视频18 | 精品人妻人人做人人爽夜夜爽 | 少妇无套内谢久久久久 | 国产97色在线 | 免 | 国产福利视频一区二区 | 成人aaa片一区国产精品 | 在线观看国产一区二区三区 | 亚洲男女内射在线播放 | 夜夜影院未满十八勿进 | 亚洲成av人综合在线观看 | 日本大乳高潮视频在线观看 | 日韩人妻无码中文字幕视频 | 国产亚洲精品久久久久久国模美 | 国产成人一区二区三区别 | 国产精品二区一区二区aⅴ污介绍 | 欧美阿v高清资源不卡在线播放 | 亚洲午夜久久久影院 | 国产在线一区二区三区四区五区 | 中文字幕人妻丝袜二区 | 精品久久久无码人妻字幂 | 色偷偷人人澡人人爽人人模 | 国产亚洲欧美在线专区 | 成人女人看片免费视频放人 | 九九在线中文字幕无码 | 亚洲精品久久久久久一区二区 | 国产电影无码午夜在线播放 | 成人精品天堂一区二区三区 | 国产精品无码一区二区桃花视频 | 亚洲第一无码av无码专区 | 欧美日韩人成综合在线播放 | 色综合久久中文娱乐网 | 国产熟女一区二区三区四区五区 | 国产精品久久精品三级 | 精品无码国产自产拍在线观看蜜 | 久久久久成人片免费观看蜜芽 | 午夜福利电影 | 国产成人无码区免费内射一片色欲 | 国产一区二区三区四区五区加勒比 | 成在人线av无码免观看麻豆 | 丝袜足控一区二区三区 | 国产内射爽爽大片视频社区在线 | 老子影院午夜精品无码 | 亚洲国产欧美日韩精品一区二区三区 | 欧美 亚洲 国产 另类 | 人妻少妇被猛烈进入中文字幕 | 人人爽人人爽人人片av亚洲 | 中文字幕av日韩精品一区二区 | 国产成人精品三级麻豆 | 无码精品国产va在线观看dvd | a国产一区二区免费入口 | 一本久道高清无码视频 | 日本精品久久久久中文字幕 | 激情五月综合色婷婷一区二区 | 色婷婷欧美在线播放内射 | 日韩精品一区二区av在线 | 国产性生大片免费观看性 | 青春草在线视频免费观看 | 少妇一晚三次一区二区三区 | 亚洲欧美日韩成人高清在线一区 | 成熟人妻av无码专区 | 在线a亚洲视频播放在线观看 | 免费看少妇作爱视频 | 欧美喷潮久久久xxxxx | 国产又粗又硬又大爽黄老大爷视 | 日韩精品无码免费一区二区三区 | 色婷婷综合中文久久一本 | 一区二区三区高清视频一 | 成人动漫在线观看 | 欧美人与禽zoz0性伦交 | 久久午夜夜伦鲁鲁片无码免费 | 99精品无人区乱码1区2区3区 | 任你躁国产自任一区二区三区 | 99久久婷婷国产综合精品青草免费 | 东京热无码av男人的天堂 | 久激情内射婷内射蜜桃人妖 | 在线播放无码字幕亚洲 | 国产精品国产三级国产专播 | 人妻无码久久精品人妻 | 成人无码精品1区2区3区免费看 | 无码人妻丰满熟妇区五十路百度 | 成人无码视频在线观看网站 | 大地资源中文第3页 | 中国女人内谢69xxxxxa片 | 亚洲中文字幕无码一久久区 | 日韩人妻无码一区二区三区久久99 | www一区二区www免费 | 国内精品一区二区三区不卡 | 清纯唯美经典一区二区 | 奇米影视888欧美在线观看 | 欧美日韩综合一区二区三区 | 午夜丰满少妇性开放视频 | 国产精品久久久久久无码 | 人妻体内射精一区二区三四 | 久久精品人人做人人综合 | 国产农村乱对白刺激视频 | 国产精品手机免费 | 人妻无码久久精品人妻 | 荫蒂被男人添的好舒服爽免费视频 | 色婷婷综合中文久久一本 | 亚洲gv猛男gv无码男同 | 国产97在线 | 亚洲 | 国产精品国产自线拍免费软件 | 国产超碰人人爽人人做人人添 | 暴力强奷在线播放无码 | 国内精品久久久久久中文字幕 | 波多野结衣aⅴ在线 | 日日摸日日碰夜夜爽av | 在线视频网站www色 | 亚洲国产精品久久人人爱 | 中文字幕乱码人妻二区三区 | 亚洲人亚洲人成电影网站色 | 国内少妇偷人精品视频免费 | 亚洲欧洲日本无在线码 | 水蜜桃色314在线观看 | 国产成人精品一区二区在线小狼 | 亚洲国产精品无码久久久久高潮 | 国产亚洲精品久久久久久久久动漫 | 国产午夜亚洲精品不卡 | 天天躁夜夜躁狠狠是什么心态 | 无码国产激情在线观看 | 国语自产偷拍精品视频偷 | 国内精品久久久久久中文字幕 | 少妇一晚三次一区二区三区 | 久久天天躁狠狠躁夜夜免费观看 | 欧美日韩一区二区三区自拍 | 色婷婷av一区二区三区之红樱桃 | 亚洲精品综合一区二区三区在线 | 欧美人与物videos另类 | 在线 国产 欧美 亚洲 天堂 | 国产精品久久久久7777 | 国产舌乚八伦偷品w中 | 九九综合va免费看 | 欧美日韩精品 | 亚洲国产精华液网站w | 欧美性猛交内射兽交老熟妇 | 精品无人区无码乱码毛片国产 | 久久亚洲中文字幕无码 | 人人妻人人澡人人爽人人精品 | 久久精品国产日本波多野结衣 | 天天拍夜夜添久久精品大 | 蜜桃视频插满18在线观看 | 欧美真人作爱免费视频 | 欧美xxxxx精品 | 国产成人无码av片在线观看不卡 | 久久精品无码一区二区三区 | 又大又紧又粉嫩18p少妇 | 亚洲成av人在线观看网址 | 沈阳熟女露脸对白视频 | 十八禁视频网站在线观看 | 成 人 免费观看网站 | 婷婷综合久久中文字幕蜜桃三电影 | 一本久道久久综合婷婷五月 | 久久久久久久女国产乱让韩 | 欧美大屁股xxxxhd黑色 | 国产免费久久精品国产传媒 | 国产麻豆精品一区二区三区v视界 | 成人性做爰aaa片免费看 | 国产精品亚洲专区无码不卡 | 十八禁视频网站在线观看 | 久久亚洲日韩精品一区二区三区 | 国产亚洲精品久久久久久久久动漫 | 国产精品多人p群无码 | 中文字幕乱码亚洲无线三区 | 国产成人精品一区二区在线小狼 | 成年美女黄网站色大免费全看 | 午夜成人1000部免费视频 | 亚洲小说春色综合另类 | 亚洲精品国偷拍自产在线麻豆 | 国产午夜福利100集发布 | 久久99精品国产麻豆蜜芽 | 国产农村妇女高潮大叫 | 妺妺窝人体色www婷婷 | 国产亚洲精品久久久闺蜜 | 国产乱人无码伦av在线a | 又粗又大又硬又长又爽 | 亚洲日韩中文字幕在线播放 | 成熟女人特级毛片www免费 | 久久国语露脸国产精品电影 | 久久国内精品自在自线 | 国内精品久久久久久中文字幕 | 成熟人妻av无码专区 | 亚洲精品国产第一综合99久久 | 日韩精品a片一区二区三区妖精 | 又粗又大又硬毛片免费看 | 未满小14洗澡无码视频网站 | 久久熟妇人妻午夜寂寞影院 | 亚洲男人av香蕉爽爽爽爽 | 青青青爽视频在线观看 | 精品无码国产一区二区三区av | 精品久久久久久人妻无码中文字幕 | 国产精品久久精品三级 | 无码乱肉视频免费大全合集 | 中文字幕无码免费久久9一区9 | 国产激情无码一区二区app | 国产精品美女久久久久av爽李琼 | 一本色道久久综合狠狠躁 | 噜噜噜亚洲色成人网站 | yw尤物av无码国产在线观看 | 狂野欧美激情性xxxx | 色综合久久久无码网中文 | 久久国语露脸国产精品电影 | 欧洲vodafone精品性 | 国产午夜无码视频在线观看 | 99久久人妻精品免费一区 | 久久99国产综合精品 | 天堂在线观看www | 无码午夜成人1000部免费视频 | 日本护士xxxxhd少妇 | 蜜桃av抽搐高潮一区二区 | 美女张开腿让人桶 | 国产超级va在线观看视频 | 亚洲国产精品久久久久久 | 熟妇激情内射com | 国产精品理论片在线观看 | 欧美丰满熟妇xxxx | 午夜理论片yy44880影院 | 麻豆蜜桃av蜜臀av色欲av | 欧美一区二区三区视频在线观看 | 国产色视频一区二区三区 | 激情国产av做激情国产爱 | 激情国产av做激情国产爱 | 香港三级日本三级妇三级 | 国产另类ts人妖一区二区 | 成人精品视频一区二区 | 成人精品一区二区三区中文字幕 | 国精品人妻无码一区二区三区蜜柚 | 熟妇人妻中文av无码 | 影音先锋中文字幕无码 | 国产乱人伦av在线无码 | 国产精品久久国产精品99 | 午夜福利一区二区三区在线观看 | 影音先锋中文字幕无码 | 久9re热视频这里只有精品 | 欧美人与动性行为视频 | 特级做a爰片毛片免费69 | 玩弄人妻少妇500系列视频 | 国产黄在线观看免费观看不卡 | 性啪啪chinese东北女人 | 少妇被粗大的猛进出69影院 | 丰满护士巨好爽好大乳 | a片免费视频在线观看 | 人人妻人人藻人人爽欧美一区 | 国产成人精品视频ⅴa片软件竹菊 | 中文字幕人妻无码一夲道 | 男女猛烈xx00免费视频试看 | 一二三四社区在线中文视频 | 国产激情无码一区二区app | 99久久久无码国产精品免费 | 国产乱人伦app精品久久 国产在线无码精品电影网 国产国产精品人在线视 | 国产成人综合色在线观看网站 | 人人爽人人爽人人片av亚洲 | 国产成人久久精品流白浆 | 国产精品多人p群无码 | 无码帝国www无码专区色综合 | 久久精品女人的天堂av | 国产精品多人p群无码 | 精品无码av一区二区三区 | 成年美女黄网站色大免费全看 | 亚洲综合精品香蕉久久网 | 精品夜夜澡人妻无码av蜜桃 | a国产一区二区免费入口 | 亚洲精品美女久久久久久久 | 亚洲国产精品无码一区二区三区 | 东京热无码av男人的天堂 | 午夜无码区在线观看 | 老熟妇乱子伦牲交视频 | 老熟妇乱子伦牲交视频 | 波多野结衣一区二区三区av免费 | 中文字幕av日韩精品一区二区 | 少妇太爽了在线观看 | v一区无码内射国产 | 东京热无码av男人的天堂 | 亚洲精品鲁一鲁一区二区三区 | 思思久久99热只有频精品66 | 天干天干啦夜天干天2017 | 蜜臀aⅴ国产精品久久久国产老师 | 久久午夜无码鲁丝片午夜精品 | 久久国产精品偷任你爽任你 | 亚洲精品国产品国语在线观看 | 欧美zoozzooz性欧美 | 午夜无码人妻av大片色欲 | 国产在线无码精品电影网 | 精品国产成人一区二区三区 | 亚洲成av人影院在线观看 | 少妇性荡欲午夜性开放视频剧场 | 精品乱码久久久久久久 | 1000部啪啪未满十八勿入下载 | 强开小婷嫩苞又嫩又紧视频 | 中文字幕乱码人妻二区三区 | 国产一区二区三区精品视频 | 久久人人97超碰a片精品 | 国产精品毛片一区二区 | 麻豆国产人妻欲求不满 | 97资源共享在线视频 | 亚洲精品美女久久久久久久 | 久久久婷婷五月亚洲97号色 | 久久99国产综合精品 | 99久久精品无码一区二区毛片 | 亚洲人成网站色7799 | 日本大乳高潮视频在线观看 | 特黄特色大片免费播放器图片 | 国産精品久久久久久久 | 亚洲日本一区二区三区在线 | 内射后入在线观看一区 | 国产三级精品三级男人的天堂 | 奇米综合四色77777久久 东京无码熟妇人妻av在线网址 | 在线天堂新版最新版在线8 | 国产色精品久久人妻 | 国产人妻久久精品二区三区老狼 | 国产情侣作爱视频免费观看 | aⅴ亚洲 日韩 色 图网站 播放 | 日本爽爽爽爽爽爽在线观看免 | 免费人成在线视频无码 | 老司机亚洲精品影院 | 亚洲精品综合五月久久小说 | 久在线观看福利视频 | 极品嫩模高潮叫床 | 亚洲s色大片在线观看 | 中文无码成人免费视频在线观看 | 高清不卡一区二区三区 | 99久久精品日本一区二区免费 | 成熟人妻av无码专区 | 玩弄少妇高潮ⅹxxxyw | 国产激情精品一区二区三区 | 图片小说视频一区二区 | 亚洲第一无码av无码专区 | 成人欧美一区二区三区黑人免费 | 免费观看黄网站 | 无码福利日韩神码福利片 | 真人与拘做受免费视频 | 丁香花在线影院观看在线播放 | 亚洲欧美中文字幕5发布 | 无码免费一区二区三区 | 精品无码国产自产拍在线观看蜜 | 性欧美熟妇videofreesex | 人妻少妇精品久久 | 清纯唯美经典一区二区 | 亚洲七七久久桃花影院 | 日本精品少妇一区二区三区 | 无码吃奶揉捏奶头高潮视频 | 精品亚洲成av人在线观看 | 人妻无码αv中文字幕久久琪琪布 | 亚拍精品一区二区三区探花 | 亚洲人成无码网www | 扒开双腿疯狂进出爽爽爽视频 | 伊人久久大香线焦av综合影院 | 巨爆乳无码视频在线观看 | 3d动漫精品啪啪一区二区中 | 亚洲精品久久久久中文第一幕 | 宝宝好涨水快流出来免费视频 | 日韩精品无码一区二区中文字幕 | www国产亚洲精品久久久日本 | 日韩亚洲欧美精品综合 | 欧美阿v高清资源不卡在线播放 | 日本va欧美va欧美va精品 | 国产两女互慰高潮视频在线观看 | 亚洲七七久久桃花影院 | 最近中文2019字幕第二页 | 一本久久a久久精品亚洲 | 精品一区二区三区波多野结衣 | 成人精品视频一区二区三区尤物 | 亚洲精品一区二区三区在线观看 | 国内精品人妻无码久久久影院蜜桃 | 97夜夜澡人人爽人人喊中国片 | 男人和女人高潮免费网站 | 亚洲国产精品无码久久久久高潮 | 免费人成在线视频无码 | 国产精品久久久午夜夜伦鲁鲁 | 最新国产麻豆aⅴ精品无码 | 美女扒开屁股让男人桶 | 久久久久久久女国产乱让韩 | 人人澡人人透人人爽 | 国产亚洲欧美日韩亚洲中文色 | 中国女人内谢69xxxx | 99久久亚洲精品无码毛片 | 国内少妇偷人精品视频免费 | 亚洲国产成人a精品不卡在线 | 性生交大片免费看l | 欧洲熟妇色 欧美 | 亲嘴扒胸摸屁股激烈网站 | 国产成人精品无码播放 | 中国女人内谢69xxxxxa片 | 精品国产一区二区三区四区在线看 | 无码播放一区二区三区 | 性生交片免费无码看人 | 婷婷丁香五月天综合东京热 | 97无码免费人妻超级碰碰夜夜 | 中文字幕日产无线码一区 | 国产无遮挡吃胸膜奶免费看 | 水蜜桃色314在线观看 | 日韩人妻无码中文字幕视频 | 日本丰满护士爆乳xxxx | 牲欲强的熟妇农村老妇女 | 免费人成在线观看网站 | 99er热精品视频 | 日本大香伊一区二区三区 | 在线精品亚洲一区二区 | 一个人看的视频www在线 | 国产精品久久久久无码av色戒 | 亚洲性无码av中文字幕 | 成 人 免费观看网站 | 青草视频在线播放 | 扒开双腿吃奶呻吟做受视频 | 成人性做爰aaa片免费看不忠 | 精品偷自拍另类在线观看 | 综合网日日天干夜夜久久 | 国产精品人人妻人人爽 | 亚洲欧洲日本综合aⅴ在线 | 99久久精品午夜一区二区 | 久久天天躁狠狠躁夜夜免费观看 | 久久久久久a亚洲欧洲av冫 | 亚洲色大成网站www国产 | 国产成人午夜福利在线播放 | 99久久精品午夜一区二区 | 国内揄拍国内精品人妻 | 狂野欧美性猛xxxx乱大交 | 亲嘴扒胸摸屁股激烈网站 | 暴力强奷在线播放无码 | 色欲久久久天天天综合网精品 | 国产性生大片免费观看性 | 亚洲色欲色欲天天天www | 一区二区三区乱码在线 | 欧洲 | 欧美肥老太牲交大战 | 亚洲 激情 小说 另类 欧美 | 欧美zoozzooz性欧美 | 久久久国产一区二区三区 | 老司机亚洲精品影院 | 欧美丰满老熟妇xxxxx性 | 最近的中文字幕在线看视频 | 日韩精品无码一本二本三本色 | 对白脏话肉麻粗话av | 国产精品福利视频导航 | 亚洲区欧美区综合区自拍区 | 老头边吃奶边弄进去呻吟 | 国产精品自产拍在线观看 | 国产午夜无码精品免费看 | 国产成人精品一区二区在线小狼 | 我要看www免费看插插视频 | 国产美女极度色诱视频www | 免费国产成人高清在线观看网站 | 欧美成人免费全部网站 | 久久亚洲日韩精品一区二区三区 | 老熟妇仑乱视频一区二区 | 久久久久免费看成人影片 | 风流少妇按摩来高潮 | 一二三四在线观看免费视频 | 国产亚洲人成a在线v网站 | 国产乱子伦视频在线播放 | 图片小说视频一区二区 | 宝宝好涨水快流出来免费视频 | 久久无码人妻影院 | 黑人粗大猛烈进出高潮视频 | 国产无套粉嫩白浆在线 | 亚洲欧美国产精品专区久久 | 偷窥日本少妇撒尿chinese | 人妻少妇精品无码专区二区 | 久久人人爽人人爽人人片av高清 | 国产性生交xxxxx无码 | 日日噜噜噜噜夜夜爽亚洲精品 | 国产成人综合在线女婷五月99播放 | 国产乱子伦视频在线播放 | 天天做天天爱天天爽综合网 | 国产成人精品一区二区在线小狼 | 未满小14洗澡无码视频网站 | 少妇厨房愉情理9仑片视频 | 亚洲欧美日韩综合久久久 | 亚洲精品久久久久久一区二区 | 亚洲国产一区二区三区在线观看 | 亚洲国精产品一二二线 | 天堂一区人妻无码 | 扒开双腿吃奶呻吟做受视频 | 日产精品99久久久久久 | 一个人免费观看的www视频 | 欧美阿v高清资源不卡在线播放 | 国产莉萝无码av在线播放 | 免费观看又污又黄的网站 | 亚洲综合无码久久精品综合 | √天堂资源地址中文在线 | 国产熟妇另类久久久久 | 欧美老人巨大xxxx做受 | 亚洲а∨天堂久久精品2021 | 日韩精品a片一区二区三区妖精 | 98国产精品综合一区二区三区 | 成人aaa片一区国产精品 | 国产手机在线αⅴ片无码观看 | 亚洲日韩中文字幕在线播放 | 亚洲国产日韩a在线播放 | 中文字幕乱码中文乱码51精品 | 久久久中文久久久无码 | 亚拍精品一区二区三区探花 | 一本精品99久久精品77 | 帮老师解开蕾丝奶罩吸乳网站 | 国产精品理论片在线观看 | 国产亚洲精品久久久久久大师 | 4hu四虎永久在线观看 | 99久久亚洲精品无码毛片 | 亚洲呦女专区 | 久久久久久久久888 | 99久久99久久免费精品蜜桃 | 国产精品.xx视频.xxtv | 亚洲人亚洲人成电影网站色 | 亚洲日本va午夜在线电影 | 亚洲精品久久久久久久久久久 | 亚洲国产欧美日韩精品一区二区三区 | 欧美 日韩 人妻 高清 中文 | 中文字幕无码免费久久99 | 久久久久99精品国产片 | 在线观看欧美一区二区三区 | 香蕉久久久久久av成人 | 久久久中文字幕日本无吗 | 亚洲午夜无码久久 | 麻豆国产97在线 | 欧洲 | 国产精品-区区久久久狼 | 一区二区三区高清视频一 | 亚洲一区二区三区在线观看网站 | 宝宝好涨水快流出来免费视频 | 国产农村乱对白刺激视频 | 婷婷色婷婷开心五月四房播播 | 乱码午夜-极国产极内射 | 蜜桃视频韩日免费播放 | 亚洲欧美国产精品专区久久 | 激情人妻另类人妻伦 | 老司机亚洲精品影院 | 3d动漫精品啪啪一区二区中 | 最近中文2019字幕第二页 | 大地资源网第二页免费观看 | 国产色视频一区二区三区 | 强开小婷嫩苞又嫩又紧视频 | 97久久精品无码一区二区 | 日本熟妇人妻xxxxx人hd | 东京热无码av男人的天堂 | 欧美一区二区三区视频在线观看 | 好爽又高潮了毛片免费下载 | 国产成人无码一二三区视频 | 中文字幕av伊人av无码av | 成人无码精品一区二区三区 | 国产热a欧美热a在线视频 | 人人澡人人透人人爽 | 特大黑人娇小亚洲女 | 99久久久国产精品无码免费 | 免费播放一区二区三区 | 99久久精品国产一区二区蜜芽 | 粉嫩少妇内射浓精videos | 国产精品久久久久9999小说 | 内射巨臀欧美在线视频 | 久久无码中文字幕免费影院蜜桃 | 日本xxxx色视频在线观看免费 | 无码精品国产va在线观看dvd | 亚洲 a v无 码免 费 成 人 a v | 亚洲 a v无 码免 费 成 人 a v | 久9re热视频这里只有精品 | 国产在线精品一区二区三区直播 | 成人片黄网站色大片免费观看 | 双乳奶水饱满少妇呻吟 | 国模大胆一区二区三区 | 男女超爽视频免费播放 | 国产无遮挡又黄又爽又色 | 亚洲va中文字幕无码久久不卡 | 成人精品视频一区二区三区尤物 | 亚洲国产精品久久久久久 | 亚洲精品一区二区三区四区五区 | 亚洲精品国偷拍自产在线观看蜜桃 | 成年美女黄网站色大免费视频 | 国产真实乱对白精彩久久 | 最近的中文字幕在线看视频 |