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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux设备驱动开发-linux驱动中的非阻塞访问方式

發布時間:2024/9/21 linux 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux设备驱动开发-linux驱动中的非阻塞访问方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前面已經詳細分析過了阻塞訪問方式,下面就來繼續分析一下非阻塞的訪問方式。

什么是非阻塞的訪問方式呢?非阻塞操作的進程在不能進行設備操作時,并不掛起,他或者是放棄當前的進程執行,或者是不停地進行查詢,知道進程可以進行操作為止。實際上就是常說的輪詢的方式進行設備的訪問。

select()和poll()調用的本質是一樣的,在性能上也不存在明顯的差異,只是select監視的文件描述符數量有限,下面分別看下這兩個系統調用。

首先看下select()系統調用,其函數原型為:

[cpp]?view plaincopy
  • int?select(int?nfds,?fd_set?*readfds,?fd_set?*writefds,??
  • ??????????????????fd_set?*exceptfds,?struct?timeval?*timeout);??
  • readfds、writefds、exceptfds是被select()監視的讀、寫、異常處理的文件描述符集合,nfds是需要檢查的號碼最高的文件描述符加1,timeout是一個超時值得設定,當在timeout的時間里沒有文件描述符準備好則返回。struct timeval結構體如下:

    [cpp]?view plaincopy
  • struct?timeval?{??
  • ????????__kernel_time_t?????????tv_sec;?????????/*?seconds?*/??
  • ????????__kernel_suseconds_t????tv_usec;????????/*?microseconds?*/??
  • };??
  • 在select()函數后面還提供了一些API函數,如:

    [cpp]?view plaincopy
  • void?FD_CLR(int?fd,?fd_set?*set);????????????????????????????????//將一個文件描述符從文件描述符集中清除??
  • int??FD_ISSET(int?fd,?fd_set?*set);??????????????????????????????//判斷文件描述符是否被置位??
  • void?FD_SET(int?fd,?fd_set?*set);???????????????????????????????//將一個文件描述符加到文件描述符集中??
  • void?FD_ZERO(fd_set?*set);??????????????????????????????????????//清除一個文件描述符集??
  • select()的接口主要是建立在叫fd_set類型的基礎上,它是一組文件描述符的集合,來看下面的定義:

    [cpp]?view plaincopy
  • typedef?struct?{??
  • ????????unsigned?long?fds_bits?[__FDSET_LONGS];??
  • }?__kernel_fd_set;??
  • 而__FDSET_LONGS是

    [cpp]?view plaincopy
  • #define?__FDSET_LONGS???(__FD_SETSIZE/__NFDBITS)??
  • [cpp]?view plaincopy
  • #define?__FD_SETSIZE????1024??
  • #define?__NFDBITS???????(8?*?sizeof(unsigned?long))??
  • 這里計算得__FDSET_LONGS的值是32,不同平臺上這個值不一定相同。

    上面大概介紹了一下selece(),下面來看poll()。

    poll()系統調用的原型是:

    [cpp]?view plaincopy
  • int?poll(struct?pollfd?*fds,?nfds_t?nfds,?int?timeout);??
  • 其中pollfd結構體如下:

    [cpp]?view plaincopy
  • struct?pollfd?{??
  • ????????int?fd;????????????????????????????????????//文件描述符??
  • ????????short?events;???????????????????????????//等待的事件??
  • ????????short?revents;??????????????????????????//實際發生的事件??
  • };??
  • 起執行過程如下:

    首先將用戶傳入的pollfd數組拷貝到內核空間,然后查詢每個文件描述符對應的設備的狀態,最后將獲得的數據傳送到用戶空間并執行釋放內存和剝離等待隊列等工作。

    設計上無論是select()還是poll()系統調用,其最終都會引發設備驅動中的poll()被執行,那么下面就來看下設備驅動中的poll()函數:

    首先來看下在設備驅動中的poll()函數的原型:

    [cpp]?view plaincopy
  • unsigned?int?(*poll)?(struct?file?*,?struct?poll_table_struct?*);??
  • 其在file_operations結構體中。參數file是file結構體指針,第二個參數是輪詢表指針。這個函數主要完成的工作有:

    對可能引起設備文件狀態變化的等待隊列調用poll_wait()函數,將對應的等待隊列頭添加到poll_table。最后返回表示是否能對設備進行無阻塞讀、寫訪問的掩碼。

    [cpp]?view plaincopy
  • typedef?void?(*poll_queue_proc)(struct?file?*,?wait_queue_head_t?*,?struct?poll_table_struct?*);??
  • ??????????
  • typedef?struct?poll_table_struct?{??
  • ????????poll_queue_proc?qproc;??
  • ????????unsigned?long?key;??
  • }?poll_table;??
  • poll_queue_proc是一個函數指針,其在整個過程中都不變化,而key根據不同的fd的檢測要求而變化。

    [cpp]?view plaincopy
  • static?inline?void?poll_wait(struct?file?*?filp,?wait_queue_head_t?*?wait_address,?poll_table?*p)??
  • {??
  • ????????if?(p?&&?wait_address)??
  • ????????????????p->qproc(filp,?wait_address,?p);??
  • }??
  • wait_address是驅動程序需要提供的等待隊列頭。

    下面把poll()系統調用涉及的主要代碼在這里貼出來,大家可以深入解析一下:

    [cpp]?view plaincopy
  • SYSCALL_DEFINE3(poll,?struct?pollfd?__user?*,?ufds,?unsigned?int,?nfds,??
  • ????????????????long,?timeout_msecs)??
  • {??
  • ????????struct?timespec?end_time,?*to?=?NULL;??
  • ????????int?ret;??
  • ??
  • ????????if?(timeout_msecs?>=?0)?{??
  • ????????????????to?=?&end_time;??
  • ????????????????poll_select_set_timeout(to,?timeout_msecs?/?MSEC_PER_SEC,??
  • ????????????????????????NSEC_PER_MSEC?*?(timeout_msecs?%?MSEC_PER_SEC));??
  • ????????}??
  • ??
  • ????????ret?=?do_sys_poll(ufds,?nfds,?to);??
  • ??
  • ????????if?(ret?==?-EINTR)?{??
  • ????????????????struct?restart_block?*restart_block;??
  • ??
  • ????????????????restart_block?=?¤t_thread_info()->restart_block;??
  • ????????????????restart_block->fn?=?do_restart_poll;??
  • ????????????????restart_block->poll.ufds?=?ufds;??
  • ????????????????restart_block->poll.nfds?=?nfds;??
  • ??
  • ????????????????if?(timeout_msecs?>=?0)?{??
  • ????????????????????????restart_block->poll.tv_sec?=?end_time.tv_sec;??
  • ????????????????????????restart_block->poll.tv_nsec?=?end_time.tv_nsec;??
  • ????????????????????????restart_block->poll.has_timeout?=?1;??
  • ????????????????}?else??
  • ????????????????????????restart_block->poll.has_timeout?=?0;??
  • ??
  • ????????????????ret?=?-ERESTART_RESTARTBLOCK;??
  • ????????}??
  • ????????return?ret;??
  • }??
  • [cpp]?view plaincopy
  • int?do_sys_poll(struct?pollfd?__user?*ufds,?unsigned?int?nfds,??
  • ????????????????struct?timespec?*end_time)??
  • {??
  • ????????struct?poll_wqueues?table;??
  • ????????int?err?=?-EFAULT,?fdcount,?len,?size;??
  • ????????/*?Allocate?small?arguments?on?the?stack?to?save?memory?and?be?
  • ???????????faster?-?use?long?to?make?sure?the?buffer?is?aligned?properly?
  • ???????????on?64?bit?archs?to?avoid?unaligned?access?*/??
  • ????????long?stack_pps[POLL_STACK_ALLOC/sizeof(long)];??
  • ????????struct?poll_list?*const?head?=?(struct?poll_list?*)stack_pps;??
  • ????????struct?poll_list?*walk?=?head;??
  • ????????unsigned?long?todo?=?nfds;??
  • ??
  • ????????if?(nfds?>?current->signal->rlim[RLIMIT_NOFILE].rlim_cur)??
  • ????????????????return?-EINVAL;??
  • ??
  • ????????len?=?min_t(unsigned?int,?nfds,?N_STACK_PPS);??
  • ????????for?(;;)?{??
  • ????????????????walk->next?=?NULL;??
  • ????????????????walk->len?=?len;??
  • ????????????????if?(!len)??
  • ????????????????????????break;??
  • ??
  • ????????????????if?(copy_from_user(walk->entries,?ufds?+?nfds-todo,??
  • ????????????????????????????????????????sizeof(struct?pollfd)?*?walk->len))??
  • ????????????????????????goto?out_fds;??
  • ??
  • ????????????????todo?-=?walk->len;??
  • ????????????????if?(!todo)??
  • ????????????????????????break;??
  • ??
  • ????????????????len?=?min(todo,?POLLFD_PER_PAGE);??
  • ????????????????size?=?sizeof(struct?poll_list)?+?sizeof(struct?pollfd)?*?len;??
  • ????????????????walk?=?walk->next?=?kmalloc(size,?GFP_KERNEL);??
  • ????????????????if?(!walk)?{??
  • ????????????????????????err?=?-ENOMEM;??
  • ????????????????????????goto?out_fds;??
  • ????????????????}??
  • ????????}??
  • ??
  • ????????poll_initwait(&table);??
  • ????????fdcount?=?do_poll(nfds,?head,?&table,?end_time);??
  • ????????poll_freewait(&table);??
  • ??
  • ????????for?(walk?=?head;?walk;?walk?=?walk->next)?{??
  • ????????????????struct?pollfd?*fds?=?walk->entries;??
  • ????????????????int?j;??
  • ??
  • ????????????????for?(j?=?0;?j?<?walk->len;?j++,?ufds++)??
  • ????????????????????????if?(__put_user(fds[j].revents,?&ufds->revents))??
  • ????????????????????????????????goto?out_fds;??
  • ????????}??
  • ??
  • ????????err?=?fdcount;??
  • out_fds:??
  • ????????walk?=?head->next;??
  • ????????while?(walk)?{??
  • ????????????????struct?poll_list?*pos?=?walk;??
  • ????????????????walk?=?walk->next;??
  • ????????????????kfree(pos);??
  • ????????}??
  • ??
  • ????????return?err;??
  • }??
  • [cpp]?view plaincopy
  • static?int?do_poll(unsigned?int?nfds,??struct?poll_list?*list,??
  • ???????????????????struct?poll_wqueues?*wait,?struct?timespec?*end_time)??
  • {??
  • ????????poll_table*?pt?=?&wait->pt;??
  • ????????ktime_t?expire,?*to?=?NULL;??
  • ????????int?timed_out?=?0,?count?=?0;??
  • ????????unsigned?long?slack?=?0;??
  • ??
  • ????????/*?Optimise?the?no-wait?case?*/??
  • ????????if?(end_time?&&?!end_time->tv_sec?&&?!end_time->tv_nsec)?{??
  • ????????????????pt?=?NULL;??
  • ????????????????timed_out?=?1;??
  • ????????}??
  • ??
  • ????????if?(end_time?&&?!timed_out)??
  • ????????????????slack?=?estimate_accuracy(end_time);??
  • ??
  • ????????for?(;;)?{??
  • ????????????????struct?poll_list?*walk;??
  • ??
  • ????????????????for?(walk?=?list;?walk?!=?NULL;?walk?=?walk->next)?{??
  • ????????????????????????struct?pollfd?*?pfd,?*?pfd_end;??
  • ??
  • ????????????????????????pfd?=?walk->entries;??
  • ????????????????????????pfd_end?=?pfd?+?walk->len;??
  • ????????????????????????for?(;?pfd?!=?pfd_end;?pfd++)?{??
  • ????????????????????????????????/*?
  • ?????????????????????????????????*?Fish?for?events.?If?we?found?one,?record?it?
  • ?????????????????????????????????*?and?kill?the?poll_table,?so?we?don't?
  • ?????????????????????????????????*?needlessly?register?any?other?waiters?after?
  • ?????????????????????????????????*?this.?They'll?get?immediately?deregistered?
  • ?????????????????????????????????*?when?we?break?out?and?return.?
  • ?????????????????????????????????*/??
  • ????????????????????????????????if?(do_pollfd(pfd,?pt))?{??
  • ????????????????????????????????????????count++;??
  • ????????????????????????????????????????pt?=?NULL;??
  • ????????????????????????????????}??
  • ????????????????????????}??
  • ????????????????}??
  • ????????????????/*?
  • ?????????????????*?All?waiters?have?already?been?registered,?so?don't?provide?
  • ?????????????????*?a?poll_table?to?them?on?the?next?loop?iteration.?
  • ?????????????????*/??
  • ????????????????pt?=?NULL;??
  • ????????????????if?(!count)?{??
  • ????????????????????????count?=?wait->error;??
  • ????????????????????????if?(signal_pending(current))??
  • ????????????????????????????????count?=?-EINTR;??
  • ????????????????}??
  • ????????????????if?(count?||?timed_out)??
  • ????????????????????????break;??
  • ??
  • ????????????????/*?
  • ?????????????????*?If?this?is?the?first?loop?and?we?have?a?timeout?
  • ?????????????????*?given,?then?we?convert?to?ktime_t?and?set?the?to?
  • ?????????????????*?pointer?to?the?expiry?value.?
  • ?????????????????*/??
  • ????????????????if?(end_time?&&?!to)?{??
  • ????????????????????????expire?=?timespec_to_ktime(*end_time);??
  • ????????????????????????to?=?&expire;??
  • ????????????????}??
  • ??
  • ??????????????????if?(!poll_schedule_timeout(wait,?TASK_INTERRUPTIBLE,?to,?slack))??
  • ????????????????????????timed_out?=?1;??
  • ????????}??
  • ????????return?count;??
  • }??
  • 下面還是根據前面所舉的globalmem例子寫一個poll函數
    [cpp]?view plaincopy
  • static?unsigned?int?globalmem_poll(struct?file?*filp,poll_table?*wait)??
  • {??
  • ????unsigned?int?mask?=?0;??
  • ????struct?globalmem_dev?*dev?=?filp->private_data;??
  • ??
  • ????down(&dev->sem);??
  • ??
  • ????poll_wait(filp,&dev->r_wait,wait);????????????????????//加讀等待隊列頭??
  • ????poll_wait(filp,&dev->w_wait,wait);???????????????????//加寫等待隊列頭??
  • ??????
  • ????if(dev->current_len?!=?0)??
  • ????????mask?|=?POLLIN?|?POLLRDNORM;??????????//表示數據可獲得??
  • ????if(dev->current_len?!=?GLOBALFIFO_SIZE)??????????
  • ????????mask?|=?POLLOUT?|?POLLWRNORM;???????//表示數據可寫入??
  • ??
  • ????up(&dev->sem);??
  • ????return?mask;??
  • }??
  • 最后將其付給poll函數指針:

    [cpp]?view plaincopy
  • static?const?struct?file_operations?globalmem_fops?=?{??
  • ????.poll?=?globalmem_poll,??
  • }??
  • 而關于上面的標識符<poll.h>中有定義。

    下面再編寫一個應用程序用于監控globalmem的可讀可寫狀態,代碼如下(未加頭文件):

    [cpp]?view plaincopy
  • #define?FIFO_CLEAR?0x1;??
  • #define?BUFFER_LEN?20;??
  • ??
  • mian()??
  • {??
  • ????int?fd,num;??
  • ????char?rd_ch[BUFFER_LEN];??
  • ????fd_set?rfds,wfds;??
  • ??
  • ????fd?=?open("/dev/globalmem",O_RDONLY?|?O_NONBLOCK);??
  • ????if(fd?!=?-1){??
  • ????????if(ioctl(fd,FIFO_CLEAR,0)<0)??
  • ????????????printf("ioctl?command?failed\n");??
  • ??
  • ????while(1){??
  • ????????FD_ZERO(&rfds);??
  • ????????FD_ZERO(&wfds);??
  • ????????FD_SET(fd,&rfds);??
  • ????????FD_SET(fd,&wfds);??
  • ??
  • ????????select(fd+1,&rfds,&wfds,NULL,NULL);??
  • ????????if(FD_ISSET(fd,&rfds))??
  • ????????????printf("poll?monitor:can?be?read\n");??
  • ????????if(FD_ISSET(fd,&wfds))??
  • ????????????printf("poll?monitor:can?be?written\n");??????
  • ????????}??
  • ????}else{??
  • ????????printf("Device?open?failure\n");??????
  • ????}??
  • } ?
  • 總結

    以上是生活随笔為你收集整理的Linux设备驱动开发-linux驱动中的非阻塞访问方式的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    欧美a级免费视频 | 成人黄色免费在线观看 | 成人免费在线观看电影 | 久久久久久久亚洲精品 | 黄色影院在线免费观看 | 天天视频色 | 国产精品久久久久久久午夜 | 国产精品初高中精品久久 | 最新av网址在线观看 | 手机成人在线电影 | 日韩在线观看一区二区三区 | 丝袜av网站| 精品国产乱码久久久久久1区二区 | 久久不卡国产精品一区二区 | 久草| 欧美性久久久 | 国产精品视频大全 | 久久午夜网 | 日日夜夜狠狠操 | 一区二区三区四区在线 | 视频成人 | 午夜婷婷网| 国产一区免费观看 | 在线免费视频你懂的 | 久久人人爽人人 | 国产精品美女久久久久久2018 | 亚洲专区视频在线观看 | 黄色三级网站在线观看 | 日日操日日 | 五月婷婷丁香 | 久久国色夜色精品国产 | 狠狠狠色狠狠色综合 | www.黄色在线 | 亚洲理论在线观看 | 日韩中文幕 | 亚洲经典视频 | 国产丝袜制服在线 | 久久激情视频免费观看 | 午夜影视剧场 | 91精品视频在线免费观看 | 精品国产区在线 | 日韩深夜在线观看 | 国产精品不卡一区 | 一区二区三区 亚洲 | 国产看片免费 | 精品国产一区二区三区四区在线观看 | 美女视频黄免费网站 | 91九色在线视频 | 国产精品岛国久久久久久久久红粉 | 91精品国产高清自在线观看 | 日韩xxx视频| 国产成人亚洲在线电影 | 国产不卡毛片 | 精品一区二区三区四区在线 | 成年人在线看片 | 久久精品婷婷 | 精品久久91 | 国产在线黄 | 成人综合婷婷国产精品久久免费 | 国偷自产中文字幕亚洲手机在线 | 亚洲国产日本 | 亚洲综合网站在线观看 | 国产精品久久久久久久久久久久午夜 | 91精品国产自产91精品 | 香蕉影视app | 97色在线观看免费视频 | 欧美伦理一区二区 | a午夜电影 | 又黄又爽又刺激 | 国产韩国日本高清视频 | 69精品人人人人 | 97在线看| 久久久久久免费毛片精品 | 国产精品日韩欧美一区二区 | 国产精品国产三级国产不产一地 | 精品国产伦一区二区三区观看说明 | 在线观看你懂的网址 | 日韩精品国产一区 | 狠狠狠狠狠狠天天爱 | 色综合久久88色综合天天 | 91在线www| 国产v欧美 | 超级碰碰碰免费视频 | 国产精品123 | 在线播放国产精品 | 日韩首页 | www好男人 | 日韩在线观看高清 | 国产又粗又硬又长又爽的视频 | 亚洲激情网站免费观看 | 五月激情丁香图片 | 中文字幕亚洲国产 | 狠狠干夜夜爽 | 日本一区二区高清不卡 | 天天操天天操 | 91理论电影 | 久久成人免费电影 | 干天天 | 人人操日日干 | 五月婷婷激情 | 国产精品 日韩 欧美 | 少妇精69xxtheporn | 久久免费看a级毛毛片 | 日日操日日插 | 中文免费观看 | 91精品夜夜 | 欧美在线视频a | 人操人| 91精品国产自产在线观看永久 | 在线观看91精品国产网站 | 99精品视频在线看 | 国产成人一区二区三区免费看 | 六月丁香婷婷久久 | av网在线观看 | a视频在线观看 | 欧美一区二区三区免费看 | 国产久视频 | 在线观看网站你懂的 | 91手机视频在线 | 最近中文字幕免费视频 | 日韩黄色免费看 | 久久黄色网页 | 五月天亚洲综合 | 久久精品国产99国产 | 国产精品电影在线 | 久久久国产视频 | 天天操天天操天天操天天操天天操 | 人人插人人看 | 国产第一二区 | 视频在线在亚洲 | 免费视频99 | 日韩亚洲国产精品 | 日韩a级免费视频 | 欧美少妇的秘密 | 九色琪琪久久综合网天天 | 国产 字幕 制服 中文 在线 | 丰满少妇在线观看资源站 | 国产91av视频在线观看 | 久草久 | 97精品在线 | 人人爽人人看 | 久久精品直播 | 国产精品成久久久久三级 | 不卡中文字幕在线 | 精品在线一区二区 | 久久久久成 | 欧美精品小视频 | 久久九九网站 | av三级av| 免费 在线 中文 日本 | 91一区二区三区久久久久国产乱 | 99视频在线免费观看 | 不卡av在线免费观看 | 激情六月婷婷久久 | 亚洲成a人片在线www | 久久久久国产一区二区三区四区 | av福利在线看 | 91精品福利在线 | 国产高清中文字幕 | 欧美日韩中文在线视频 | 婷婷亚洲最大 | 国产一区在线播放 | 91豆花在线观看 | 国产一区在线视频播放 | 亚洲日韩中文字幕在线播放 | 中国一级片视频 | 久久黄色影视 | 日韩大片免费在线观看 | 免费男女羞羞的视频网站中文字幕 | 韩日精品在线 | 91精品办公室少妇高潮对白 | va视频在线| 久久免费播放视频 | 亚洲电影免费 | 成人午夜毛片 | 亚洲国内精品在线 | 天天干天天射天天插 | 综合激情婷婷 | 久草五月| 日韩激情视频在线观看 | 国产精品免费视频一区二区 | 久久精品这里都是精品 | 黄色片网站免费 | 久久免费精彩视频 | 日韩精品一区二区三区高清免费 | 久久久综合精品 | 久青草电影 | 三级性生活视频 | 欧美永久视频 | 国产精品成人av久久 | 欧美性生活久久 | 国产精品美女久久久免费 | 中文字幕资源站 | 婷婷 综合 色 | 久久艹人人| 亚洲午夜久久久影院 | 精品国产中文字幕 | 又黄又爽又色无遮挡免费 | 久久九九精品 | 久久夜色精品国产亚洲aⅴ 91chinesexxx | 国产福利av | 99久在线精品99re8热视频 | 五月婷香 | 97香蕉超级碰碰久久免费软件 | 成人黄色片免费 | 精品一区精品二区高清 | 永久免费精品视频网站 | 成人免费网视频 | 亚洲夜夜综合 | 91福利试看 | 狠狠色丁香婷婷综合欧美 | 免费观看91视频大全 | av一级片| 毛片www | 日本九九视频 | 日韩久久精品一区二区 | 91九色在线观看 | 婷婷丁香九月 | 国产专区日韩专区 | 欧美日韩国产亚洲乱码字幕 | 99久久精品费精品 | 人人干在线 | 国产高清免费视频 | 国产黄在线播放 | 成人午夜免费剧场 | 亚洲国产中文在线 | 欧美成人h版 | 成年美女黄网站色大片免费看 | 午夜精品久久久久久久久久久 | 国产日韩高清在线 | 午夜影院一级片 | 五月天网页 | 国产在线一区二区三区播放 | 久久久久久看片 | 欧美日韩在线观看一区二区 | 黄色日视频 | 欧美国产亚洲精品久久久8v | 国产精品成人一区二区三区吃奶 | 五月综合久久 | av在线观 | 国产精品美女久久久久久网站 | 91大神视频网站 | 91片在线观看 | 免费黄色a网站 | .国产精品成人自产拍在线观看6 | 欧美大片mv免费 | 久久久久国产精品免费 | 五月婷婷在线观看视频 | 精品视频免费 | 天天爱天天操天天爽 | 国产精品久久久久久久久久久久 | 在线观看免费成人av | 久久色亚洲 | 国产精品一区在线播放 | 国产高清av免费在线观看 | 精品免费在线视频 | 国产美女久久久 | 久久色在线观看 | 国产无套精品久久久久久 | www.色爱| 日本少妇高清做爰视频 | 激情图片区 | 青青射 | 黄色官网在线观看 | 亚洲国产三级在线 | 在线看av网址 | 亚洲精品综合一区二区 | 亚洲一级二级三级 | 激情综合网色播五月 | 免费亚洲一区二区 | 成人在线视频你懂的 | 久操视频在线播放 | 91精品国产麻豆 | 免费a网| 日本精品一区二区三区在线播放视频 | 午夜精品视频一区二区三区在线看 | 日韩精品一区二区三区不卡 | 国产一级片一区二区三区 | 精品欧美乱码久久久久久 | 中文av在线免费观看 | 精品一区二区视频 | 日韩区欠美精品av视频 | 不卡电影一区二区三区 | 中文字幕成人 | 国产视频999| 欧美激情精品久久久 | 中文字幕a∨在线乱码免费看 | 欧美一区二区三区在线看 | 日日色综合 | 成人性生交视频 | 成人精品影视 | 天天骚夜夜操 | 亚洲网久久 | 久久伊人热 | 黄污视频网站大全 | 久久久不卡影院 | 天天干天天看 | 成人免费视频a | 91福利在线观看 | 色五婷婷 | 91视频最新网址 | 日韩超碰在线 | 九九视频精品免费 | 国产 欧美 日韩 | 久久久久久久久久久影院 | 又色又爽又黄高潮的免费视频 | 一级一片免费视频 | 天天色天天射综合网 | 久久精品毛片基地 | 午夜 在线| 国产一区二区高清不卡 | 日韩素人在线观看 | 在线国产小视频 | 亚洲天天在线 | 国产极品尤物在线 | 91麻豆精品国产自产在线游戏 | 黄色最新网址 | 99精品视频在线播放观看 | 日韩69视频 | 激情伊人 | 91视频 - 114av | 亚洲欧美va | 国产精品美女久久久 | 在线观看av国产 | 欧美精品免费在线观看 | 亚洲欧美色婷婷 | 97超碰在线久草超碰在线观看 | 又污又黄的网站 | 欧美最猛性xxxxx(亚洲精品) | av一级网站 | 嫩草av影院 | 午夜精品电影 | 久久久久人人 | 国产精品你懂的在线观看 | 欧美精品中文 | 狠狠操精品 | 国产一区免费 | 一级免费看视频 | 开心激情综合网 | 2019免费中文字幕 | 亚洲视频99 | 免费国产在线精品 | 涩av在线| 亚洲国产精品久久久久久 | 伊人看片| 国产精品短视频 | 国产在线精品一区二区 | 国产成人久久av | 五月婷婷六月丁香 | 国产又粗又长又硬免费视频 | 精品一区 在线 | 操操综合网 | 91在线看黄 | 国产在线精品一区二区 | 亚洲九九影院 | 97香蕉久久超级碰碰高清版 | 在线成人观看 | 国产成人免费观看久久久 | 青青河边草免费观看完整版高清 | 波多野结衣在线观看一区二区三区 | 超碰97人人爱 | 欧美亚洲成人xxx | 久久久国产精华液 | 91大神视频网站 | 国产主播大尺度精品福利免费 | 香蕉视频在线免费看 | www激情网 | 一区二区三区久久 | www免费 | 亚洲一二三区精品 | 国产一区二区视频在线 | 国产精品成人a免费观看 | 久久污视频 | 中文字幕二区在线观看 | 日韩有色| 超碰在线97免费 | 中文字幕在线观看一区二区 | 国产日韩欧美在线播放 | 婷婷亚洲综合 | 中文字幕一区二区三区在线视频 | 亚洲视频综合在线 | 欧美精品乱码久久久久久按摩 | 欧美日韩视频一区二区 | 香蕉视频在线免费 | www.久久精品视频 | 欧美综合色在线图区 | 日狠狠 | 欧美一区二区三区在线观看 | 婷婷久久丁香 | 亚洲成人xxx| 久久毛片视频 | 蜜桃视频日本 | 亚洲尺码电影av久久 | 九九九九九精品 | 精品国产1区2区3区 国产欧美精品在线观看 | 日韩精品一卡 | 久久欧洲视频 | 成人免费视频网 | 亚洲国产影院av久久久久 | 伊人国产视频 | 国产精品伦一区二区三区视频 | 精品国产一区二区三区久久影院 | 中文字幕亚洲欧美日韩2019 | 天天色天天射天天干 | 人人干网站 | www99久久 | 97福利在线观看 | 欧美极度另类性三渗透 | 久久不卡视频 | 伊人狠狠色丁香婷婷综合 | 成年人黄色免费网站 | 中国一级特黄毛片大片久久 | 久久久久久久久网站 | 五月天婷婷在线播放 | 日韩精品视频久久 | 亚洲精品麻豆视频 | 开心激情网五月天 | 在线观看免费中文字幕 | 精品a在线| 人人爱在线视频 | 福利区在线观看 | 亚洲人人网 | 草久久久 | 99国产成+人+综合+亚洲 欧美 | 国产中文在线观看 | 亚洲精品在线二区 | 美女黄濒 | 首页av在线 | 97小视频| 97福利视频 | 91免费看黄色 | 全久久久久久久久久久电影 | 最近更新的中文字幕 | 中文字幕日本特黄aa毛片 | 黄在线免费看 | 久久夜色精品国产欧美一区麻豆 | 又色又爽又黄高潮的免费视频 | 成人免费观看大片 | 亚洲亚洲精品在线观看 | 日韩高清精品一区二区 | 九九久久国产 | 国产不卡网站 | 国产中文字幕在线 | 日本福利视频在线 | 国产在线国偷精品产拍免费yy | 欧美va天堂va视频va在线 | 不卡的av | 在线草 | 久久久av电影 | 成人免费一级 | 欧美a级免费视频 | 蜜桃av观看 | 日韩免费一二三区 | 中文字幕在线观看视频免费 | 视频在线一区 | 欧美一级艳片视频免费观看 | 欧美另类激情 | 免费高清无人区完整版 | 日韩欧美精选 | 国产一区私人高清影院 | 91亚洲精品在线 | 中文av网| 日韩网 | 久久乱码卡一卡2卡三卡四 五月婷婷久 | 国产精品久久久久久久免费观看 | 五月天激情电影 | 欧美视屏一区二区 | 天天爱天天射 | 在线观看91视频 | 精品一区二区三区在线播放 | 激情婷婷av | 成年人在线观看网站 | 久久人网 | 亚洲精品乱码久久久久v最新版 | 亚洲日本欧美在线 | 婷婷色网 | 国产亚洲人成网站在线观看 | 免费男女羞羞的视频网站中文字幕 | 狠狠色丁香婷婷综合久小说久 | 国产91aaa | 日韩欧美黄色网址 | 成人高清在线观看 | 操操操操网 | 色综合天天天天做夜夜夜夜做 | 欧美性脚交 | av一区在线 | 亚洲日本黄色 | 国产精品成人一区二区三区吃奶 | 日日操日日插 | 国产精品一区一区三区 | 欧美黑人巨大xxxxx | 一区二区日韩av | 亚洲精品日韩一区二区电影 | 91热爆在线观看 | 国产偷国产偷亚洲清高 | 91丨九色丨国产在线 | 久久精品看片 | 国产大陆亚洲精品国产 | 久久久久久久久免费 | 91刺激视频 | 美女黄频视频大全 | 免费观看xxxx9999片 | 久久视频在线观看 | 夜夜躁天天躁很躁波 | 国产 成人 久久 | 久福利 | 91av视频在线观看 | 色综合久久五月 | 91视频高清完整版 | 在线观看精品一区 | 中文字幕美女免费在线 | 青草视频在线播放 | 91探花国产综合在线精品 | 又黄又刺激的网站 | 久久一线 | 国产精品白丝av | 国产精品一区二区在线看 | 有码一区二区三区 | 天天干 夜夜操 | 亚洲精品国产综合久久 | 手机av在线不卡 | 欧美成人理伦片 | 久草视频在线新免费 | 亚洲毛片久久 | av日韩国产 | 天天搞天天干天天色 | 日本一区二区三区免费看 | 国产中文字幕一区二区三区 | 久久久国产精品网站 | 久久久私人影院 | 2017狠狠干| 欧美,日韩 | 91精品免费在线 | 青青河边草观看完整版高清 | 久爱精品在线 | 日本大尺码专区mv | 香蕉视频免费看 | 欧美一区免费在线观看 | 精品a视频 | av中文天堂在线 | 中文字幕丝袜制服 | 在线视频你懂 | 国产精品高清免费在线观看 | 日本护士撒尿xxxx18 | 国产 一区二区三区 在线 | 欧美一级特黄高清视频 | 亚洲性少妇性猛交wwww乱大交 | 午夜久久 | 97看片| 日韩特级片 | 久久毛片网 | 久久字幕精品一区 | 成年人免费电影在线观看 | 69国产成人综合久久精品欧美 | 久久深夜| 日韩免费电影网站 | 亚洲高清av | 99久久久久国产精品免费 | 欧美精品免费在线观看 | 日韩在线一区二区免费 | 国产精品高潮呻吟久久av无 | 久久久久久亚洲精品 | 亚洲精品乱码久久久久v最新版 | 中文字幕视频免费观看 | 日本精品一二区 | 成年人av在线播放 | 99视频免费| 中文字幕在线国产精品 | 国产一区二区不卡视频 | 欧美性极品xxxx做受 | 91麻豆精品国产91久久久久久 | 成人黄在线| 亚洲视频免费在线 | 色婷婷综合久久久久中文字幕1 | 在线观看你懂的网址 | 免费黄在线观看 | 精品一区在线 | 免费网站在线观看人 | 一区二区三区国产欧美 | 日韩精品久久久久久久电影99爱 | www.com久久久 | 国产综合精品久久 | 在线观看的av | 正在播放国产精品 | 99热精品国产 | 99视频精品 | 亚洲综合成人婷婷小说 | 中文字幕一区二区三区四区在线视频 | 亚洲国产欧美在线人成大黄瓜 | 黄色资源网站 | 黄色亚洲| 在线av资源| 国产精品婷婷 | 在线视频免费观看 | 国产精品久久久久久久久久直播 | 日韩av电影中文字幕在线观看 | 免费三及片 | 国产高清视频在线播放 | 国产又粗又硬又长又爽的视频 | 免费看的黄色的网站 | www.色com| 四月婷婷在线观看 | av免费在线观看1 | 中文字幕av免费在线观看 | 99草在线视频 | 欧美va天堂va视频va在线 | 亚洲在线资源 | 人人射人人插 | 日韩午夜视频在线观看 | 欧美 亚洲 另类 激情 另类 | 国产一级高清视频 | 韩日三级在线 | 亚洲视频网站在线观看 | 综合激情 | 久久久久久久久久久久久久电影 | 成人一级免费电影 | 网址你懂的在线观看 | 久草国产视频 | 最近免费中文字幕大全高清10 | 天天射天天色天天干 | 日韩高清二区 | 夜夜爱av | 黄网站app在线观看免费视频 | 色吧av色av | 不卡的一区二区三区 | 久草在线免费资源站 | 日韩免费在线视频 | 亚洲天天摸日日摸天天欢 | 美女av电影 | 国产在线中文字幕 | 日韩中文字幕免费看 | 精品一区二区免费 | 日韩专区在线 | 免费av网址大全 | 久久精品视频免费观看 | 又黄又爽又无遮挡免费的网站 | 99视| 夜夜躁天天躁很躁波 | 午夜精品av| 久久久久久久99 | 黄污视频大全 | 亚洲91中文字幕无线码三区 | 九九九热精品免费视频观看 | www.日韩免费 | 91九色成人蝌蚪首页 | 久久乐九色婷婷综合色狠狠182 | 999色视频 | 色天堂在线视频 | 99久久久国产精品免费观看 | 蜜臀久久99静品久久久久久 | 国产99区 | 欧美精品v国产精品 | 又色又爽又黄高潮的免费视频 | 性色av香蕉一区二区 | 免费看的国产视频网站 | 激情婷婷在线观看 | 韩日av一区二区 | 天堂资源在线观看视频 | 黄色网址中文字幕 | 黄色小说在线观看视频 | 午夜精品三区 | www国产一区 | 可以免费观看的av片 | 国产一区二区不卡视频 | 四虎4hu永久免费 | 性色大片在线观看 | 久久人人爽人人片av | 亚洲欧美综合精品久久成人 | 色婷婷婷| 久久精品99久久久久久 | 亚洲精品高清在线 | 日韩最新av | 日韩av电影免费观看 | 91成人在线网站 | 国产福利在线不卡 | 成人av日韩| 成人app在线播放 | 久久日本视频 | 日韩精品观看 | 久久综合爱 | 91在线免费视频观看 | 国产精品中文久久久久久久 | 国内精品久久久久久久久久清纯 | 天天av天天 | av高清在线观看 | 超碰97免费观看 | 欧美日韩一区二区视频在线观看 | 高清av不卡| 中文字幕在线观看视频免费 | 99精品黄色片免费大全 | 99在线观看免费视频精品观看 | 久久99精品久久久久蜜臀 | 深夜成人av | 中文国产在线观看 | 久久久久看片 | 手机av电影在线观看 | 久久久久久毛片精品免费不卡 | 精品视频在线播放 | 婷婷久久精品 | 91手机视频 | 黄av在线| 欧美一区成人 | 国产h在线播放 | 亚洲码国产日韩欧美高潮在线播放 | 国产精品人人做人人爽人人添 | 黄p网站在线观看 | 操操碰| 一本色道久久综合亚洲二区三区 | 国产在线更新 | 亚洲dvd | 国产精品麻豆一区二区三区 | 人人澡人人草 | www.久久免费 | 日韩在线中文字幕 | 久久精品一级片 | 国产.精品.日韩.另类.中文.在线.播放 | 欧美极度另类性三渗透 | 在线电影av | 精品国产乱码久久久久久1区2匹 | 午夜色婷婷 | 97精品在线视频 | 亚洲天天摸日日摸天天欢 | 国产我不卡 | 三级黄色在线 | 欧美一区二区三区免费看 | 久久久精品电影 | 国产精品免费观看久久 | 日日婷婷夜日日天干 | 不卡的一区二区三区 | 国产精品久久久精品 | 99热在线网站 | 久久久国产精品亚洲一区 | 国产黄色电影 | 91视频88av | 18pao国产成视频永久免费 | 亚洲精品在线免费 | 日本免费一二三区 | 欧美一区二区在线刺激视频 | 免费色av | 色婷婷视频在线 | 国产亚洲人成网站在线观看 | 超碰人人在线观看 | 亚洲男女精品 | 国内外成人免费在线视频 | av在线进入 | 97在线观看 | av免费电影在线观看 | 91cn国产在线 | 不卡视频在线 | 日韩美女一级片 | 国产不卡免费视频 | 91精品国产入口 | 久久9999久久免费精品国产 | 久久精品日韩 | 一区二区三区www | 玖操 | 天天操天天玩 | 九色91福利 | 亚洲人人网 | 激情黄色av | 久久久久高清毛片一级 | 精品美女久久久久久免费 | 色婷婷激婷婷情综天天 | 在线观看中文字幕 | 久草免费电影 | 亚洲国产剧情av | 丁香5月婷婷 | 99精品国产一区二区三区不卡 | 国产999视频在线观看 | 成年人免费在线播放 | 国产亚洲在线 | 91在线视频导航 | 在线观看视频 | 国产麻豆果冻传媒在线观看 | 777xxx欧美| 国产精品国产三级国产不产一地 | 国产做aⅴ在线视频播放 | 欧美贵妇性狂欢 | 成人a视频| 久久久久久综合 | 久久999精品| 国产激情小视频在线观看 | 日韩精品欧美一区 | 黄色三级网站 | 国产一卡久久电影永久 | 国产色一区 | 麻豆视频免费看 | 国产欧美日韩精品一区二区免费 | 成年性视频 | 国产精品久久久久9999吃药 | 国产在线观看h | 亚洲精品视频在线播放 | 国产精品久久久久av | 国产白浆在线观看 | 欧美精品二 | av成人免费网站 | 国产在线观看h | 国产精品久久久久婷婷 | 日韩有码在线观看视频 | 久久中文字幕在线视频 | 高清不卡一区二区在线 | 久久人视频 | 免费成人av在线看 | 日韩极品视频在线观看 | 免费黄色在线播放 | 午夜在线观看一区 | 免费开视频 | av在线电影播放 | 国产精品99久久久久久人免费 | 999热线在线观看 | 一区二区中文字幕在线播放 | 夜夜操综合网 | 不卡电影免费在线播放一区 | 综合精品在线 | 亚洲黄色小说网 | 欧美久久影院 | av福利在线看 | 国产亚洲精品久久久久5区 成人h电影在线观看 | 精品亚洲一区二区 | 在线亚州 | 久久精品96| 91日韩在线播放 | 人人超碰免费 | 91精品中文字幕 | 亚洲女同ⅹxx女同tv | 麻豆91在线观看 | 亚洲视频久久 | 久久一级片 | 色播亚洲婷婷 | 久久天天躁 | 91精品国产综合久久婷婷香蕉 | 久久激情五月丁香伊人 | 亚洲无在线 | 国产午夜一级毛片 | 天天色天天射天天综合网 | 五月精品 | 午夜精品久久久久久久99水蜜桃 | 日操操| 99操视频 | 国产精品美女久久久久久久 | 国产精品久久久久久久久久久久 | 日韩剧| 久久99热精品这里久久精品 | 粉嫩av一区二区三区免费 | 久久久久国产精品www | 欧美一级视频在线观看 | 五月花婷婷 | 91免费在线看片 | 91精品秘密在线观看 | www91在线观看 | 亚洲人成人天堂h久久 | 国产高清视频在线免费观看 | 99 色| 高清不卡一区二区三区 | 在线 国产 亚洲 欧美 | 国产日韩欧美视频在线观看 | 中文成人字幕 | 色综合a| 天天插天天色 | 久久久久久久久福利 | 97超碰免费在线观看 | 精品久久一二三区 | 精品国产成人在线影院 | 午夜精品久久久久久久久久久久久久 | 97精品超碰一区二区三区 | 蜜臀久久99静品久久久久久 | 欧美日韩另类在线观看 | 在线观看国产麻豆 | 欧美91在线| 五月婷婷视频在线观看 | 91香蕉国产在线观看软件 | 91视频久久久 | 91av99| 日韩在线一二三区 | 欧美午夜剧场 | 国产高清成人在线 | 精壮的侍卫呻吟h | 欧美日韩精品在线观看视频 | 久草视频在线看 | 日韩综合一区二区 | 96亚洲精品久久久蜜桃 | 免费毛片一区二区三区久久久 | 日本老少交| 人人草网站 | 免费a v观看 | 欧美精品一区二区在线播放 | 亚洲电影影音先锋 | 国产在线一线 | 精品久久久久久亚洲综合网站 | 国产精品手机看片 | 狠狠狠色丁香婷婷综合久久五月 | 久久成人免费视频 | 日本三级在线观看中文字 | 国产精品女人久久久久久 | 色婷婷av一区 | 狠狠狠色 | 黄色小说视频网站 | 日韩欧美电影 | 玖玖色在线观看 | 国产最新视频在线 | 国产美女被啪进深处喷白浆视频 | 在线观看国产91 | 久久精品官网 | 久久婷婷色综合 | 91精品在线播放 | 国产成人精品久久亚洲高清不卡 | 黄污网站在线观看 | 国产精品久久久久久久久免费 | 欧美精品999 | а天堂中文最新一区二区三区 | 99re国产视频 | 亚洲国产日韩一区 | 免费av 在线 | 国产亚洲精品日韩在线tv黄 | 欧美日韩在线视频观看 | 婷婷国产v亚洲v欧美久久 | 久久视频一区 | 69xxxx欧美| jizzjizzjizz亚洲| 婷婷色在线资源 | 一区二区在线不卡 | 99精品视频99| 精品一区二区影视 | 国产中文字幕视频在线观看 | 久久免费黄色网址 | 国产精品11 | 亚洲精品国产欧美在线观看 | 欧美午夜剧场 | 天天曰视频 | va视频在线| av成人免费在线观看 | 亚洲专区一二三 | 久久久久久久综合色一本 | 91精品欧美一区二区三区 | 日韩电影在线观看一区 | 天天干天天干天天色 | 久久精品视频在线 | 日韩久久久久 | 超碰成人av | 婷婷在线不卡 | 亚洲自拍自偷 | 91麻豆精品国产91久久久无需广告 | 中文字幕 91 | 中文字幕免费观看全部电影 | 在线三级播放 | 91精品国产一区二区三区 | 999成人免费视频 | 不卡的av电影在线观看 | 婷婷综合av| 久久精品欧美 | 婷婷中文字幕 | 久久99偷拍视频 | 日本三级吹潮在线 | 欧美日韩亚洲在线 | 97在线看| 91丨九色丨丝袜 | 91一区二区三区在线观看 | 三级av网站 | 色综合天天爱 | 日本成人中文字幕在线观看 | 在线观看国产区 | 国产亚洲资源 | 午夜 久久 tv| www.黄色在线| 久久久免费观看视频 | 久久中文字幕在线视频 | 欧美精品一区在线 | 91成人区| 亚洲黄色片在线 | 91精品久久久久久久91蜜桃 | 少妇性aaaaaaaaa视频 | 亚洲精品动漫成人3d无尽在线 | 久久久久久久久久久久亚洲 | 欧美成人亚洲 | 在线观看91久久久久久 | 911精品美国片911久久久 | 亚洲永久精品国产 | 国产成人综合在线观看 | 69视频网站 | 欧美精品资源 | 亚洲精品中文字幕在线观看 | 韩国精品视频在线观看 | 日韩大片免费观看 | 网站免费黄 | 亚洲精品久久久久999中文字幕 | 九九日九九操 | 欧美激情综合五月 | 特级黄色视频毛片 | 99久久毛片| 视频二区在线 | 丁香久久激情 | 天天干天天操天天射 | 中文不卡视频在线 | 国产香蕉97碰碰碰视频在线观看 | 正在播放一区 | 精品国产aⅴ麻豆 | 国产精品18久久久久久久网站 | 欧美日韩不卡一区二区 |