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

歡迎訪問 生活随笔!

生活随笔

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

linux

让事件飞——Linux eventfd 原理

發布時間:2023/12/9 linux 59 豆豆
生活随笔 收集整理的這篇文章主要介紹了 让事件飞——Linux eventfd 原理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

讓事件飛——Linux eventfd 原理
讓事件飛 ——Linux eventfd 原理與實踐
原文作者:楊陽

  • eventfd/timerfd 簡介
    目前越來越多的應用程序采用事件驅動的方式實現功能,如何高效地利用系統資源實現通知的管理和送達就愈發變得重要起來。在Linux系統中,eventfd是一個用來通知事件的文件描述符,timerfd是的定時器事件的文件描述符。二者都是內核向用戶空間的應用發送通知的機制,可以有效地被用來實現用戶空間的事件/通知驅動的應用程序。
  • 簡而言之,就是eventfd用來觸發事件通知,timerfd用來觸發將來的事件通知。

    開發者使用eventfd相關的系統調用,需要包含頭文件;對于timerfd,則是。

    系統調用eventfd/timerfd自linux 2.6.22版本加入內核,由Davide Libenzi最初實現和維護。

  • 接口及參數介紹
    eventfd
    對于eventfd,只有一個系統調用接口
  • 1int eventfd(unsigned int initval, int flags);
    創建一個eventfd對象,或者說打開一個eventfd的文件,類似普通文件的open操作。

    該對象是一個內核維護的無符號的64位整型計數器。初始化為initval的值。

    flags可以以下三個標志位的OR結果:

    EFD_CLOEXEC:FD_CLOEXEC,簡單說就是fork子進程時不繼承,對于多線程的程序設上這個值不會有錯的。
    EFD_NONBLOCK:文件會被設置成O_NONBLOCK,一般要設置。
    EFD_SEMAPHORE:(2.6.30以后支持)支持semophore語義的read,簡單說就值遞減1。
    這個新建的fd的操作很簡單:

    read(): 讀操作就是將counter值置0,如果是semophore就減1。

    write(): 設置counter的值。

    注意,還支持epoll/poll/select操作,當然,以及每種fd都都必須實現的close。

    timerfd
    對于timerfd,有三個涉及的系統調用接口

    1int timerfd_create(int clockid, int flags);int timerfd_settime(int fd, int flags,
    2 const struct itimerspec *new_value,
    3 struct itimerspec *old_value);int timerfd_gettime(int fd, struct itimerspec *curr_value);
    timerfd_create就是用來創建新的timerfd對象,clockid可以指定時鐘的種類,比較常用的有兩種:CLOCK_REALTIME(實時時鐘)或 CLOCK_MONOTONIC(單調遞增時鐘)。實時時鐘是指系統的時鐘,它可以被手工修改。而后者單調遞增時鐘則是不會被系統時鐘的人為設置的不連續所影響的。通常選擇后者。而flags的選擇,TFD_CLOEXEC和TFD_NONBLOCK的意義就比較直接了。

    timerfd_settime函數用來設置定時器的過期時間expiration。itmerspec結構定義如下:

    1struct timespec {
    2 time_t tv_sec; /* Seconds /
    3 long tv_nsec; / Nanoseconds /};struct itimerspec {
    4 struct timespec it_interval; / Interval for periodic timer /
    5 struct timespec it_value; / Initial expiration */};
    該結構包含兩個時間間隔:it_value是指第一次過期時間,it_interval是指第一次到期之后的周期性觸發到期的間隔時間,(設為0的話就是到期第一次)。

    old_value如果不為NULL,將會用調用時間來更新old_value所指的itimerspec結構對象。

    timerfd_gettime():返回當前timerfd對象的設置值到curr_value指針所指的對象。

    read():讀操作的語義是:如果定時器到期了,返回到期的次數,結果存在一個8字節的整數(uint64_6);如果沒有到期,則阻塞至到期,或返回EAGAIN(取決于是否設置了NONBLOCK)。

    另外,支持epoll,同eventfd。

  • 使用實例 - 實現高性能消費者線程池
    生產者-消費者設計模式是常見的后臺架構模式。本實例將實現多個生產者和多個消費者的事件通知框架,用以闡釋eventfd/timerfd在線程通信中作為通知實現的典型場景。
  • 本實例采用以下設計:生產者創建eventfd/timerfd并在事件循環中注冊事件;消費者線程池中的線程共用一個epoll對象,每個消費者線程并行地進行針對eventfd或timerfd觸發的事件循環的輪詢(epoll_wait)。

    eventfd對應實現
    1typedef struct thread_info {
    2 pthread_t thread_id;
    3 int rank;
    4 int epfd;} thread_info_t;static void *consumer_routine(void *data) {
    5 struct thread_info *c = (struct thread_info *)data;
    6 struct epoll_event *events;
    7 int epfd = c->epfd;
    8 int nfds = -1;
    9 int i = -1;
    10 uint64_t result;
    11
    12 log(“Greetings from [consumer-%d]”, c->rank);
    13 events = calloc(MAX_EVENTS_SIZE, sizeof(struct epoll_event));
    14 if (events == NULL) handle_error(“calloc epoll events\n”);
    15
    16 for (;😉 {
    17 nfds = epoll_wait(epfd, events, MAX_EVENTS_SIZE, 1000); // poll every second
    18 for (i = 0; i < nfds; i++) {
    19 if (events[i].events & EPOLLIN) {
    20 log("[consumer-%d] got event from fd-%d", c->rank, events[i].data.fd);
    21 // consume events (reset eventfd)
    22 read(events[i].data.fd, &result, sizeof(uint64_t));
    23 close(events[i].data.fd); // NOTE: need to close here
    24 }
    25 }
    26 }}static void *producer_routine(void *data) {
    27 struct thread_info *p = (struct thread_info *)data;
    28 struct epoll_event event;
    29 int epfd = p->epfd;
    30 int efd = -1;
    31 int ret = -1;
    32
    33 log(“Greetings from [producer-%d]”, p->rank);
    34 while (1) {
    35 sleep(1);
    36 // create eventfd (no reuse, create new every time)
    37 efd = eventfd(1, EFD_CLOEXEC|EFD_NONBLOCK);
    38 if (efd == -1) handle_error(“eventfd create: %s”, strerror(errno));
    39 // register to poller
    40 event.data.fd = efd;
    41 event.events = EPOLLIN | EPOLLET; // Edge-Triggered
    42 ret = epoll_ctl(epfd, EPOLL_CTL_ADD, efd, &event);
    43 if (ret != 0) handle_error(“epoll_ctl”);
    44 // trigger (repeatedly)
    45 write(efd, (void *)0xffffffff, sizeof(uint64_t));
    46 }}int main(int argc, char *argv[]) {
    47 struct thread_info *p_list = NULL, *c_list = NULL;
    48 int epfd = -1;
    49 int ret = -1, i = -1;
    50 // create epoll fd
    51 epfd = epoll_create1(EPOLL_CLOEXEC);
    52 if (epfd == -1) handle_error(“epoll_create1: %s”, strerror(errno));
    53 // producers
    54 p_list = calloc(NUM_PRODUCERS, sizeof(struct thread_info));
    55 if (!p_list) handle_error(“calloc”);
    56 for (i = 0; i < NUM_PRODUCERS; i++) {
    57 p_list[i].rank = i;
    58 p_list[i].epfd = epfd;
    59 ret = pthread_create(&p_list[i].thread_id, NULL, producer_routine, &p_list[i]);
    60 if (ret != 0) handle_error(“pthread_create”);
    61 }
    62 // consumers
    63 c_list = calloc(NUM_CONSUMERS, sizeof(struct thread_info));
    64 if (!c_list) handle_error(“calloc”);
    65 for (i = 0; i < NUM_CONSUMERS; i++) {
    66 c_list[i].rank = i;
    67 c_list[i].epfd = epfd;
    68 ret = pthread_create(&c_list[i].thread_id, NULL, consumer_routine, &c_list[i]);
    69 if (ret != 0) handle_error(“pthread_create”);
    70 }
    71 // join and exit
    72 for (i = 0; i < NUM_PRODUCERS; i++) {
    73 ret = pthread_join(p_list[i].thread_id, NULL);
    74 if (ret != 0) handle_error(“pthread_join”);
    75 }
    76 for (i = 0; i < NUM_CONSUMERS; i++) {
    77 ret = pthread_join(c_list[i].thread_id, NULL);
    78 if (ret != 0) handle_error(“pthread_join”);
    79 }
    80 free(p_list);
    81 free(c_list);
    82 return EXIT_SUCCESS;}
    執行過程(2個生產者,4個消費者):

    1[1532099804] Greetings from [producer-0]
    2[1532099804] Greetings from [producer-1]
    3[1532099804] Greetings from [consumer-0]
    4[1532099804] Greetings from [consumer-1]
    5[1532099804] Greetings from [consumer-2]
    6[1532099804] Greetings from [consumer-3]
    7[1532099805] [consumer-3] got event from fd-4
    8[1532099805] [consumer-3] got event from fd-5
    9[1532099806] [consumer-0] got event from fd-4
    10[1532099806] [consumer-0] got event from fd-4
    11[1532099807] [consumer-1] got event from fd-4
    12[1532099807] [consumer-1] got event from fd-5
    13[1532099808] [consumer-3] got event from fd-4
    14[1532099808] [consumer-3] got event from fd-5
    15^C
    結果符合預期(附:源碼鏈接)

    注意,推薦在eventfd在打開時設置NON_BLOCKING,并在注冊至epoll監聽對象時設為EPOLLET(盡管一次8字節的read就可以讀完整個計數器到用戶空間),因為畢竟,只有采用了非阻塞IO和邊沿觸發,epoll的并發能力才能完全發揮極致。

    另外,本實例中的eventfd消費地非常高效,fd號幾乎不會超過5(前四個分別為stdin/stdout/stderr/eventpoll),但實際應用中往往在close前會執行一些事務,隨著消費者線程的增加,eventfd打開的文件也會增加(這個數值得上限由系統的ulimit -n決定)。然而,eventfd打開、讀寫和關閉都效非常高,因為它本質并不是文件,而是kernel在內核空間(內存中)維護的一個64位計數器而已。

    timerfd對應實現
    main函數和consumer線程實現幾乎一致,而producer線程創建timerfd,并注冊到事件循環中。

    timer的it_value設為1秒,即第一次觸發為1秒以后;it_interval設為3秒,即后續每3秒再次觸發一次。

    注意,timerfd_settime函數的位置與之前eventfd的write的相同,二者達到了類似的設置事件的作用,只不過這次是定時器事件。

    1static void *producer_routine(void *data) {
    2 struct thread_info *p = (struct thread_info *)data;
    3 struct epoll_event event;
    4 int epfd = p->epfd;
    5 int tfd = -1;
    6 int ret = -1;
    7 struct itimerspec its;
    8 its.it_value.tv_sec = 1; // initial expiration
    9 its.it_value.tv_nsec = 0;
    10 its.it_interval.tv_sec = 3; // interval
    11 its.it_interval.tv_nsec = 0;
    12
    13 log(“Greetings from [producer-%d]”, p->rank);
    14 // create timerfd
    15 tfd = timerfd_create(CLOCK_MONOTONIC, TFD_CLOEXEC|TFD_NONBLOCK);
    16 if (tfd == -1) handle_error(“timerfd create: %s”, strerror(errno));
    17 // register to poller
    18 event.data.fd = tfd;
    19 event.events = EPOLLIN | EPOLLET; // Edge-Triggered
    20 ret = epoll_ctl(epfd, EPOLL_CTL_ADD, tfd, &event);
    21 if (ret != 0) handle_error(“epoll_ctl”);
    22 // register timer expired in future
    23 ret = timerfd_settime(tfd, 0, &its, NULL);
    24 if (ret != 0) handle_error(“timerfd settime”);
    25 return (void *)0;}
    執行過程(2個生產者,4個消費者):

    1[1532099143] Greetings from [producer-1]
    2[1532099143] Greetings from [consumer-1]
    3[1532099143] Greetings from [consumer-2]
    4[1532099143] Greetings from [consumer-3]
    5[1532099143] Greetings from [consumer-0]
    6[1532099143] Greetings from [producer-0]
    7[1532099144] [consumer-3] got event from fd-4
    8[1532099144] [consumer-3] got event from fd-5
    9[1532099147] [consumer-3] got event from fd-4
    10[1532099147] [consumer-3] got event from fd-5
    11[1532099150] [consumer-0] got event from fd-4
    12[1532099150] [consumer-0] got event from fd-5
    13[1532099153] [consumer-1] got event from fd-4
    14[1532099153] [consumer-1] got event from fd-5
    15^C

    從上圖可以看出,運行時打開的fd-4和fd-5兩個文件描述符即是timerfd。

    結果符合預期(附:源碼鏈接)

  • 典型應用場景及優勢
    引用eventfs的Manual中NOTE段落的第一句話:
  • Applications can use an eventfd file descriptor instead of a pipe in all cases where a pipe is used simply to signal events.

    在信號通知的場景下,相比pipe有非常大的資源和性能優勢。其根本在于counter(計數器)和channel(數據信道)的區別。

    第一,是打開文件數量的巨大差別。由于pipe是半雙工的傳統IPC方式,所以兩個線程通信需要兩個pipe文件,而用eventfd只要打開一個文件。眾所周知,文件描述符可是系統中非常寶貴的資源,linux的默認值也只有1024而已。那開發者可能會說,1相比2也只節省了一半嘛。要知道pipe只能在兩個進程/線程間使用,并且是面向連接(類似TCP socket)的,即需要之前準備好兩個pipe;而eventfd是廣播式的通知,可以多對多的。如上面的NxM的生產者-消費者例子,如果需要完成全雙工的通信,需要NxMx2個的pipe,而且需要提前建立并保持打開,作為通知信號實在太奢侈了,但如果用eventfd,只需要在發通知的時候瞬時創建、觸發并關閉一個即可。
    第二,是內存使用的差別。eventfd是一個計數器,內核維護幾乎成本忽略不計,大概是自旋鎖+喚醒隊列(后續詳細介紹),8個字節的傳輸成本也微乎其微。但pipe可就完全不是了,一來一回數據在用戶空間和內核空間有多達4次的復制,而且更糟糕的是,內核還要為每個pipe分配至少4K的虛擬內存頁,哪怕傳輸的數據長度為0。
    第三,對于timerfd,還有精準度和實現復雜度的巨大差異。由內核管理的timerfd底層是內核中的hrtimer(高精度時鐘定時器),可以精確至納秒(1e-9秒)級,完全勝任實時任務。而用戶態要想實現一個傳統的定時器,通常是基于優先隊列/二叉堆,不僅實現復雜維護成本高,而且運行時效率低,通常只能到達毫秒級。
    所以,第一個最佳實踐法則:當pipe只用來發送通知(傳輸控制信息而不是實際數據),放棄pipe,放心地用eventfd/timerfd,“in all cases”。

    另外一個重要優勢就是eventfd/timerfd被設計成與epoll完美結合,比如支持非阻塞的讀取等。事實上,二者就是為epoll而生的(但是pipe就不是,它在Unix的史前時代就有了,那時不僅沒有epoll連Linux都還沒誕生)。應用程序可以在用epoll監控其他文件描述符的狀態的同時,可以“順便“”一起監控實現了eventfd的內核通知機制,何樂而不為呢?

    所以,第二個最佳實踐法則:eventfd配上epoll才更搭哦。

  • 內核實現細節
    eventfd在內核源碼中,作為syscall實現在內核源碼的 fs/eventfd.c下。從Linux 2.6.22版本引入內核,在2.6.27版本以后加入對flag的支持。以下分析參考Linux 2.6.27源碼。
  • 內核中的數據結構:eventfd_ctx

    該結構除了包括之前所介紹的一個64位的計數器,還包括了等待隊列頭節點(較新的kernel中還加上了一個kref)。

    定義和初始化過程核心代碼如下,比較直接:內核malloc,設置count值,創建eventfd的anon_inode。

    1struct eventfd_ctx {
    2 wait_queue_head_t wqh;
    3 __u64 count;};
    以下為創建eventfd的函數的片段,比較直接。

    1SYSCALL_DEFINE2(eventfd2, unsigned int, count, int, flags) {
    2 // …
    3 ctx = kmalloc(sizeof(*ctx), GFP_KERNEL);
    4 if (!ctx)
    5 return -ENOMEM;
    6 init_waitqueue_head(&ctx->wqh);
    7 ctx->count = count;
    8 fd = anon_inode_getfd("[eventfd]", &eventfd_fops, ctx,
    9 flags & (O_CLOEXEC | O_NONBLOCK));
    10 // …}
    稍提一下,等待隊列是內核中的重要數據結構,在進程調度、異步通知等多種場景都有很多的應用。其節點結構并不復雜,即自帶自旋鎖的雙向循環鏈表的節點,如下:

    1struct __wait_queue_head {
    2 spinlock_t lock;
    3 struct list_head task_list;};typedef struct __wait_queue_head wait_queue_head_t;
    等待隊列中存放的是task(內存中對線程的抽象)的結構。

    操作等待隊列的函數主要是和調度相關的函數,如:wake_up和schedule,它們位于sched.c中,前者即喚醒當前等待隊列中的task,后者為當前task主動讓出CPU時間給等待隊列中的其他task。這樣,便通過等待隊列實現了多個task在運行中(TASK_RUNNING)和IO等待(TASK_INTERRUPTABLE)中的狀態切換。

    讓我們一起復習下,系統中進程的狀態轉換:

    TASK_RUNNING: 正在在CPU上運行,或者在執行隊列(run queue)等待被調度執行。
    TASK_INTERRUPTIBLE: 睡眠中等待默寫事件出現,task可以被信號打斷,一旦接收到信號或顯示調用了wake-up,轉為TASK_RUNNING狀態。常見于IO等待中。
    清楚了task的兩種狀態以及run queue / wait queue原理,read函數就不難理解了。

    以下是read函數的實現:

    1static ssize_t eventfd_read(struct file *file, char __user *buf, size_t count,
    2 loff_t *ppos){
    3 struct eventfd_ctx *ctx = file->private_data;
    4 ssize_t res;
    5 __u64 ucnt;
    6 DECLARE_WAITQUEUE(wait, current);
    7
    8 if (count < sizeof(ucnt))
    9 return -EINVAL;
    10 spin_lock_irq(&ctx->wqh.lock);
    11 res = -EAGAIN;
    12 ucnt = ctx->count;
    13 if (ucnt > 0)
    14 res = sizeof(ucnt);
    15 else if (!(file->f_flags & O_NONBLOCK)) {
    16 __add_wait_queue(&ctx->wqh, &wait);
    17 for (res = 0;😉 {
    18 set_current_state(TASK_INTERRUPTIBLE);
    19 if (ctx->count > 0) {
    20 ucnt = ctx->count;
    21 res = sizeof(ucnt);
    22 break;
    23 }
    24 if (signal_pending(current)) {
    25 res = -ERESTARTSYS;
    26 break;
    27 }
    28 spin_unlock_irq(&ctx->wqh.lock);
    29 schedule();
    30 spin_lock_irq(&ctx->wqh.lock);
    31 }
    32 __remove_wait_queue(&ctx->wqh, &wait);
    33 __set_current_state(TASK_RUNNING);
    34 }
    35 if (res > 0) {
    36 ctx->count = 0;
    37 if (waitqueue_active(&ctx->wqh))
    38 wake_up_locked(&ctx->wqh);
    39 }
    40 spin_unlock_irq(&ctx->wqh.lock);
    41 if (res > 0 && put_user(ucnt, (__u64 __user *) buf))
    42 return -EFAULT;
    43
    44 return res;}
    read操作目的是要將count值返回用戶空間并清零。ctx中的count值是共享數據,通過加irq自旋鎖實現對其的獨占安全訪問,spin_lock_irq函數可以禁止本地中斷和搶占,在SMP體系中也是安全的。從源碼可以看出,如果是對于(通常的epoll中的,也是上面實例中的)非阻塞讀,count大于0則直接返回并清零,count等于0則直接返回EAGAIN。

    對于阻塞讀,如果count值為0則加入等待隊列并阻塞,直到值不為0時(被其他線程更新)返回。阻塞是如何實現的呢?是通過TASK_INTERRUPTABLE狀態下的循環加schedule。注意,schedule前釋放了自旋鎖,意味著允許其他線程更新值,只要值被更新大于0且又再次獲得cpu時間,那么就可以跳出循環繼續執行而返回了。

    考慮一個情景,兩個線程幾乎同時read請求,那么:兩個都會被加入到等待隊列中,當第一個搶到自旋鎖,返回了大于1的res并重置了count為0,此時它會(在倒數第二個if那里) 第一時間喚醒等待隊列中的其他線程,此時第二個線程被調度到,于是開始了自己的循環等待。即實現了:事件只會通知到第一個接收到的線程。

    那么問題來了:我們知道在其他線程write后,阻塞的read線程是馬上返回的。那么如何能在count置一旦不為0時,等待的調度的阻塞讀線程可以盡快地再次獲得cpu時間,從而繼續執行呢?關鍵在于write函數也有當確認可以成功返回時,主動調用wakeup_locked的過程,這樣就能實現write后立即向等待隊列通知的效果了。

    write操作與read操作過程非常相似,不在此展開。

    關于poll操作的核心代碼如下:

    1// …
    2 spin_lock_irqsave(&ctx->wqh.lock, flags);
    3 if (ctx->count > 0)
    4 events |= POLLIN;
    5 if (ctx->count == ULLONG_MAX)
    6 events |= POLLERR;
    7 if (ULLONG_MAX - 1 > ctx->count)
    8 events |= POLLOUT;
    9 spin_unlock_irqrestore(&ctx->wqh.lock, flags);
    在count值大于0時,返回了設置POLLIN標志的事件,使得用戶層的應用可以通過epoll監控 eventfd的可讀事件狀態。

  • 本篇小結
    通過對eventfd/timerfd的接口和實現的了解,可以看出其不僅功能實用,而且調用方式簡單。另外,其實現是非常精巧高效的,構建于內核眾多系統基礎核心功能之上,為用戶態的應用封裝了十分高效簡單的事件通知機制。

  • 參考資料
    Linux 內核源碼 https://elixir.bootlin.com/linux/latest/source/fs/eventfd.c

  • Linux Programmer’s Manual eventfd(2) - Linux manual page

    總結

    以上是生活随笔為你收集整理的让事件飞——Linux eventfd 原理的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    在线免费观看视频一区 | 天天玩天天操天天射 | 国产在线观看污片 | aaa黄色毛片| 国产福利精品一区二区 | 日韩在线视频线视频免费网站 | 久久婷婷精品 | 久久精品播放 | 国产免费观看久久 | 日韩色av色资源 | 黄色aaa毛片 | 色综合色综合色综合 | 国产精品一区在线观看 | 国产精品18久久久久久久 | 国产成人精品网站 | 丁香资源影视免费观看 | 在线中文字幕av观看 | 色网站在线免费观看 | 欧美精品一区二区在线观看 | 国产亚洲亚洲 | 日韩在线欧美在线 | 色综合五月 | www.大网伊人 | 最近中文字幕mv免费高清在线 | 精品国产中文字幕 | 最近日本中文字幕 | 91色蜜桃| 欧美激情视频一二区 | 久久激情五月丁香伊人 | 日韩免 | 中文字幕一区二区三区久久蜜桃 | 国内精品福利视频 | 免费在线观看污网站 | 狠狠伊人| 69久久夜色精品国产69 | 中字幕视频在线永久在线观看免费 | 午夜三级大片 | 91精品一区二区三区蜜臀 | 国产对白av| 爱色av.com | 911久久香蕉国产线看观看 | 成人理论电影 | 午夜精品久久久久久久99水蜜桃 | 精品国产一区二区三区噜噜噜 | 黄av资源 | 中文字幕精品一区 | 国产精品美女久久久网av | 国产黄网在线 | 中文字幕在线观看第一区 | 亚洲精品永久免费视频 | 国产亚洲精品久久19p | www..com毛片| 永久中文字幕 | 久久久久久久久久久久久久电影 | 天天操福利视频 | 色婷婷亚洲精品 | 四虎成人av | 日本久久精品视频 | 亚洲国产wwwccc36天堂 | 亚洲四虎 | 亚洲午夜久久久久久久久久久 | 婷婷六月中文字幕 | 日韩精品中文字幕久久臀 | 免费a级大片 | 国产黄| 国产日韩欧美网站 | 精品免费国产一区二区三区四区 | 粉嫩av一区二区三区免费 | 成人国产精品一区 | 欧美资源在线观看 | www.亚洲精品 | 在线观看日韩 | 国产原厂视频在线观看 | 最近免费观看的电影完整版 | 婷婷在线视频 | 亚洲激精日韩激精欧美精品 | 久久99热国产 | www.夜夜 | 成年人黄色免费网站 | 中文字幕av在线播放 | 欧美日韩高清在线一区 | 日韩免费福利 | 国产精品美女久久久久久久久久久 | 色久综合| 欧美激情综合五月色丁香小说 | 99热官网 | 日韩午夜av | 国内精品二区 | 国产拍在线 | 成人啊 v | 日韩免费高清在线 | 夜夜操天天 | 国产精品国产三级国产 | 四虎影视av | 亚洲国产精品小视频 | 日韩在线电影一区 | 久久精品久久久精品美女 | 欧美日韩视频一区二区三区 | 在线免费av播放 | 国产999久久久 | 在线观看韩国av | 亚洲精品美女久久久久网站 | 视频在线观看国产 | 国产在线 一区二区三区 | 久久久综合色 | 久久一区二| 亚洲精品免费观看视频 | 国产字幕av | 亚洲精品乱码久久久久久蜜桃不爽 | 日韩精品一区二区免费视频 | 国产成人免费精品 | 日韩av在线一区二区 | 人人狠| 久久国产亚洲视频 | 中文字幕在线看视频国产中文版 | 日韩精品亚洲专区在线观看 | 五月导航| 人人澡人摸人人添学生av | 久久免费美女视频 | 中文字幕亚洲在线观看 | 亚洲激情婷婷 | 日本高清xxxx | 中文字幕一区二区三区在线播放 | 欧美一区二区在线免费看 | 日日操天天爽 | 久久久久免费看 | 福利一区二区三区四区 | 免费久久片 | 国产a网站 | 黄色一级性片 | 超碰人人超 | 超碰日韩 | 久久一区国产 | 国语精品免费视频 | 91精品久久久久久综合乱菊 | 日韩精品一区二区三区在线视频 | 天天综合在线观看 | 欧美久久99| 国产精品日韩欧美一区二区 | 日韩在线观看三区 | 婷婷在线网 | 久久久精品久久 | a级国产毛片 | 天天爽天天搞 | 高清av网| 国产日韩av在线 | 久久夜色电影 | 麻豆视频免费在线观看 | 91av九色| 欧美高清视频不卡网 | www.天天色| 成人黄在线观看 | 91综合色 | 香蕉视频91 | 成人毛片一区 | 免费精品久久久 | 91在线91拍拍在线91 | 亚洲精选久久 | 三级黄色片子 | 婷婷亚洲综合 | 国产亚洲一级高清 | av在线电影网站 | 人人干天天干 | 天天操天天操天天爽 | 国产第一二区 | 免费黄色av片 | 久久综合免费视频影院 | 久久伊人精品一区二区三区 | 国产视频18 | 久草久视频 | 在线免费国产 | 日韩免费在线观看视频 | 在线免费试看 | 久草免费看 | 五月天天av | 日韩av一区二区三区四区 | 久久综合久久综合久久综合 | 狠狠躁日日躁狂躁夜夜躁av | 日本久久久精品视频 | 色婷婷97 | 免费不卡中文字幕视频 | 久二影院| 操一草| 天天曰天天 | 久久精品亚洲 | 色99之美女主播在线视频 | 99久久这里有精品 | 蜜臀久久99精品久久久无需会员 | 国产美女免费观看 | 国产h在线观看 | 中文字幕亚洲国产 | 天天操天天透 | www.夜夜爽 | 午夜精品福利一区二区 | 亚洲综合在线观看视频 | 黄色美女免费网站 | 国产中文字幕国产 | 日韩午夜精品 | 91人人揉日日捏人人看 | 国产成人精品综合久久久 | 97色免费视频 | 欧美日韩免费一区二区三区 | 亚洲免费在线播放视频 | 一区三区视频 | 99久久99久久精品国产片 | 五月丁香 | 中文字幕在线观 | 亚洲国产高清在线 | 日韩电影中文 | 国产看片网站 | 欧美日韩不卡在线视频 | 日韩视频二区 | 久久久久久国产精品999 | 色婷丁香 | 精品免费在线视频 | jizz18欧美18| 不卡av在线免费观看 | 天天摸天天操天天舔 | 中文字幕丝袜 | 午夜在线观看 | 精品一区二区日韩 | 最近日本mv字幕免费观看 | 在线观看av免费 | 日韩精品久久久久久久电影99爱 | 九色视频网| 一本一道久久a久久精品蜜桃 | 国产福利一区二区在线 | 天天操福利视频 | 久久黄色小说 | 色片网站在线观看 | 亚洲三级毛片 | 国产精品免费一区二区三区在线观看 | 深爱激情婷婷网 | 四虎国产永久在线精品 | 国产999在线 | 国产成人av一区二区三区在线观看 | 久久精品牌麻豆国产大山 | 性色av香蕉一区二区 | 日韩欧美精品在线 | a在线播放 | 伊人婷婷色 | 狠狠干干 | 国产精品一区二区果冻传媒 | 国产h片在线观看 | 色久网 | 精品亚洲视频在线观看 | 色综合久久88色综合天天 | 亚洲区视频在线观看 | 免费看的黄色片 | 国产白浆视频 | 美女久久久久久久久久 | 亚洲 综合 国产 精品 | 丁香婷婷激情 | 免费看一及片 | 精品日韩中文字幕 | 亚洲综合五月 | 中文字幕精品www乱入免费视频 | 久久精品99久久久久久2456 | 91在线看免费 | 国内精品久久久久久 | 亚洲永久精品在线观看 | 国产成人三级一区二区在线观看一 | 911精品视频| av在线等 | 久久精品免费 | 91精品啪啪| 久久久午夜剧场 | 99国产精品久久久久老师 | 狂野欧美激情性xxxx欧美 | 一区免费观看 | 国产婷婷视频在线 | 日韩精品一区二区三区高清免费 | 日韩网页 | 日韩免费在线观看 | 久久久久久久久久久久久久免费看 | 日韩精品一区在线观看 | 欧美一二三区播放 | 国产成人亚洲在线观看 | 亚洲视频在线观看网站 | 久久免费在线视频 | 97超碰福利久久精品 | 国产精品综合av一区二区国产馆 | 96av在线视频 | av中文在线 | 亚洲欧美成aⅴ人在线观看 四虎在线观看 | 欧美另类高清 videos | 精品视频一区在线 | 91精品国自产在线偷拍蜜桃 | 欧美一区二区在线刺激视频 | 久久亚洲影视 | 涩五月婷婷 | 国产精品久久电影观看 | 天天操天操 | 色综合天天做天天爱 | 婷婷国产一区二区三区 | www日韩在线 | 精品国产视频在线观看 | 成人免费在线播放视频 | 国产精品免费观看久久 | 精品日韩视频 | 99久久久成人国产精品 | 国产麻豆精品一区二区 | 久久久www| 国产高清精| 欧美日韩精品在线观看 | 天天操夜 | 伊人影院在线观看 | 97人人添人澡人人爽超碰动图 | 亚州精品天堂中文字幕 | 久久久精品国产一区二区电影四季 | 久久久精选 | 嫩小bbbb摸bbb摸bbb | 免费在线观看日韩欧美 | 免费在线观看的av网站 | 亚洲天堂香蕉 | 一级黄色片在线观看 | 日韩精品免费一区二区在线观看 | 超碰人人舔| 中文字幕视频免费观看 | 福利区在线观看 | 色的网站在线观看 | 久久99免费视频 | 日本中文一级片 | 国产网站色 | 91精品国自产在线观看欧美 | 久久久久网站 | 能在线看的av | 国产精品久久久久久久毛片 | 91理论片午午伦夜理片久久 | 激情五月在线视频 | 欧美日韩国产精品一区二区亚洲 | 久久久精品电影 | 婷婷免费在线视频 | 视频一区二区三区视频 | 91成人精品一区在线播放 | 午夜精品一二三区 | 久久美女电影 | 国产精品中文字幕在线观看 | 麻豆传媒在线免费看 | 91系列在线观看 | 久久精品国产精品 | 黄色官网在线观看 | 国产视频 久久久 | 日韩欧美一二三 | 精品久久国产 | 欧美一进一出抽搐大尺度视频 | 99久久网站| 日韩欧美高清在线观看 | 欧美性生活久久 | 天天天天色射综合 | 特级毛片在线观看 | 国产免费二区 | 久久久69 | 国产在线免费观看 | 成人久久毛片 | 成年人在线播放视频 | 九九免费在线观看 | 在线激情电影 | 久草在线最新免费 | www.亚洲| 久久国产精品99国产精 | 欧美成人精品在线 | 粉嫩av一区二区三区入口 | 日韩高清无线码2023 | 久草在线资源网 | 国产色资源 | 一区二区视频在线播放 | 亚洲一区二区视频在线播放 | av丝袜在线 | 日韩欧美高清不卡 | 午夜视频99 | 久久久久国产精品免费网站 | 成av在线 | 一区二区精品视频 | 国产99久久精品一区二区300 | 国产视频观看 | 欧美乱码精品一区 | 亚洲精品久久视频 | 成年免费在线视频 | 香蕉影视app| 亚洲欧洲国产精品 | 一区二区三区四区五区在线视频 | 欧美色黄| 国产一级在线视频 | 九九热久久免费视频 | 国产日韩视频在线观看 | 亚洲国产小视频在线观看 | 精品国产一区二区三区在线 | 国内精品视频在线播放 | 久久你懂的| 欧美一级欧美一级 | 伊人干综合 | 97在线免费观看视频 | 成年人免费看片 | 二区中文字幕 | 国产视频一区二区在线 | 亚洲免费av电影 | 日本在线h | 在线v片| 97超碰资源| 99热这里是精品 | 久久精品高清视频 | 又黄又爽又湿又无遮挡的在线视频 | 91精品国产91久久久久福利 | 人人射人人 | 热久久精品在线 | 人人爽人人插 | 日韩一区二区三区不卡 | 在线v| 亚洲精品小视频 | 在线观看亚洲精品视频 | 国产黄色片免费在线观看 | 四虎在线免费观看 | 久久精品亚洲 | 蜜臀av夜夜澡人人爽人人桃色 | 国产精品日韩久久久久 | 66av99精品福利视频在线 | 天天综合色天天综合 | 国产粉嫩在线观看 | 国产亚洲精品无 | 江苏妇搡bbbb搡bbbb | 免费a级黄色毛片 | 国产一级精品绿帽视频 | 国产在线精品国自产拍影院 | a视频在线 | 天天干国产 | www178ccom视频在线| 日韩不卡高清视频 | 亚洲国产人午在线一二区 | 六月婷婷久香在线视频 | 91在线看黄 | 国产又黄又硬又爽 | 久久综合久色欧美综合狠狠 | 中文在线字幕观看电影 | 丁香六月中文字幕 | 亚洲综合网站在线观看 | 热久久免费视频精品 | 成人在线你懂得 | 香蕉97视频观看在线观看 | 成人免费看片98欧美 | 91精品啪在线观看国产 | 在线a视频免费观看 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 美国人与动物xxxx | 久草视频资源 | 在线黄色国产 | 亚洲国产精品第一区二区 | 9999国产精品 | 亚洲欧美精品在线 | 中文字幕文字幕一区二区 | 久久综合色婷婷 | 超碰999| 成人欧美一区二区三区在线观看 | 涩涩网站在线看 | 久久免费视频观看 | 青春草免费在线视频 | 国产不卡一二三区 | 视频在线99 | 欧美激情视频一二三区 | 亚洲精品视频偷拍 | 久草视频2 | 五月婷婷在线观看 | 麻豆视传媒官网免费观看 | 手机av在线免费观看 | www.香蕉视频在线观看 | 成年人免费观看国产 | 国产视频日本 | 日韩在线观看视频中文字幕 | 色多多视频在线观看 | 国产精品美女久久久 | 国产精品一区二区av麻豆 | 久久久久久久久久久久国产精品 | 911久久香蕉国产线看观看 | 国产高清视频在线播放 | 国产精品第三页 | 亚洲视频精品在线 | 最近中文字幕高清字幕在线视频 | 国产成人1区 | 午夜国产一区二区三区四区 | 美国人与动物xxxx | 91成人网在线观看 | 黄色大片中国 | av中文资源在线 | 国产免费亚洲高清 | 99精品久久精品一区二区 | 国内少妇自拍视频一区 | 天天综合久久 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 国产亚洲aⅴaaaaaa毛片 | 亚洲精品裸体 | 九精品 | 亚洲欧美日韩国产一区二区三区 | 天天摸天天操天天爽 | 亚洲精品视频在线观看免费视频 | 成人免费看黄 | 九九九九精品 | 日日麻批40分钟视频免费观看 | 中文字幕永久在线 | 九色porny真实丨国产18 | 久久欧美在线电影 | 999久久久免费精品国产 | 片黄色毛片黄色毛片 | 日本视频精品 | 九七视频在线观看 | 视频在线观看日韩 | 国产1级视频 | 亚洲高清视频一区二区三区 | 色综久久 | 97电影在线 | 中文字幕免费成人 | 欧美无极色 | 极品国产91在线网站 | 91aaa在线观看 | 色噜噜狠狠色综合中国 | 91免费高清观看 | 亚洲精品成人免费 | 亚洲精品一区二区三区四区高清 | 国产精品入口66mio女同 | 久久精品美女 | 91视频免费看网站 | 激情开心色| 美女视频黄色免费 | 久久综合射 | 天堂av色婷婷一区二区三区 | 久草在线视频看看 | 国精产品一二三线999 | 91视频专区| 久久免费片| 成年人黄色免费网站 | 久久全国免费视频 | 免费av大全 | 中文字幕免费久久 | 亚洲一区日韩精品 | 天天草天天爽 | 日韩二区三区在线 | 国产成人精品999在线观看 | 一区二区影院 | 13日本xxxxxⅹxxx20 | 日本精品在线 | 国产视频一区二区三区在线 | 精品欧美一区二区三区久久久 | 国产精品国产三级国产aⅴ入口 | 97人人超| 九色porny真实丨国产18 | 国产成人99av超碰超爽 | 中文字幕一区二区三区乱码不卡 | 在线视频日韩一区 | 午夜黄网 | 在线国产小视频 | 色免费在线 | 久草电影在线观看 | 中文字幕免费看 | 国产精品第52页 | 成年人在线免费看视频 | 国产精品久一 | 天天操夜夜操夜夜操 | 国产999精品久久久久久 | 久久情网| 精品国产三级 | 波多野结衣在线播放一区 | 午夜精品一区二区三区在线观看 | 久草爱视频 | 综合色在线观看 | 日韩精品在线观看视频 | 日韩成人精品一区二区三区 | 国色天香在线观看 | 深爱激情av | 天天激情综合 | 玖玖玖在线 | 久久久久亚洲国产精品 | 日韩精品你懂的 | 亚洲va天堂va欧美ⅴa在线 | 青青久视频 | 欧美精品在线观看一区 | 精品国产成人在线影院 | avhd高清在线谜片 | 国产99在线免费 | 视频成人永久免费视频 | 国产精品视频app | 中文字幕亚洲在线观看 | 91中文视频 | 在线91观看| 五月婷婷,六月丁香 | 久久人人爽人人爽人人片 | 2023国产精品自产拍在线观看 | 91视频a | 97超碰站| 久久久久久看片 | 婷婷日日 | 人人爽人人干 | av免费在线观看网站 | 蜜臀aⅴ精品一区二区三区 久久视屏网 | 免费久久精品视频 | 97视频资源 | 日韩精品视频免费看 | 在线观看中文字幕dvd播放 | 69精品视频 | 免费人成在线观看网站 | 成人黄色大片在线免费观看 | 在线播放一区二区三区 | 欧美成人手机版 | 三级av在线 | 麻豆小视频在线观看 | 午夜精品久久久久久久久久久久久久 | 日本美女xx | 天海翼一区二区三区免费 | 日韩欧美精品免费 | 成人一级免费视频 | 国产在线精品播放 | 国产小视频免费观看 | 免费在线观看av的网站 | 国产高清在线视频 | 欧美精品久久人人躁人人爽 | 中文在线免费一区三区 | 日本女人在线观看 | 精品免费观看视频 | 在线 视频 亚洲 | 欧美人体xx | 国产主播99| 国产黄色一级片在线 | 日韩毛片在线免费观看 | 久久99久久99精品 | 午夜精品视频免费在线观看 | 欧美在线观看禁18 | 欧美日韩中文字幕综合视频 | 日韩av在线免费看 | 狠狠躁日日躁夜夜躁av | 中文字幕第一页av | 成人午夜性影院 | 69国产精品视频免费观看 | 成人网看片| 日韩激情精品 | 午夜av一区二区三区 | 久久久精华网 | 国产精品免费av | 国产精品99久久99久久久二8 | 最近中文字幕高清字幕在线视频 | a特级毛片 | 视频一区在线播放 | 婷婷色 亚洲 | 国产做a爱一级久久 | 午夜久操 | 久久久精品国产一区二区电影四季 | 中文字幕电影高清在线观看 | 18久久久 | 亚洲精品在线免费播放 | 尤物97国产精品久久精品国产 | 二区三区av | 久久人人爽人人爽人人 | 亚洲精品中文在线资源 | 91视视频在线直接观看在线看网页在线看 | 色综合五月天 | 免费三级av | 精品亚洲国产视频 | 成人小电影在线看 | 色福利网 | 久久精品国产99国产 | 毛片在线播放网址 | 五月婷网站 | 少妇性bbb搡bbb爽爽爽欧美 | 深爱婷婷久久综合 | 日本久久免费电影 | av丝袜天堂 | av视屏在线 | 最近中文字幕完整视频高清1 | 狠狠干综合网 | 国产不卡av在线播放 | 色91在线 | 久久久久久久久久久久99 | 色综合色综合色综合 | 一区二区精品在线观看 | 国产精品久久久区三区天天噜 | 99热日本| av网址在线播放 | 久久九九视频 | 99欧美| 99久久婷婷国产综合精品 | 欧美亚洲久久 | wwwwww色 | www亚洲精品| 久久精品欧美 | 亚洲精品视频在线观看免费 | 丁香五月亚洲综合在线 | 国产成人在线观看免费 | 久草视频观看 | 免费看一级特黄a大片 | 免费亚洲视频 | 91在线免费视频观看 | 中文字幕在线观 | 中文字幕在线播放一区二区 | 亚洲婷婷免费 | 婷婷激情五月 | 涩av在线 | 综合色爱| 久久中文字幕导航 | 在线免费观看视频 | 天天操天天干天天综合网 | 99精品国产高清在线观看 | 国产手机视频在线 | 中文字幕免费高清av | 中文字幕不卡在线88 | 一区二区三区久久精品 | a色视频 | 福利久久 | 久久免费视频在线观看30 | 91九色最新 | 色av婷婷| 久久久久久久久综合 | 一级成人免费视频 | 五月婷婷黄色网 | 就要色综合 | 国产精品视频99 | 国产色网 | 精品国内 | 国产精品18久久久久久久 | 9在线观看免费 | 三日本三级少妇三级99 | 欧美看片| 日日综合| 精品久久久久久亚洲综合网 | 黄色一级性片 | 蜜桃视频精品 | av片一区| 国产精品久久艹 | 亚洲在线视频观看 | 日韩欧美视频在线播放 | 精品视频在线免费观看 | 综合网天天 | 亚洲精品动漫久久久久 | 国产精品大片在线观看 | 国产亚洲视频在线 | 亚洲色图激情文学 | 日韩a在线观看 | 中文字幕日韩电影 | 日韩高清 一区 | 精品国产一二三 | 日韩 精品 一区 国产 麻豆 | 草久久久久久 | 国产精品av免费在线观看 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 五月婷婷网站 | 成年人国产精品 | 成人性生交大片免费看中文网站 | 欧美成人xxxxxxxx | 69精品在线观看 | 99视频国产在线 | 亚洲成人一区 | 亚洲视频在线观看 | 免费人人干 | 成人免费观看视频大全 | 久久精品视频网 | 高清色免费 | 婷婷草| 日韩免费一区二区三区 | 欧美伊人网 | 一级免费av | 在线看国产日韩 | 成人91在线观看 | 欧美性直播| 狠狠操狠狠操 | 久久影视精品 | 亚洲成人在线免费 | 国产69精品久久久久99 | 国产精品 欧美 日韩 | 成人在线免费视频观看 | 91精品视频在线看 | 93久久精品日日躁夜夜躁欧美 | 国产一级二级三级在线观看 | 看片黄网站 | 久久久www免费电影网 | 黄色在线成人 | 久久精品视频免费观看 | 亚洲一区二区三区四区精品 | av大全在线看 | 亚洲爱av | 97色噜噜 | 国产乱老熟视频网88av | 国产精成人品免费观看 | 欧美一级片在线播放 | 国产成人在线免费观看 | 免费观看性生活大片3 | 在线中文字幕电影 | 成片视频免费观看 | 国产亚洲视频中文字幕视频 | 亚洲综合精品在线 | 久久免费中文视频 | 亚洲国产精品成人av | 国产精品18久久久久久久久 | 69精品视频在线观看 | 天天操欧美 | 色婷婷久久久综合中文字幕 | 丁香六月婷婷开心婷婷网 | 国产亚洲va综合人人澡精品 | 亚洲少妇天堂 | 精品久久久久久久久久久久久久久久 | 久久99爱视频 | 色激情在线 | 久草在线免费资源 | 色噜噜狠狠色综合中国 | 国产精品一区二区久久 | 国产精品一区电影 | 婷婷丁香激情综合 | 69久久久| 久久综合操 | 国产黄色免费 | 久草影视在线观看 | 日本超碰在线 | 久久久久久激情 | 久日精品 | 成人午夜电影在线观看 | 美女在线观看网站 | 亚洲区视频在线 | www色片 | 激情在线免费视频 | 91麻豆精品国产91久久久无需广告 | 精品不卡视频 | 东方av在线免费观看 | 人人射人人澡 | 亚洲久草视频 | 天堂av影院 | 免费黄色在线网址 | 波多野结衣视频网址 | 国产 亚洲 欧美 在线 | 国产高清福利在线 | 免费观看福利视频 | 久久一区二区三区超碰国产精品 | 日韩在线观看精品 | 丝袜美腿亚洲综合 | 日韩精品一区二区三区电影 | 免费观看一区二区三区视频 | 黄在线免费看 | 日韩一区二区三区高清免费看看 | 色婷婷亚洲婷婷 | 黄色大片国产 | 久久久久久蜜桃一区二区 | 91麻豆精品91久久久久同性 | 婷婷精品在线视频 | 国产精品入口麻豆 | 国产五月婷| 久草视频在 | 91精品网站在线观看 | 天天射天天操天天干 | 亚洲 欧美 精品 | 国产护士av| 日本不卡视频 | 色www.| 国产片免费在线观看视频 | 欧美久草在线 | 99夜色 | 久久国产精品二国产精品中国洋人 | 午夜在线免费观看 | 丁香六月婷 | 四虎视频 | 播五月婷婷 | 九九日九九操 | 天天综合网 天天 | www夜夜操com| 久久免费看a级毛毛片 | 中文字幕黄色网址 | 亚洲va在线va天堂va偷拍 | 久久综合之合合综合久久 | 日韩综合精品 | 精品亚洲午夜久久久久91 | 激情婷婷在线观看 | 99精品热视频 | 日韩欧美成人网 | 国产成人一区三区 | 国产乱对白刺激视频不卡 | 午夜精品久久久久99热app | 亚洲国产欧美在线看片xxoo | 欧美久久久久久久久久久久 | 99九九99九九九视频精品 | 成人毛片久久 | 成人免费视频视频在线观看 免费 | 亚洲一区二区高潮无套美女 | 欧美日韩性 | 永久av免费在线观看 | 久久久久久高清 | 国产美腿白丝袜足在线av | 天天天天天天干 | 亚洲综合网站在线观看 | 超级碰视频 | 九九综合九九综合 | 在线观看av的网站 | 在线观看中文字幕亚洲 | 黄色三级久久 | 中文字幕制服丝袜av久久 | 久草在线看片 | 国产精品18久久久久白浆 | 91看片淫黄大片在线播放 | 久色免费视频 | 久久精品一区二区三区四区 | 久草在线免费播放 | 日韩www在线| 免费观看国产成人 | 午夜精品久久久久久久99 | 久久99国产精品免费网站 | 日韩a在线| 国产不卡一二三区 | 国产视频一级 | 在线精品视频在线观看高清 | 欧美日韩一区二区视频在线观看 | 亚洲国产精品人久久电影 | 国产精品ssss在线亚洲 | 国产成人免费观看 | 一 级 黄 色 片免费看的 | 99久久久久免费精品国产 | 欧美激情视频在线观看免费 | 91精彩视频在线观看 | 免费国产亚洲视频 | av中文字幕在线播放 | 久久只精品99品免费久23小说 | 九九三级毛片 | 国产精品av免费在线观看 | 午夜久草| 免费三级在线 | 亚洲人xxx | 九九日韩 | 亚洲国产大片 | 亚洲精色| www.日韩免费| 日日色综合 | 最新国产精品久久精品 | 亚洲成av人影片在线观看 | 亚洲国产日韩欧美在线 | 色婷婷88av视频一二三区 | 一区二区三区精品在线视频 | 亚洲国产日韩一区 | 伊色综合久久之综合久久 | 9在线观看免费高清完整版 玖玖爱免费视频 | 99一区二区三区 | 久久久69| av片子在线观看 | 亚洲精品裸体 | 国产高清视频免费最新在线 | 中文字幕一区二区三区在线观看 | 久久精品国产精品 | 精品国产视频一区 | 人人舔人人爱 | 丁香色天天| 午夜精品一区二区三区免费 | 免费看一级一片 | 亚洲传媒在线 | av网址最新| 91亚洲精品久久久蜜桃网站 | 五月婷婷色综合 | 97精品国自产拍在线观看 | 五月天激情综合网 | 国产精品理论片在线观看 | 久久久久久伊人 | 亚洲精品免费在线观看 | 国产免费观看久久 | 久久草| 99色视频在线 | 成人在线观看资源 | 日本aaaa级毛片在线看 | 国产精品一区免费看8c0m | 久久九九免费视频 | 国产精品九九久久久久久久 | 欧美精品小视频 | 一级黄色片毛片 | 91免费视频网站在线观看 | 国产蜜臀av | 激情网在线观看 | 日韩3区| 国产精品99久久久久久久久 | 91中文字幕在线 | 久久成电影| 中文字幕在线看视频国产 | 欧美日韩精品在线免费观看 | 天天干天天上 | 午夜精品一区二区三区在线视频 | 丰满少妇在线观看 | 人人看看人人 | 国产精品国产亚洲精品看不卡15 | 999日韩 | 日日夜夜狠狠 | 草久在线观看视频 | 久久精品一二三区 | 欧日韩在线视频 | 日韩免费区 | 91久久国产自产拍夜夜嗨 | 在线观看亚洲成人 | 日韩免费看片 | 久久精品久久精品 | 91在线视频播放 | 中文字幕在线看人 | 国内精品在线看 | 麻豆91精品91久久久 | 中文字幕最新精品 | 日日夜夜噜 | 一区二区三区动漫 | 欧美精品久久久 | 国产精品原创 | 国产精品久久久久久久av电影 | 免费视频 三区 | 久久在线视频在线 | 色多多视频在线 |