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

歡迎訪問 生活随笔!

生活随笔

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

linux

Linux 字符设备驱动及一些简单的Linux知识

發布時間:2024/8/1 linux 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Linux 字符设备驱动及一些简单的Linux知识 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、linux系統將設備分為3類:字符設備、塊設備、網絡設備

1、字符設備:是指只能一個字節一個字節讀寫的設備,不能隨機讀取設備內存中的某一數據,讀取數據需要按照先后數據。字符設備是面向流的設備,常見的字符設備有鼠標、鍵盤、串口、控制臺和LED設備等。
2、塊設備:是指可以從設備的任意位置讀取一定長度數據的設備。塊設備包括硬盤、磁盤、U盤和SD卡等。

每一個字符設備或塊設備都在/dev目錄下對應一個設備文件。linux用戶程序通過設備文件(或稱設備節點)來使用驅動程序操作字符設備和塊設備。

本文主要是介紹字符設備驅動程序,從驅動程序開始,涉及文件操作,一共四個函數:包括文件的打開,讀,寫,刪除。還有文件的注冊和注銷。

廢話不多說,上源代碼,以代碼為例開始解釋:

1.mydriver.c:

#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/uaccess.h>

#if CONFIG_MODVERSIONS == 1
#define MODVERSIONS
#include <linux/version.h>
#endif

#define DEVICE_NUM 0 //隨機產生一個設備號

static int device_num = 0; //用來保存創建成功后的設備號
static char buffer[1024] = "mydriver"; //數據緩沖區
static int open_nr = 0; //打開設備的進程數,用于內核的互斥

//函數聲明
// inode;linux下文件的管理號。
//file:linux一切皆文件。文件結構體代表一個打開的文件,系統中的每個打開的文件在內核空間都有一個關聯的 struct file。它由內核在打開文件時創建,并傳遞給在文件上進行操作的任何函數。在文件的所有實例都關閉后,內核釋放這個數據結構
static int mydriver_open(struct inode *inode, struct file *filp);
static int mydriver_release(struct inode *inode, struct file* filp);
static ssize_t mydriver_read(struct file *file, char __user *buf, size_t count, loff_t *f_pos); //loff-t:long long 型
static ssize_t mydriver_write(struct file *file, const char __user *buf, size_t count, loff_t *f_pos); //__user表明參數是一個用戶空間的指針,不能在kernel代碼中直接訪問。
//size_t:一個基本的無符號整數的C / C + +類型
//填充file_operations結構相關入口
static struct file_operations mydriver_fops = {
.read = mydriver_read,
.write = mydriver_write,
.open = mydriver_open,
.release = mydriver_release,
};

//打開函數
static int mydriver_open(struct inode *inode, struct file *filp)
{
printk("\nMain device is %d, and the slave device is %d\n", MAJOR(inode->i_rdev), MINOR(inode->i_rdev)); //把主從設備號傳入
if (open_nr == 0) {
open_nr++;
try_module_get(THIS_MODULE); //嘗試打開模塊
return 0;
}
else {
printk(KERN_ALERT "Another process open the char device.\n");//進程掛起
return -1;
}
}

//讀函數
static ssize_t mydriver_read(struct file *file, char __user *buf, size_t count, loff_t *f_pos)
{
//if (buf == NULL) return 0;
if (copy_to_user(buf, buffer, sizeof(buffer))) //讀緩沖 ,第一個參數是to:用戶空間的地址,第二個參數是from,內核空間的地址,第三個參數是要從內核空間拷貝的字節數
{
return -1;
}
return sizeof(buffer);
}

//寫函數,將用戶的輸入字符串寫入
static ssize_t mydriver_write(struct file *file, const char __user *buf, size_t count, loff_t *f_pos)
{
//if (buf == NULL) return 0;
if (copy_from_user(buffer, buf, sizeof(buffer))) //寫緩沖
{
return -1;
}
return sizeof(buffer);
}

//釋放設備函數
static int mydriver_release(struct inode *inode, struct file* filp)
{
open_nr--; //進程數減1
printk("The device is released!\n");
module_put(THIS_MODULE); //釋放模塊
return 0;
}

//注冊設備函數
static int __init mydriver_init(void)
{
int result;

printk(KERN_ALERT "Begin to init Char Device!"); //注冊設備
//向系統的字符登記表登記一個字符設備
result = register_chrdev(DEVICE_NUM, "mydriver", &mydriver_fops); //第一個參數等于0,則表示采用系統動態分配的主設備號;不為0,則表示靜態注冊。 第二個參數命名, 第三個參數為其地址

if (result < 0) {
printk(KERN_WARNING "mydriver: register failure\n");
return -1;
}
else {
printk("mydriver: register success!\n");
device_num = result;
return 0;
}
}

//注銷設備函數
static void __exit mydriver_exit(void)
{
printk(KERN_ALERT "Unloading...\n");
unregister_chrdev(device_num, "mydriver"); //注銷設備
printk("unregister success!\n");
}

//模塊宏定義
module_init(mydriver_init); //模塊加載函數
module_exit(mydriver_exit); //設備卸載函數

MODULE_LICENSE("GPL"); // "GPL" 是指明了 這是GNU General Public License的任意版本

因為注釋內容有限,在后面貼上一些對源代碼的注釋:

inode;linux下文件的管理號。(靜態的)
file:linux一切皆文件。文件結構體代表一個打開的文件,系統中的每個打開的文件在內核空間都有一個關聯的 struct file。它由內核在打開文件時創建,并傳遞給在文件上進行操作的任何函數。在文件的所有實例都關閉后,內核釋放這個數據結構。(動態的)
__user:The use of char __user *buf is typically found in the linux kernel...denoting that this address is in the user space. For example when writing to disk the kernel copies the contents of *buf into a kernel space buffer before writing it out to disk. Similarly when a process requests a read operation...the device driver at the behest of the kernel reads the desired disk blocks into a kernel space buffer...and then copies them into the user space buffer pointed to by *buf.
__user表明參數是一個用戶空間的指針,不能在kernel代碼中直接訪問。也方便其它工具對代碼進行檢查。
file-operations:
用來存儲驅動內核模塊提供的 設備進行各種操作的函數的指針。該結構體的每個域都對應著驅動內核模塊用來處理某個被請求的事務的函數的地址。
MAJOR(inode->i_rdev), MINOR(inode->i_rdev):
如果inode代表一個設備,則i_rdev的值為設備號。為了代碼更好地可移植性,獲取inode的major和minor號應該使用imajor和iminor函數
#include <linux/module.h> :
寫內核驅動的時候 必須加載這個頭文件,作用是動態的將模塊加載到內核中去
#include <linux/version.h> :
當設備驅動需要同時支持不同版本內核時,在編譯階段,內核模塊需要知道當前使用的內核源碼的版本,從而使用相應的內核 API
try_module_get(&module), module_put(&module):
靈活的模塊計數管理接口
#include <linux/kernel.h> :
kernel.h中包含了內核打印函數 printk函數 等
#include <linux/uaccess.h>:
包含了copy_to_user、copy_from_user等內核訪問用戶進程內存地址的函數定義。(copy_to_user()完成用戶空間到內核空間的復制,函數copy_from_user()完成內核空間到用戶空間的復制)
copy_to_user(buf, buffer, sizeof(buffer)//
#include <linux/fs.h> :
包含了文件操作相關struct的定義,例如大名鼎鼎的struct file_operations

#include <linux/init.h> :
內核模塊的初始化和注銷函數就在這個文件中

2. makefile:

# if KERNELRELEASE is defined, we've been invoked from the

# kernel build system and can use its language.

ifeq ($(KERNELRELEASE),)

????# Assume the source tree is where the running kernel was built

????# You should set KERNELDIR in the environment if it's elsewhere

KERNELDIR ?= ?/lib/modules/$(shell uname -r)/build

????# The current directory is passed to sub-makes as argument

PWD := $(shell pwd)

modules:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules

modules_install:

$(MAKE) -C $(KERNELDIR) M=$(PWD) modules_install

clean:

rm -rf *.o *~ core .depend .*.cmd *.ko *.mod.c .tmp_versions

.PHONY: modules modules_install clean

else

????# called from kernel build system: just declare what our modules are

obj-m := mydriver.o

endif

3.

  • test.c
  • #include <sys/types.h>

    #include <sys/stat.h>

    #include <stdlib.h>

    #include <string.h>

    #include <stdio.h>

    #include <fcntl.h>

    #include <unistd.h>

    #define MAX_SIZE 1024

    ?

    int main(void)

    {

    int fd;

    char buf[MAX_SIZE];

    char get[MAX_SIZE];

    char devName[20], dir[49] = "/dev/";

    system("ls /dev/");

    printf("Please input the device's name you wanna to use :");

    gets(devName);

    strcat(dir, devName);

    fd = open(dir, O_RDWR | O_NONBLOCK);

    if (fd != -1)

    {

    read(fd, buf, sizeof(buf));

    printf("The device was inited with a string : %s\n", buf);

    ?// 測試寫

    printf("Please input a string ?:\n");

    gets(get);

    write(fd, get, sizeof(get));

    //測試讀

    read(fd, buf, sizeof(buf));

    system("dmesg");

    printf("\nThe string in the device now is : %s\n", buf);

    close(fd);

    return 0;

    }

    else

    {

    printf("Device open failed\n");

    return -1;

    }

    }

    以上源代碼均可直接使用,以下是本人對基礎知識的一些拙見,如果您有什么高見請務必指出,多謝各位大佬!

    一.什么是Makefile
    (1)KERNELRELEASE在linux內核源代碼中的頂層makefile中有定義
    (2)shell pwd會取得當前工作路徑
    (3)shell uname -r會取得當前內核的版本號
    (4)由于make 后面沒有目標,所以make會在Makefile中的第一個不是以.開頭的目標作為默認的目標執行。
    于是modules成為make的目標
    (5)首先-C表示到存放內核的目錄(KERNELDIR)執行其makefile,其中保存有內核的頂層makefile,M=選項的作用是,
    當用戶需要以某個內核為基礎編譯一個外部模塊的話,需要在make modules 命令中加入M=$(PWD),
    程序會自動到你所指定的dir目錄中查找模塊源碼,將其編譯,生成KO文件。
    (6)obj-m是表示該文件要作為模塊編譯,只是編譯得到globalmem.o而不鏈接進內核
    (7)每個Makefile中都應該寫一個清空目標文件(.o和執行文件)的規則,這不僅便于重編譯
    ,也很利于保持文件的清潔——clean
    (8)make modules_install是把編譯好的模塊拷貝到系統目錄下(一般是/lib/modules/),
    拷貝到系統目錄下的目的是方便使用,加載驅動就使用modprobe globalmem命令,該命令從系統目錄下查找名為globalmem的模塊

    二.什么是模塊化編程?為什么要模塊化編程?
    (1)內核模塊是一些可以讓操作系統內核在需要時載入和執行的代碼,同時在不需要的時候可以卸載。
    這是一個好的功能,擴展了操作系統的內核功能,卻不需要重新啟動系統,是一種動態加載的技術。
    (2)內核模塊代碼運行在內核空間,而應用程序在用戶空間。應用程序的運行會形成新的進程,而內核模塊一般不會
    。每當應用程序執行系統調用時,Linux執行模式從用戶空間切換到內核空間。
    答:Linux 內核的整體結構非常龐大,其包含的組件也非常多。我們怎樣把需要的部分都包含在內核中呢?
    一種方法是把所有需要的功能都編譯到 Linux 內核。
    這會導致兩個問題,一是生成的內核會很大,二是如果我們要在現有的內核中新增或刪除功能,將不得不重新編譯內核。
    有沒有一種機制使得編譯出的內核本身并不需要包含所有功能,而在這些功能需要被使用的時候,
    其對應的代碼可被動態地加載到內核中呢?
    Linux 提供了這樣的一種機制,這種機制被稱為模塊(Module),可以實現以上效果。模塊具有以下特點。
    1.模塊本身不被編譯入內核映像,從而控制了內核的大小。
    2.模塊一旦被加載,它就和內核中的其他部分完全一樣。

    三.如何理解設備號,什么是主設備號,什么是次設備號?

    一個字符設備或塊設備都有一個主設備號和一個次設備號。主設備號用來標識與設備文件相連的驅動程序,用來反映設備類型。次設備號被驅動程序用來辨別操作的是哪個設備,用來區分同類型的設備。
      linux內核中,設備號用dev_t來描述,2.6.28中定義如下:
      typedef u_long dev_t;
      在32位機中是4個字節,高12位表示主設備號,低12位表示次設備號。

    四.整個驅動從編譯到用測試程序進行測試的全過程,需要掌握相關的各種操作命令
    1.在globalmen這個目錄里面,先make一下,把globalmem.c編譯成模塊globalmem.ko
    2.lsmod查看這個Linux里面有沒有globalmem模塊
    3.insmod globalmem.ko 加載globalmem模塊
    4.lsmod查看是否加載成功
    5.cat /proc/devices查看加載驅動程序時生成的設備 (proc目錄是一個虛擬文件系統,
    可以為linux用戶空間和內核空間提供交互,它只存在于內存中,而不占實際的flash或硬盤空間)
    6.mknod /dev/globalmem c 200 0 給globalmem設備創建設備節點,主設備號為200,次設備號為0
    7.cd /dev 進入dev目錄
    8.ls 查看dev目錄下是否有globalmem設備
    9.echo '老師你真的很帥!'>/dev/globalmem 向globalmem設備寫入一句話
    10.cat /dev/globalmem 查看globalmem設備里面的內容
    11.gcc -o test.c test 用gcc來編譯測試程序
    12../test 運行測試程序

    五.三個重要的數據結構(結構體):file_operations、innode、file,尤其是file_operations
    file文件結構:
    struct file,定義于<linux/fs.h>.文件結構代表一個打開的文件.(它不特定給設備驅動;
    系統中每個打開的文件有一個關聯的 struct file 在內核空間).
    它由內核在 open 時創建,并傳遞給在文件上操作的任何函數, 直到最后的關閉.
    在文件的所有實例都關閉后, 內核釋放這個數據結構
    .struct file的指針常常稱為filp("file pointer"),源代碼里面沒有這個結構體,
    但是在函數里面會經常用到它,例如
    int globalmem_open(struct inode *inode, struct file *filp);
    int globalmem_release(struct inode *inode, struct file *filp);
    static ssize_t globalmem_read(struct file *filp, char __user *buf, size_t size, loff_t *ppos);
    static ssize_t globalmem_write(struct file *filp, const char __user *buf, size_t size, loff_t *ppos);
    static loff_t globalmem_llseek(struct file *filp, loff_t offset, int orig);
    static long globalmem_ioctl(struct file *filp, unsigned int cmd, unsigned long arg);

    inode結構:
    inode 結構由內核在內部用來表示文件. 因此, 它和代表打開文件描述符的文件結構是不同的.
    可能有代表單個文件的多個打開描述符的許多文件結構, 但是它們都指向一個單個 inode 結構.
    inode 結構包含大量關于文件的信息. 作為一個通用的規則, 這個結構只有 2 個成員對于編寫驅動代碼有用:
    dev_ti_rdev;
    對于代表設備文件的節點,這個成員包含實際的設備編號.
    structcdev *i_cdev;
    structcdev 是內核的內部結構, 代表字符設備; 這個成員包含一個指針, 指向這個結構, 當節點指的是一個字符設備文件時.

    file_operations結構:
    結構體file_operations在頭文件 linux/fs.h中定義,用來存儲驅動內核模塊提供的對設備進行各種操作的函數的指針。
    該結構體的每個域都對應著驅動內核模塊用來處理某個被請求的 事務的函數的地址。
    如下為C99語法的使用該結構體的方法,并且沒有顯示聲明的結構體成員都被gcc初始化為NULL
    static const struct file_operations globalmem_fops = {
    .owner = THIS_MODULE,
    .llseek = globalmem_llseek,
    .read = globalmem_read,
    .write = globalmem_write,
    .unlocked_ioctl = globalmem_ioctl,/* 在2.6.x的內核版本中,文件操作結構體中,
    才會有ioctl的字段,高版本中使用unlocked_ioctl */
    .open = globalmem_open,
    .release = globalmem_release,
    };

    ?

    轉載于:https://www.cnblogs.com/yuan233/p/8146261.html

    總結

    以上是生活随笔為你收集整理的Linux 字符设备驱动及一些简单的Linux知识的全部內容,希望文章能夠幫你解決所遇到的問題。

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

    成人性生交大片免费观看网站 | 五月婷婷激情网 | 免费在线观看日韩视频 | 天天操天天爱天天干 | 91最新视频在线观看 | 日韩av一区二区在线播放 | 婷婷色在线资源 | 色www精品视频在线观看 | 最近字幕在线观看第一季 | 中文字幕免费高清 | 久久电影日韩 | 一本一道久久a久久精品蜜桃 | 99综合影院在线 | 国产字幕在线播放 | jizz999| 欧美精品在线观看一区 | 精品久久久久久久久中文字幕 | 国产精品视频久久 | 日韩av快播电影网 | 欧美在线free | 欧美人操人| 久草视频首页 | 九九久久精品视频 | 国产一级在线观看视频 | 天天操天天干天天爽 | 亚洲不卡在线 | 国产不卡免费视频 | www.五月天激情 | 亚洲欧美激情插 | 国产九色在线播放九色 | 99爱精品视频 | 国产免费不卡 | 就色干综合 | 日韩美女久久 | 国产理伦在线 | 成人动态视频 | 色偷偷av男人天堂 | 97视频免费观看2区 亚洲视屏 | 中文在线最新版天堂 | 三级黄色在线观看 | 亚洲精品在线视频网站 | 国产日韩精品久久 | 午夜三级福利 | 日本韩国中文字幕 | 久久久久久99精品 | 久久久久免费精品国产 | 欧美亚洲专区 | 久久久精品二区 | aaawww | 激情九九 | 在线播放av网址 | 久久国产精品99久久久久 | 欧美精品久久人人躁人人爽 | 亚洲精品男女 | 开心激情婷婷 | 一级免费黄色 | av中文字幕网址 | 波多野结衣在线视频一区 | av电影中文字幕 | 香蕉影视 | 国产精品美 | 91亚洲影院 | 中文字幕一区二区三区久久蜜桃 | 久久久影片 | 亚洲成a人片77777kkkk1在线观看 | 国产精品久久久久久久久久 | 麻豆传媒一区二区 | 91成人免费在线视频 | 丝袜美腿在线 | 国语对白少妇爽91 | 精品国产欧美一区二区 | 激情五月婷婷网 | 国产精品自在欧美一区 | 久久久精品电影 | 天天操天天添天天吹 | 日韩av专区 | 中文字幕日韩免费视频 | caobi视频 | 国产视频日韩视频欧美视频 | av在线免费在线观看 | 在线电影中文字幕 | 欧美日韩高清一区二区 国产亚洲免费看 | 国产精品电影一区二区 | 亚洲精品国产高清 | a级片网站 | 2019免费中文字幕 | 黄色av网站在线观看免费 | 国产精品一区二区果冻传媒 | 97精品国产91久久久久久 | 夜夜操综合网 | 岛国大片免费视频 | 欧洲av在线| 日日干夜夜操视频 | 欧美日韩在线电影 | 激情av综合| 久久这里 | 99国产精品久久久久久久久久 | 毛片网免费| 婷婷视频 | 久久99国产精品自在自在app | 人人舔人人射 | 亚洲国产精品视频在线观看 | 国产精品久久久久永久免费 | 四虎成人精品在永久免费 | 中文字幕在线视频网站 | 欧美视屏一区二区 | 中文字幕在线免费观看视频 | 亚洲狠狠丁香婷婷综合久久久 | 欧美日韩国产网站 | 日韩在线首页 | 欧洲精品码一区二区三区免费看 | 日本三级不卡视频 | 色综合久久久久久中文网 | 精品v亚洲v欧美v高清v | 免费影视大全推荐 | 四虎成人免费观看 | 一级一片免费视频 | 亚洲国产高清在线观看视频 | 亚洲国产精品传媒在线观看 | 久草在线高清视频 | 国产无套精品久久久久久 | 成年人视频在线 | 亚洲美女在线一区 | 久久视频网 | 综合久色| 免费在线观看亚洲视频 | 国产一区二区三区免费在线观看 | 国产专区精品视频 | 在线看的av网站 | 天天做天天射 | 91免费观看国产 | 永久中文字幕 | 日韩欧美观看 | 欧美日韩免费一区二区 | 欧美日本不卡高清 | 免费情缘| 国产xx在线 | 在线 视频 亚洲 | 免费开视频 | 国产精品成人a免费观看 | 亚洲人在线 | 国产综合激情 | 日韩在线视频在线观看 | 五月激情综合婷婷 | 欧日韩在线视频 | 1000部国产精品成人观看 | 91香蕉视频在线 | 中文国产字幕在线观看 | 91亚色在线观看 | 久久字幕网 | 国产精品久久久久9999吃药 | 91福利社区在线观看 | 久久精品99久久久久久2456 | 亚洲激情 在线 | 国产一在线精品一区在线观看 | 美女网站在线观看 | 五月婷婷狠狠 | 欧美精品999 | 伊人五月婷| 成人一级免费电影 | 国产一区国产精品 | 国产免费又粗又猛又爽 | 精品国产一区二区三区久久影院 | 五月婷婷丁香综合 | 国产青草视频在线观看 | 欧美性色网站 | 亚洲综合涩 | 午夜.dj高清免费观看视频 | 精品伦理一区二区三区 | 久久在线免费观看视频 | 日韩中文字幕国产精品 | 国产精品久久三 | 亚洲综合少妇 | www.超碰| 一二三区视频在线 | 在线a人片免费观看视频 | 久草免费在线观看 | av电影在线观看完整版一区二区 | 91精品久久久久久 | 亚洲精选在线 | www.色午夜.com| 欧美日韩国产一区 | 欧美国产精品一区二区 | 日日夜夜综合 | av中文字幕网站 | 毛片视频网址 | 狠狠狠色丁香综合久久天下网 | 黄色网在线免费观看 | 亚洲精品免费在线观看视频 | 91精品国产欧美一区二区成人 | 国产精品尤物视频 | 欧美一级特黄高清视频 | 色综合天天综合网国产成人网 | 国产一级二级三级视频 | 国产亚洲精品美女 | 亚洲aⅴ在线观看 | 亚洲最大免费成人网 | 国产91aaa | 在线精品国产 | 日本中文在线观看 | 中文字幕电影在线 | 欧美一级电影在线观看 | 91久久影院 | 亚洲综合色激情五月 | 色婷婷综合成人av | 国产精品嫩草在线 | 亚洲精品视频在线 | 欧美日韩久 | 国产精品资源 | 欧美日韩在线看 | 中国一级片视频 | 福利视频一二区 | 国产盗摄精品一区二区 | 欧美日韩在线网站 | 日韩在线免费视频观看 | 久久视频在线 | 缴情综合网五月天 | 视频在线精品 | 九九日九九操 | 麻豆国产精品永久免费视频 | 91一区啪爱嗯打偷拍欧美 | 日韩电影中文字幕在线观看 | 国产精品久久久久av免费 | 国产玖玖精品视频 | 久久99欧美 | 波多野结衣亚洲一区二区 | 99久久99久久精品免费 | 深夜免费福利在线 | 成 人 免费 黄 色 视频 | 国产又粗又硬又长又爽的视频 | 欧美成人黄色片 | 特级免费毛片 | 亚洲三级在线播放 | a天堂中文在线 | 亚洲精品色婷婷 | 男女啪啪免费网站 | 国产精品久久久久久久av大片 | 97理论电影 | 色婷婷久久 | 国产永久免费 | 亚洲精品国偷拍自产在线观看 | 超碰成人av| 99久久99久久免费精品蜜臀 | 亚洲网站在线 | 久久视频在线免费观看 | av中文字幕第一页 | 免费在线观看av片 | 五月婷婷播播 | 国产精品一区二区久久精品爱微奶 | 992tv在线观看网站 | 免费视频一区 | 日韩精品中字 | 欧美精品久久久久久久久久白贞 | 午夜a区 | 国内精品久久久精品电影院 | 日韩在线观看一区二区 | 91麻豆精品国产午夜天堂 | 亚洲精品美女在线 | 国产在线观看午夜 | 成人午夜电影免费在线观看 | 超碰人人乐 | 国产一区二区三区高清播放 | 91大片成人网 | 国产一区二区在线观看视频 | 成人h动漫精品一区二 | 伊人射| 玖玖爱免费视频 | 免费成人av在线看 | 日本h视频在线观看 | 日韩精品在线一区 | 免费在线成人av | 韩国精品福利一区二区三区 | 久久免费视频6 | 中文字幕韩在线第一页 | 九九热在线精品视频 | 成年人在线视频观看 | 97超碰在| 视频直播国产精品 | 韩国av一区二区三区 | 天天狠狠干 | 激情五月视频 | 日韩免费看视频 | www国产一区 | 欧美色综合久久 | 91三级视频 | 亚洲精品久久激情国产片 | 国产精品久久99精品毛片三a | 黄污网| 久久久999免费视频 日韩网站在线 | 伊人久久婷婷 | 国产成人av网站 | 国产精品99精品久久免费 | 欧美午夜剧场 | 欧美国产大片 | 国产精品18久久久久久久网站 | 久久天天躁狠狠躁夜夜不卡公司 | 亚洲精品国久久99热 | 91色一区二区三区 | 久久99精品久久久久久久久久久久 | 91麻豆精品| 涩涩网站在线看 | 玖玖色在线观看 | 国产一级免费观看视频 | 亚洲精品一区二区三区四区高清 | 精品久久久国产 | 久久超碰97 | 免费观看黄 | 99国内精品久久久久久久 | 国产精品密入口果冻 | 91精品在线免费视频 | av中文字幕在线电影 | 一本一道久久a久久综合蜜桃 | www.狠狠操.com | 免费看毛片在线 | 亚洲v欧美v国产v在线观看 | www.在线观看av | 成人国产精品免费观看 | 五月婷婷网站 | 最近日韩中文字幕中文 | 午夜精品一区二区三区免费视频 | 国产精品久久久影视 | 亚洲精品乱码久久久一二三 | 一级黄色在线免费观看 | 日韩最新在线 | 欧美日韩国产在线观看 | 视频在线观看一区 | 久久久久久久久久国产精品 | av电影一区| 亚洲三级黄 | 久久久久福利视频 | 成人欧美一区二区三区黑人麻豆 | 手机看片| 国产精品免费人成网站 | 精品无人国产偷自产在线 | 久久午夜精品视频 | 96久久 | 亚洲国产美女久久久久 | 色婷婷综合久久久久 | 涩五月婷婷 | 美女视频黄,久久 | 韩日电影在线免费看 | 国产精品网站一区二区三区 | 久久6精品 | 精品国产综合区久久久久久 | 在线观看免费高清视频大全追剧 | 国产精品女同一区二区三区久久夜 | 日韩精品一区二区三区不卡 | 丁香国产视频 | 久久国产欧美日韩 | 五月天丁香亚洲 | 91cn国产在线 | 欧美孕妇与黑人孕交 | 99免费在线观看视频 | 久久99久久精品 | 免费看的黄网站 | 亚洲国产精品日韩 | 99久热在线精品视频成人一区 | 亚洲精品午夜久久久久久久 | 久草在线最新视频 | 性色av香蕉一区二区 | 精品国内自产拍在线观看视频 | 六月久久婷婷 | 国产日韩欧美在线影视 | 天天射天天 | 国内成人av | 97人人模人人爽人人少妇 | 成人资源在线观看 | 黄色av观看 | 久久久久久久久久久久久久电影 | 亚洲精品麻豆视频 | 欧美一级小视频 | 久久亚洲综合国产精品99麻豆的功能介绍 | 天天色宗合| 久久久久久久精 | 五月开心色| 亚洲一区美女视频在线观看免费 | 国产黄色精品 | 成人网在线免费视频 | 99精品视频在线播放观看 | 97色噜噜 | 特级黄色片免费看 | 天天干天天草天天爽 | 成人黄色资源 | 麻豆91精品91久久久 | 精品久久久久久国产偷窥 | 国内精品免费久久影院 | 精品综合久久 | 色国产视频 | 国产不卡免费视频 | 欧美色图88 | 黄色特级片 | 亚洲国产婷婷 | 久影院 | 天天在线免费视频 | 国产精品成人一区二区三区吃奶 | 日韩乱码中文字幕 | 精品伊人久久久 | 久久国产精品第一页 | 色的网站在线观看 | 国产成人一区二区三区在线观看 | 综合网天天射 | 91在线视频观看免费 | 亚洲免费精品视频 | 久久久久久毛片精品免费不卡 | 午夜视频不卡 | 国产精品久久久久久久久久免费看 | 成年人免费观看国产 | 亚洲免费av观看 | 婷婷伊人综合 | 国内视频在线 | 中文字幕乱在线伦视频中文字幕乱码在线 | 精品999 | 黄色av电影网 | 波多野结衣电影一区 | 最近中文字幕免费视频 | 午夜精品一区二区三区免费视频 | 999成人网 | 西西人体www444 | 在线观看深夜视频 | 香蕉视频日本 | 亚洲桃花综合 | 成人免费毛片aaaaaa片 | 日韩电影在线看 | 午夜久久| 国产在线国偷精品产拍免费yy | 在线观看色网 | 婷婷午夜激情 | 国产精品专区在线 | 午夜美女福利 | 99久久www | 婷婷久久网 | 狠狠干狠狠久久 | 狠狠干干 | 在线观看一二三区 | 天天草天天干天天射 | 日韩毛片久久久 | 天天操天天玩 | 日韩高清 一区 | 亚洲国产免费av | 久草在线最新视频 | 欧美亚洲国产精品久久高清浪潮 | 色综合久久网 | 日韩在线一级 | 久久精品国产亚洲精品 | 99精品视频免费全部在线 | 国产特级毛片aaaaaa高清 | 99久久这里只有精品 | 亚洲午夜精品久久久久久久久 | 一级黄色片在线播放 | 麻豆一精品传二传媒短视频 | 日韩精品无 | 亚洲国产日韩一区 | 黄网站色视频免费观看 | 午夜男人影院 | 911久久香蕉国产线看观看 | 国产精品资源网 | 欧美日韩一区二区久久 | 日韩高清一区在线 | 国产精品18久久久久久不卡孕妇 | 久久人人爽人人爽人人片av免费 | 综合激情婷婷 | 久久国产一区二区三区 | 免费在线观看视频a | 免费网站污 | 精品久久久久久久久久久久 | 一区二区激情视频 | 亚洲黄色激情小说 | 国产精品99爱 | 久久免费99| 久久久久久久久久久网 | 日韩高清在线看 | 波多野结衣在线视频一区 | www.香蕉视频 | 一区二区三区四区精品 | 亚洲区精品视频 | 四虎永久免费 | 国产精品免费视频久久久 | 粉嫩av一区二区三区四区五区 | 免费看的黄色录像 | www国产精品com | 亚洲成av人片一区二区梦乃 | 国内丰满少妇猛烈精品播放 | 久久欧美视频 | 最近中文字幕在线 | 97国产大学生情侣白嫩酒店 | 中文字幕电影在线 | 涩涩伊人 | 国产黄色免费在线观看 | 精品久久精品 | 天天av在线播放 | 超碰在线资源 | 久久久不卡影院 | 日韩视频精品在线 | 高潮久久久久久久久 | 在线视频精品播放 | 久久免费毛片视频 | 丁香花在线观看视频在线 | 成人在线播放免费观看 | 国产99亚洲 | 在线观看成人毛片 | 精品久久国产 | 九九九热 | 亚洲免费在线看 | 香蕉网在线播放 | 日韩丝袜| 97精品伊人 | 亚洲国产中文字幕在线视频综合 | 99精品一区二区三区 | 99看视频在线观看 | 91毛片在线| 天天激情天天干 | 国产视频一区在线免费观看 | 国产网站在线免费观看 | 香蕉视频在线网站 | 国产香蕉97碰碰碰视频在线观看 | 国产亚洲精品无 | 精品日韩在线 | 91在线观看视频 | 97色涩| 亚洲国产成人精品在线观看 | 国产精品久久久久永久免费看 | 日韩免费电影网站 | 亚洲男男gaygay无套同网址 | 色婷婷综合久久久久 | 91 在线视频播放 | 国产色一区| 中文字幕黄色av | av大全在线观看 | 国产污视频在线观看 | 国产亚洲精品综合一区91 | 日韩精品一区二区三区视频播放 | 国产亚洲成人网 | 久久久久久网站 | 99在线免费观看视频 | 91成人精品国产刺激国语对白 | 欧美日韩免费在线观看视频 | 91手机视频 | 中国一级特黄毛片大片久久 | 天天拍夜夜拍 | 欧美男同网站 | 精品无人国产偷自产在线 | 精品久久久久久亚洲综合网站 | 青青草国产在线 | 综合激情伊人 | 午夜av影院 | 亚洲区精品| 欧美高清视频不卡网 | 亚洲国产一区二区精品专区 | 国产婷婷在线观看 | 97爱爱爱 | 超碰在线人人97 | 成人国产精品入口 | 中文字幕日韩无 | 国产精品视频内 | 日韩在线视频一区 | 国产小视频免费在线网址 | 日韩一区二区三区高清免费看看 | 黄色国产高清 | 国产精品刺激对白麻豆99 | 久久这里只精品 | 久久99最新地址 | 1024手机基地在线观看 | 激情综合电影网 | 国产高清视频免费 | 三级免费黄| 97成人精品视频在线观看 | 精品一区二区在线观看 | 婷色在线 | 亚洲综合五月天 | 国产一二三区av | 日韩欧美视频免费在线观看 | 国产精品免费久久久久久久久久中文 | 亚洲欧洲久久久 | 欧美天堂影院 | 麻豆播放| 亚洲一区二区麻豆 | 精品成人网 | av在线电影网站 | 久久精彩免费视频 | 国产精品入口66mio女同 | 国产精品观看 | 国产在线观看99 | 免费看片网站91 | 日韩精品视频在线免费观看 | 97偷拍在线视频 | 人人澡人人草 | 国产午夜剧场 | 一区二区不卡视频在线观看 | 亚洲精品视频在线免费 | av性在线| 蜜臀av免费一区二区三区 | 日韩久久久久久久久久久久 | 天天在线免费视频 | 国产小视频在线免费观看 | 日韩免费电影一区二区 | 久久久国产精品电影 | 91精品欧美一区二区三区 | www.黄色片.com| 911香蕉| 亚洲免费精品视频 | 免费久久精品视频 | 在线观看一区二区视频 | 久久久久久久久久亚洲精品 | 久久精品日本啪啪涩涩 | 国产91影院| 伊人色综合网 | 婷婷香蕉 | 国产亚洲精品女人久久久久久 | 精品在线视频观看 | 91精品91| 国产一区免费在线 | 黄色大片视频网站 | 人人射人人插 | 日韩精品不卡在线 | 欧美韩国日本在线观看 | 99久久激情 | 99久久久久久 | 中文字幕制服丝袜av久久 | 中文字幕高清在线 | 日韩精品亚洲专区在线观看 | av在线免费观看不卡 | 日日夜夜免费精品 | 五月激情姐姐 | 96国产在线 | 中文字幕色网站 | 五月婷婷丁香网 | 久草在线免费在线观看 | 国产精品一区二区三区在线 | 日本黄色免费在线 | 欧美成人性网 | 日韩电影在线观看中文字幕 | 激情大尺度视频 | 免费黄色网址大全 | 99在线精品视频 | 久久天堂亚洲 | 国产成人精品一区二区在线观看 | 亚洲国产中文字幕 | 国产热re99久久6国产精品 | 成人毛片在线视频 | 精品在线观看一区二区三区 | 国产精品美女www爽爽爽视频 | 欧美色黄| 精品久久久久久综合日本 | 亚洲综合视频在线观看 | 免费网站v | 国内精品二区 | 久久不卡视频 | 精品成人国产 | 日韩久久久久久久久久 | 天天操夜夜逼 | 91精品导航 | 免费视频一二三 | 六月丁香在线观看 | 欧美少妇xxx | 免费观看的av | 久久久国产一区二区三区四区小说 | 色婷婷综合激情 | 国产亚洲精品久久久久久电影 | 欧美日韩一区二区三区视频 | 国产成人精品久 | 少妇性bbb搡bbb爽爽爽欧美 | 国产精品精品久久久久久 | 激情伊人五月天久久综合 | 久久精品一区二区三区中文字幕 | 91看片淫黄大片一级在线观看 | 欧美国产91| 国产在线观看国语版免费 | 欧美精品乱码久久久久 | 欧美国产一区二区 | 99热精品国产一区二区在线观看 | 黄污在线观看 | 成人三级网站在线观看 | 看av在线 | 国产视频一区在线免费观看 | 成年人三级网站 | 91久久久国产精品 | 91三级在线观看 | 日韩欧美99 | www夜夜操com| 国产又粗又猛又色 | 香蕉视频免费在线播放 | 精品美女视频 | 91网在线观看 | 国产女人40精品一区毛片视频 | 在线观看的黄色 | 国产福利中文字幕 | 成人性生交大片免费观看网站 | 狠狠色综合网站久久久久久久 | 国产精品久久久久久久午夜片 | 日韩精品视频网站 | 午夜影院一级片 | 一级a性色生活片久久毛片波多野 | 激情综合亚洲精品 | 69国产成人综合久久精品欧美 | 久久久 激情| 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 精品av网站 | 91av99| 四虎www com| 国产精品成人一区二区三区 | 久久夜色网 | www色 | 国产资源在线观看 | 91精品在线视频观看 | 欧美孕妇视频 | 亚洲欧洲精品一区二区精品久久久 | 久久精品欧美一区二区三区麻豆 | 久久精品久久99 | 久久精品官网 | 9草在线 | 日本成人a | 久久精品国产精品亚洲 | 黄色视屏av| 久久刺激视频 | 久久久午夜电影 | 精品少妇一区二区三区在线 | 国产99久久九九精品 | 色综合五月 | av高清不卡 | 亚洲精品久久激情国产片 | 日韩在线资源 | av在线播放不卡 | 国产午夜精品理论片在线 | 国产午夜精品久久 | 天天久久夜夜 | 国产一级在线观看视频 | 99在线精品视频在线观看 | 久久精品成人欧美大片古装 | 婷婷色网视频在线播放 | 欧美色精品天天在线观看视频 | 日日夜夜精品视频天天综合网 | 国产精品久久久久久一二三四五 | 97成人精品区在线播放 | 久久五月天综合 | 日韩色在线 | 精品视频在线观看 | 欧美性精品| 亚洲黄污 | 亚洲欧美日韩一区二区三区在线观看 | 中文字幕91 | 中文字幕在线观看你懂的 | 天天草综合网 | av视屏在线播放 | 美女中文字幕 | 日韩欧美一区二区三区在线观看 | 婷婷在线观看视频 | 国产精品精品 | 日女人电影 | 蜜桃av观看 | 在线观看国产 | 精品99在线视频 | av片子在线观看 | 波多野结衣视频一区二区 | 欧美精品国产精品 | 视频一区二区国产 | 香蕉网站在线观看 | 精品国产aⅴ一区二区三区 在线直播av | 在线最新av | 婷婷亚洲综合 | 久久福利精品 | 人人插人人| 国产一区二区三区网站 | 深爱婷婷 | 国产在线视频一区二区三区 | 久久刺激视频 | 国产精品video爽爽爽爽 | 中文字幕乱视频 | 五月婷婷激情六月 | 亚洲午夜精品一区二区三区电影院 | 日韩视频一二三区 | av高清网站在线观看 | 九色视频自拍 | 国产高清在线免费 | 蜜臀av网址 | 一区二区三区四区五区六区 | 色婷婷免费视频 | 欧美精品久久久久久久久久 | 国产成人精品一区二区三区免费 | 91一区啪爱嗯打偷拍欧美 | 久久久久久麻豆 | 婷婷五天天在线视频 | 在线观看视频色 | 日韩免费一级a毛片在线播放一级 | 在线观看成人国产 | 成人久久久久久久久久 | 丁香激情视频 | 久久99免费 | 亚洲欧美999| 日韩极品视频在线观看 | 色视频网站在线观看一=区 a视频免费在线观看 | 93久久精品日日躁夜夜躁欧美 | 综合亚洲视频 | www.综合网.com | 91av在线播放视频 | 日日摸日日添夜夜爽97 | 狠狠干 狠狠操 | 免费婷婷 | 国产亚洲视频中文字幕视频 | 久久精品福利视频 | 91人人网 | 久久久久北条麻妃免费看 | 成人毛片a| 国产一级免费片 | 国产黄色资源 | 成人午夜电影免费在线观看 | 91大神精品视频在线观看 | 在线看成人片 | 91精品视频播放 | 视频二区在线 | 国产高清免费av | 日批在线看 | 91看片在线观看 | 国产美女网站在线观看 | 国产在线v | 日韩色一区二区三区 | 日本一区二区高清不卡 | 欧美日韩视频一区二区三区 | 日韩av在线影视 | 在线免费观看不卡av | 日本韩国中文字幕 | 五月婷婷六月综合 | 国产91在线免费视频 | 五月天视频网站 | 久久激五月天综合精品 | 一区久久久 | 精品久久久久久久久中文字幕 | 高清av不卡 | 亚洲国产精品va在线看黑人动漫 | 99国内精品 | 日韩在线观看的 | 777xxx欧美| 91精品视频网站 | 91成人蝌蚪| 久久免费视频国产 | 在线免费观看视频一区二区三区 | 一级α片免费看 | 午夜性生活| 国产免费观看高清完整版 | 欧美精品三级在线观看 | 在线观看中文字幕一区 | 国产精品va在线 | 免费91在线观看 | 日韩大片免费观看 | 中文字幕在线播放日韩 | 99热国产在线中文 | 91av社区| 久久久久久久免费看 | 人人射人人 | 免费在线看v | 4438全国亚洲精品在线观看视频 | 成人黄在线观看 | 狠狠操狠狠操 | 中文字幕在线观看一区二区三区 | 久久视频国产精品免费视频在线 | 色综合在 | 亚洲精品www久久久久久 | 97看片| 欧美一区二区免费在线观看 | 五月婷在线 | 国产精品成人自产拍在线观看 | 久草视频免费在线观看 | 国产精品久久久久久久妇 | 欧美片一区二区三区 | 日韩av在线免费看 | 五月婷婷深开心 | 一区二区三区四区久久 | 黄色电影小说 | 亚洲在线高清 | 欧洲黄色片 | 亚洲午夜久久久久久久久电影网 | 日本久久电影网 | 99久久久成人国产精品 | 手机看国产毛片 | a级国产乱理论片在线观看 伊人宗合网 | 亚洲一区免费在线 | 午夜三级大片 | 国产片网站| 最近更新好看的中文字幕 | 亚洲成熟女人毛片在线 | 国产裸体永久免费视频网站 | 亚洲精区二区三区四区麻豆 | 欧美va日韩va | 美女性爽视频国产免费app | 亚洲精品乱码久久久久久高潮 | 中文字幕文字幕一区二区 | www黄免费| 免费中文字幕视频 | 国产精品高 | 婷婷深爱五月 | 精品国内自产拍在线观看视频 | 国产在线观看一 | 免费黄色激情视频 | 国产精品毛片网 | 久草精品电影 | 黄色的视频网站 | 久久久精品一区二区 | 久草网视频 | 日日天天狠狠 | 日本成址在线观看 | 91高清免费看 | 国产成人精品亚洲精品 | 97色国产| 国产成人av在线 | 精品v亚洲v欧美v高清v | 日韩久久精品一区二区三区下载 | 国产精品久久久久免费a∨ 欧美一级性生活片 | 91传媒激情理伦片 | 97精品国产97久久久久久春色 | 丁香综合激情 | 免费亚洲黄色 | 免费高清男女打扑克视频 | 99视频这里有精品 | 亚洲男男gaygay无套同网址 | 国产黄色电影 | 日韩最新在线 | 天天亚洲 | 国产精品99久久久久久大便 | 免费在线国产精品 | 中文字幕高清免费日韩视频在线 | 91久久久国产精品 | 久久久久久网 | 免费观看午夜视频 | 在线精品视频免费观看 | 毛片区| 国产三级香港三韩国三级 | 日韩在线视 | 蜜臀久久99精品久久久酒店新书 | 亚洲黄色网络 | 国产精品6 | 亚洲精品视频在线播放 | 欧美最猛性xxxxx(亚洲精品) | 天天玩天天干 | 国产一级在线观看 | 国产成人在线免费观看 | 视频福利在线 | 国产99久久九九精品免费 | 伊人五月天.com | 九九有精品 | 人人cao| 黄www在线观看| 久久久久久综合网天天 | 99电影| 亚洲国产大片 | 91精品久久久久久综合乱菊 | 久久国产一二区 | 色www精品视频在线观看 | 在线播放视频一区 | 亚洲精品美女免费 | 久久视屏网 | 免费日韩一区二区三区 | 欧美日本中文字幕 | 综合网中文字幕 | 色永久免费视频 | 999久久国产| 色婷婷av一区 | 伊人天堂av | 国产综合在线视频 | 波多野结衣精品在线 | 亚洲草视频 | av免费高清观看 | 日韩在线观看第一页 | 伊人超碰在线 | 91精品在线免费观看视频 | 精品国产一二三四区 | 日韩系列| 色综合久久88色综合天天6 | 久久国产成人午夜av影院潦草 | 亚洲精品国偷拍自产在线观看蜜桃 | 日韩精选在线 | 黄色国产高清 | 天天天色综合a | 日韩动态视频 | 韩国一区二区在线观看 | 国产精品第52页 | 日本不卡一区二区三区在线观看 | 亚洲影视九九影院在线观看 | 日日精品| 四虎www com| 国产精品免费成人 | 亚洲天堂网在线播放 | 日韩欧美一区二区在线观看 | 天天玩夜夜操 | 狠狠的干狠狠的操 | 国产精品精品久久久 | 在线久草视频 | 正在播放国产一区 | 天天操天天操一操 | 亚洲 欧美变态 另类 综合 | 三级黄色a | 综合中文字幕 | 欧美一二三区在线播放 | 国产高清视频网 | av片免费播放 | 亚洲高清av| 久草在线最新 | 久久国产精品免费看 | 欧美日韩一区久久 | 午夜久久久久久久 |