久久亚洲成a人片熟女精品色一区二区三区|国产精品视频第一精品视频|av天堂热无码手机版|亚洲?v无码久久无遮挡|国产精品偷伦视频免费观看国产|麻豆国产自产精品丰满熟妇|av无码av不卡一区二区|久久亚洲精品中文字

ARTICLE DETAIL

資訊詳情

深耕商務建站與企業(yè)官網(wǎng)運營的一線實戰(zhàn)洞察。

新版Linux LED驅(qū)動實驗:設備號分配與cdev結構體全流程解析

新版Linux LED驅(qū)動實驗:設備號分配與cdev結構體全流程解析 做 ARM Linux 驅(qū)動繞不開一個經(jīng)典實驗LED。這些年在網(wǎng)上能翻到的教程一大半還在用老版register_chrdevmknod那套寫法放到 Ubuntu20.04 的新內(nèi)核上要么編譯報錯要么加載后行為不對勁。標題里提到的“新版 LED 驅(qū)動實驗原理”和“設備號分配 cdev 結構體全流程”其實點出了新舊兩套框架最本質(zhì)的差異新版把一個黑盒拆成了幾個顯式步驟每一步都讓你自己控制、自己釋放。這篇文章就照著 Ubuntu20.04 環(huán)境把從設備號申請到 cdev 注冊、再到/dev/led節(jié)點自動出現(xiàn)的完整鏈路走一遍順帶把我在調(diào)試中踩過的坑填給你適合剛從 2.6/3.x 老代碼切過來、或者準備正經(jīng)寫字符設備驅(qū)動的開發(fā)者參考。1. 從“一鍵打包”到“全流程拆解”新版 LED 驅(qū)動實驗的框架差異1.1 老版 register_chrdev 到底封裝了什么早期驅(qū)動里最常見的一段代碼是這樣的ret register_chrdev(major, led, led_fops);如果major傳 0內(nèi)核會替你動態(tài)分配一個主設備號如果傳一個固定值那就把該主設備號占下來??粗∈碌@個函數(shù)內(nèi)部做的事情遠比表面多它會申請一段設備號區(qū)間、初始化一個cdev結構體、把file_operations掛上去并且一下就占滿 256 個次設備號。問題也隨之而來。第一你無法精細管理次設備號比如一個驅(qū)動要控制 8 個 LED你想讓每個 LED 各占一個次設備號老接口根本表達不出這種意圖它默認把所有次設備號都包圓了。第二主設備號沖突極難排查內(nèi)核只在申請失敗時返回一個錯誤碼不會告訴你是誰占用了這個號你得自己去翻/proc/devices。第三也是最讓新手難受的一點設備節(jié)點不會自己出現(xiàn)。老教程會教你在加載后用mknod /dev/led c major 0手動建節(jié)點而現(xiàn)代發(fā)行版的/dev由 devtmpfs/udev 管理手動mknod出來的節(jié)點在系統(tǒng)重啟后就會消失權限也經(jīng)常不對。這并不是說register_chrdev不能用了它在 5.x 內(nèi)核里依然作為兼容接口存在但新代碼再走這條路等于放棄了內(nèi)核提供的大量資源管理能力。新版驅(qū)動把流程拆成我們下面要講的“設備號分配 → cdev 注冊 → 設備節(jié)點創(chuàng)建”三段讓每一步都可控、可回滾、可排查。1.2 新版全流程每個環(huán)節(jié)各管一攤新版 LED 驅(qū)動在module_init里要按順序做四件事分配設備號alloc_chrdev_region或register_chrdev_region初始化并添加cdevcdev_initcdev_add創(chuàng)建 classclass_create創(chuàng)建設備節(jié)點device_create。對應在module_exit里清理順序嚴格反著來先銷毀設備節(jié)點再銷毀 class然后移除 cdev最后釋放設備號。我經(jīng)常跟新人講這段順序不是隨便定的它對應的是資源依賴關系device_create依賴 class 存在cdev 依賴設備號存在所以你銷毀的時候必須從最上層開始一層層拆先斷掉用戶可見的入口再回收內(nèi)核資源。我用一個生活類比來理解這套模型設備號是房子的門牌號cdev是房子里擺好的辦公桌file_operations是桌上貼著的工作流程說明而/dev/led這個節(jié)點則是門口掛的招牌。沒有門牌號辦公桌不知道掛靠在哪沒有辦公桌客人來了沒人接待沒有招牌用戶根本不知道有這個房間。新版驅(qū)動把這三件事一步步做每一步失敗都能立刻定位到是哪塊出了問題。2. 設備號分配alloc_chrdev_region 和 register_chrdev_region 怎么選2.1 dev_t 與 MKDEV/MAJOR/MINOR 的編碼規(guī)則設備號在內(nèi)核里是一個dev_t類型本質(zhì)是個 32 位無符號整數(shù)。高 12 位是主設備號低 20 位是次設備號。主設備號用來區(qū)分設備類型和對應的驅(qū)動次設備號用來區(qū)分同一驅(qū)動下的多個實例。直接位運算容易出錯內(nèi)核提供了現(xiàn)成宏#include linux/kdev_t.h dev_t devno MKDEV(240, 0); // 主設備號 240次設備號 0 int major MAJOR(devno); // 取出主設備號 int minor MINOR(devno); // 取出次設備號主設備號在 5.x 內(nèi)核里可用于注冊的范圍大約到 511實際分配時建議別手寫固定值除非你有明確理由。次設備號的 20 位空間足夠讓一個主設備掛幾百萬個同類型設備所以驅(qū)動里通常一個主設備號配合多個次設備號使用。我在調(diào)試時候的習慣是先把MAJOR(devno)和MINOR(devno)打出來看確認設備號確實拿到了再進行下一步。這一步出錯后面所有工作都白做。2.2 兩種分配函數(shù)的適用場景設備號分配有兩個 API很多新手搞不清區(qū)別其實看名字就夠直白函數(shù)傳入?yún)?shù)特點適用場景風險register_chrdev_region(dev_t first, unsigned count, const char *name)需要手動構造first即指定起始設備號調(diào)試時固定設備號、產(chǎn)品有明確主設備號約定可能與其他驅(qū)動沖突加載失敗alloc_chrdev_region(dev_t *dev, unsigned firstminor, unsigned count, const char *name)內(nèi)核自動分配結果寫入指針產(chǎn)品代碼、避免手工管理設備號每次加載主設備號可能不同如果你想固定主設備號代碼這么寫static int major 240; dev_t devno; devno MKDEV(major, 0); ret register_chrdev_region(devno, 1, led); if (ret 0) { pr_err(failed to register chrdev region\n); return ret; }如果讓內(nèi)核動態(tài)分配dev_t devno; ret alloc_chrdev_region(devno, 0, 1, led); if (ret 0) { pr_err(failed to alloc chrdev region\n); return ret; } major MAJOR(devno); pr_info(led major %d, minor %d\n, major, MINOR(devno));我在實際項目里強烈推薦第二種原因很現(xiàn)實你永遠不知道目標板子上哪些主設備號已經(jīng)被其他驅(qū)動占了。動態(tài)分配把“找空號”這件事交給內(nèi)核沖突概率降到最低。調(diào)試階段為了復現(xiàn)問題可以加一個模塊參數(shù)允許手動指定主設備號0 表示動態(tài)分配。static int major 0; module_param(major, int, 0644); if (major) { devno MKDEV(major, 0); ret register_chrdev_region(devno, 1, led); } else { ret alloc_chrdev_region(devno, 0, 1, led); }這樣insmod led.ko默認動態(tài)分配insmod led.ko major241則固定為 241調(diào)試和產(chǎn)品兩不誤。2.3 設備號釋放與常見沖突排查設備號屬于內(nèi)核全局資源用完了必須還回去。釋放函數(shù)只有配套的unregister_chrdev_region(devno, count)一個放在module_exit的最后一步執(zhí)行。我在代碼審查時見過不少新手把unregister_chrdev_region放在cdev_del之前當時看不出問題但設備文件還開著的時候內(nèi)核按設備號找不到對應的cdev系統(tǒng)日志里就會冒出一些奇怪的錯誤。排查設備號沖突最直接的辦法是加載前先看一眼cat /proc/devices這個文件列出當前已經(jīng)注冊的字符設備和塊設備的設備號與名稱。如果發(fā)現(xiàn)目標主設備號已經(jīng)在列表里那就別硬搶。還有一招是用grep過濾cat /proc/devices | grep led如果日志出現(xiàn)register_chrdev_region: ... already in use之類的提示多半就是主設備號撞車了。3. cdev 結構體如何把 file_operations 掛到設備號上3.1 struct cdev 的關鍵成員與初始化設備號只是給設備發(fā)了一張“身份證”真正讓這張身份證生效的是cdev。內(nèi)核源碼里的定義大致如下struct cdev { struct kobject kobj; struct module *owner; const struct file_operations *ops; dev_t dev; unsigned int count; };四個關鍵成員各有用處kobj讓cdev成為內(nèi)核對象模型的一員可以被引用計數(shù)管理owner通常寫成THIS_MODULE保證設備正被使用時模塊不能被卸載ops掛載文件操作函數(shù)集是業(yè)務核心dev記錄它對應的設備號count表示占用了多少個次設備號。初始化有兩種方式。一種是在文件作用域直接放一個struct cdevstatic struct cdev led_cdev; cdev_init(led_cdev, led_fops);另一種先用cdev_alloc()動態(tài)分配再cdev_init()。對于 LED 這種單實例驅(qū)動我建議用靜態(tài)方式少一次動態(tài)內(nèi)存管理就少一類內(nèi)存泄漏隱患多實例場景再用動態(tài)方式按需創(chuàng)建。初始化完成后led_cdev.owner THIS_MODULE這行也別忘了否則模塊卸載時會出問題。3.2 cdev_add 的時機與錯誤處理cdev_add是真正把cdev和設備號綁進內(nèi)核的設備表里的動作ret cdev_add(led_cdev, devno, 1); if (ret 0) { pr_err(failed to add cdev\n); goto err_unregister; }第三個參數(shù)是設備數(shù)量一般寫 1如果申請了多個次設備號就寫對應的數(shù)量。這里特別提醒一個最容易忽視的點cdev_add一旦成功用戶空間立刻就能打開這個設備了所以在這之前必須保證后續(xù)所有資源都已經(jīng)準備好。順序反了比如先cdev_add再class_create那么成功添加后到 class 創(chuàng)建前這個短暫窗口內(nèi)已經(jīng)可以 open 設備但節(jié)點還不存在容易讓上層應用拿到一個半成品設備。cdev_add失敗時要記得把前面分配的設備號釋放掉。我最??吹降膯栴}就是失敗分支里只return -EINVAL設備號還掛在系統(tǒng)里第二次加載直接撞車。正確的回滾順序是cdev_del→unregister_chrdev_region一層層退回去。3.3 file_operations 里怎么設計 LED 的操作入口file_operations是驅(qū)動與用戶空間交互的接口表。LED 實驗不需要復雜功能核心就三個open、write、release。以下是新內(nèi)核推薦的空 open 寫法static int led_open(struct inode *inode, struct file *filp) { return 0; }如果有多個 LED可以在open里通過iminor(inode)取出次設備號確定當前操作的是哪一路 LED。write里要接收用戶傳進來的“開/關”指令static ssize_t led_write(struct file *filp, const char __user *buf, size_t count, loff_t *ppos) { char value; if (copy_from_user(value, buf, 1)) return -EFAULT; if (value 1) led_set_state(1); else if (value 0) led_set_state(0); else return -EINVAL; return 1; }注意這里不能直接用*buf那是用戶空間地址內(nèi)核線程不能直接解引用。copy_from_user返回值為 0 表示拷貝成功返回值非 0 表示還有多少字節(jié)沒拷完應當返回-EFAULT。這個細節(jié)是新手最容易踩的不拷貝直接解引用輕則讀到垃圾值重則觸發(fā)內(nèi)核 oops。file_operations定義如下static const struct file_operations led_fops { .owner THIS_MODULE, .open led_open, .write led_write, .release led_release, };寫const是必須的因為內(nèi)核只允許注冊只讀的file_operations表。4. 設備節(jié)點從 mknod 到自動出現(xiàn)class_create 與 device_create 的配合4.1 /dev/led 這個節(jié)點到底是誰創(chuàng)建的老框架需要mknod手動創(chuàng)建節(jié)點但新版驅(qū)動在module_init里調(diào)用device_create后/dev/led會自動出現(xiàn)。這個“自動”的背后是 udev 在干活device_create會向內(nèi)核的 sysfs 寫入設備信息并觸發(fā) ueventudev 守護進程收到事件后根據(jù)設備所屬的 class 和名字在/dev下創(chuàng)建對應節(jié)點。對于嵌入式環(huán)境里不用 udev、而是用 busybox 的場景對應的機制是 mdev需要在啟動腳本里配置 mdev 的規(guī)則。Ubuntu20.04 桌面版和服務器版默認都有 udev所以我們在 PC 上跑模塊時基本上不需要額外配置。class_create的作用是給設備分組。設備創(chuàng)建后你會在/sys/class/led/下面看到這個設備這也是用戶態(tài)程序發(fā)現(xiàn)硬件設備的入口之一??梢岳斫鉃閏lass是設備在 sysfs 里的“目錄名”決定它歸到哪個類目下面。4.2 device_create 參數(shù)逐項拆解device_create這個函數(shù)參數(shù)比較多我一個個解釋static struct class *led_class; static struct device *led_device; led_class class_create(THIS_MODULE, led); if (IS_ERR(led_class)) { pr_err(failed to create class\n); goto err_cdev_del; } led_device device_create(led_class, NULL, devno, NULL, led); if (IS_ERR(led_device)) { pr_err(failed to create device\n); goto err_class_destroy; }第一個參數(shù)led_class是設備歸屬的 class第二個參數(shù)parent通常傳 NULL第三個參數(shù)devno是這個設備對應的設備號它是設備和cdev掛鉤的錨點第四個參數(shù)drvdata可以傳驅(qū)動的私有數(shù)據(jù)指針LED 實驗里不需要最后一個變參是設備節(jié)點名字的格式化字符串比如想要led0、led1這種名字就寫成device_create(led_class, NULL, devno, NULL, led%d, 0)。要注意class_create和device_create的返回值都是錯誤指針。判斷時不能直接和 NULL 比較要用IS_ERR()和PTR_ERR()if (IS_ERR(led_device)) { ret PTR_ERR(led_device); goto err_class_destroy; }4.3 完整可編譯的 LED 驅(qū)動代碼把前三章的思路串起來就是一個完整的新版 LED 字符設備驅(qū)動。我貼一個能直接編譯的版本實際硬件控制部分我用一個接口函數(shù)代替你換成自己的 GPIO 或寄存器操作即可#include linux/module.h #include linux/kernel.h #include linux/fs.h #include linux/cdev.h #include linux/device.h #include linux/uaccess.h #define LED_DEV_COUNT 1 static int major 0; module_param(major, int, 0644); MODULE_PARM_DESC(major, led major number, 0 for dynamic alloc); static dev_t led_devno; static struct cdev led_cdev; static struct class *led_class; static struct device *led_device; static void led_set_state(int state) { /* 實際項目中替換為 ioremap 寄存器操作或 gpiod_set_value */ pr_info(led state - %d\n, state); } static ssize_t led_write(struct file *filp, const char __user *buf, size_t count, loff_t *ppos) { char value; if (count 1) return -EINVAL; if (copy_from_user(value, buf, 1)) return -EFAULT; if (value 1) led_set_state(1); else if (value 0) led_set_state(0); else return -EINVAL; return 1; } static int led_open(struct inode *inode, struct file *filp) { return 0; } static int led_release(struct inode *inode, struct file *filp) { return 0; } static const struct file_operations led_fops { .owner THIS_MODULE, .open led_open, .write led_write, .release led_release, }; static int __init led_init(void) { int ret; if (major) { led_devno MKDEV(major, 0); ret register_chrdev_region(led_devno, LED_DEV_COUNT, led); } else { ret alloc_chrdev_region(led_devno, 0, LED_DEV_COUNT, led); } if (ret 0) { pr_err(failed to alloc/register chrdev region\n); return ret; } major MAJOR(led_devno); pr_info(led major %d, minor %d\n, major, MINOR(led_devno)); cdev_init(led_cdev, led_fops); led_cdev.owner THIS_MODULE; ret cdev_add(led_cdev, led_devno, LED_DEV_COUNT); if (ret 0) { pr_err(failed to add cdev\n); goto err_unregister_region; } led_class class_create(THIS_MODULE, led); if (IS_ERR(led_class)) { ret PTR_ERR(led_class); pr_err(failed to create class\n); goto err_cdev_del; } led_device device_create(led_class, NULL, led_devno, NULL, led); if (IS_ERR(led_device)) { ret PTR_ERR(led_device); pr_err(failed to create device\n); goto err_class_destroy; } return 0; err_class_destroy: class_destroy(led_class); err_cdev_del: cdev_del(led_cdev); err_unregister_region: unregister_chrdev_region(led_devno, LED_DEV_COUNT); return ret; } static void __exit led_exit(void) { device_destroy(led_class, led_devno); class_destroy(led_class); cdev_del(led_cdev); unregister_chrdev_region(led_devno, LED_DEV_COUNT); pr_info(led driver removed\n); } module_init(led_init); module_exit(led_exit); MODULE_LICENSE(GPL); MODULE_AUTHOR(A Developer); MODULE_DESCRIPTION(New style LED char device driver); MODULE_VERSION(1.0);這個文件保存為led.c和后面的 Makefile 放同一目錄。加載后write一個1或0進去日志里會打印led state - 1或led state - 0。換成真實硬件時只要把led_set_state里的占位代碼替換成實際的點燈/滅燈操作即可字符設備那套框架完全不用動。5. Ubuntu20.04 上編譯模塊KDIR 與 Makefile 是關鍵5.1 本機編譯與交叉編譯的取舍Ubuntu20.04 在驅(qū)動開發(fā)里通常有兩個角色。如果你只是想在 x86 主機上驗證字符設備框架直接用本機內(nèi)核頭文件編譯模塊insmod到當前系統(tǒng)就能測。如果你手上有 ARM 開發(fā)板需要把 Ubuntu 當作宿主機給目標板交叉編譯.ko文件。本機編譯需要安裝內(nèi)核頭文件最簡單的方式sudo apt update sudo apt install linux-headers-generic裝完后一般指向/lib/modules/$(uname -r)/build目錄。uname -r查看當前內(nèi)核版本如果頭文件版本和當前運行內(nèi)核不一致編譯時 vermagic 對不上insmod時會拒絕加載。這一點在升級內(nèi)核后特別容易踩舊頭文件還在但當前內(nèi)核已經(jīng)換新版本了。交叉編譯則要準備目標板同版本的內(nèi)核源碼并且該源碼目錄已經(jīng)完成配置。這個源碼目錄就是 KDIR編譯出的模塊和開發(fā)板內(nèi)核的 vermagic 必須完全一致否則加載時報version magic不匹配。所以內(nèi)核源碼版本要和開發(fā)板燒錄的內(nèi)核版本嚴格對應最好直接用制作內(nèi)核鏡像時的那份源碼。5.2 Makefile 模板外部模塊的 Makefile 是一個固定套路核心是調(diào)用內(nèi)核構建系統(tǒng)obj-m : led.o KERNELDIR ? /lib/modules/$(shell uname -r)/build PWD : $(shell pwd) all: $(MAKE) -C $(KERNELDIR) M$(PWD) modules clean: $(MAKE) -C $(KERNELDIR) M$(PWD) clean-C告訴 make 先切換到內(nèi)核構建目錄M$(PWD)指回模塊源碼目錄modules是構建目標。這個 Makefile 里的縮進必須是 Tab不能用空格否則 make 直接報錯我見過太多次因為這個原因卡住的情況。交叉編譯時改成ARCH ? arm CROSS_COMPILE ? arm-linux-gnueabihf- KERNELDIR ? /path/to/kernel/source all: $(MAKE) -C $(KERNELDIR) M$(PWD) ARCH$(ARCH) CROSS_COMPILE$(CROSS_COMPILE) modules clean: $(MAKE) -C $(KERNELDIR) M$(PWD) ARCH$(ARCH) CROSS_COMPILE$(CROSS_COMPILE) cleanCROSS_COMPILE是工具鏈前綴Ubuntu20.04 上安裝 32 位 ARM 工具鏈sudo apt install gcc-arm-linux-gnueabihf安裝完確認一下arm-linux-gnueabihf-gcc -v工具鏈能跑起來再繼續(xù)否則后面所有交叉編譯命令都會以command not found告終。5.3 編譯報錯與模塊加載校驗編譯階段最常出現(xiàn)的問題之一是頭文件找不到報錯類似linux/module.h: No such file or directory。這通常意味著KERNELDIR指向的目錄缺少include/generated或include/linux文件簡單說就是內(nèi)核頭文件沒準備好。解決方法是要么用發(fā)行版提供的linux-headers-generic要么在內(nèi)核源碼根目錄先執(zhí)行make prepare等配置步驟不能拿一個剛解壓的裸源碼目錄直接當 KDIR 用。另一個問題是架構混亂。如果你在一臺 x86 主機上編譯出了 ARM 的.ko可以先用file命令確認file led.ko輸出里能看到 ELF 架構信息比如ARM或x86-64。如果架構不對多半是 Makefile 里的ARCH和CROSS_COMPILE沒起作用或者上一次編譯的中間文件殘留。換架構之前先make clean清掉舊文件再編避免殘留的.o被復用。模塊編譯出來之后用modinfo看 vermagicmodinfo led.ko | grep vermagic這份信息和開發(fā)板內(nèi)核要一致。Ubuntu 桌面版默認開啟了安全啟動直接insmod可能報Required key not available那是模塊簽名校驗沒通過。臨時測試可以進入 BIOS 關閉 Secure Boot或者給模塊做簽名這個環(huán)節(jié)不是驅(qū)動邏輯問題但很容易卡住新手。6. 加載、測試、排錯實際跑一次新版 LED 驅(qū)動6.1 insmod 之后應該看到什么先把 Ubuntu20.04 上本機測試的完整流程走一遍。編譯成功得到led.ko然后用sudo加載sudo insmod led.ko緊接著觀察內(nèi)核日志dmesg | tail正常情況下應該能看到led major 240, minor 0數(shù)字取決于動態(tài)分配結果。然后確認設備號確實進入內(nèi)核cat /proc/devices | grep led再查看設備節(jié)點ls -l /dev/led如果有crw-rw---- 1 root root 240, 0 ... /dev/led說明整套鏈路已經(jīng)通了。此時用一個普通用戶訪問可能沒有權限測試時直接換成 root 或用sudoecho 1 /dev/led echo 0 /dev/led每執(zhí)行一次dmesg里應該多一行l(wèi)ed state - 1或led state - 0。如果你在板子上接了真實 LED這時候燈就會跟著亮滅。6.2 失敗鏈路排查清單我在帶人做實驗時總結過一套排查順序按現(xiàn)象定位最快現(xiàn)象可能原因排查與解決insmod 成功但 /dev/led 不存在device_create失敗或者 udev 沒有收到事件dmesg看是否有failed to create device檢查 class_create 是否成功/dev/led 存在但 open 失敗設備節(jié)點權限不足或 cdev_add 順序有問題sudo chmod 666 /dev/led臨時測試寫 udev 規(guī)則做永久處理open 成功但 echo 報錯copy_from_user失敗或 write 邏輯返回負數(shù)回到驅(qū)動代碼檢查 fops 里 write 是否注冊成功rmmod 報仍在占用有進程打開著 /dev/ledfuser -v /dev/led查看占用進程關閉后再卸載加載時設備號沖突register_chrdev_region 指定的 major 被占用cat /proc/devices查詢改用動態(tài)分配或換號特別說一下/dev/led權限問題。device_create創(chuàng)建的節(jié)點默認屬主是 root權限是 0600所以普通用戶echo進去必然被拒。臨時測試用chmod 666沒問題產(chǎn)品上建議寫一個 udev 規(guī)則按 class 和 subsystem 給設備節(jié)點設置權限組這樣每次開機自動生效不依賴手動改權限。6.3 動態(tài)主設備號對應用透明嗎這是許多新手最后會糾結的問題如果每次加載主設備號都變那我應用程序里寫死的mknod或者open路徑怎么辦答案是不用擔心。/dev/led這個節(jié)點名是device_create最后一個參數(shù)決定的和主設備號無關。應用層打開設備用的是路徑名真正打開時 VFS 會根據(jù)節(jié)點記錄的dev_t找到對應的cdev所以你完全不感知主設備號是多少。這也正是新版框架的價值設備號是內(nèi)核內(nèi)部資源應用只看到設備節(jié)點名。多 LED 場景就更好理解了。申請兩個次設備號device_create分別創(chuàng)建led0和led1應用行為完全一致驅(qū)動內(nèi)部通過iminor(inode)區(qū)分控制哪一路。LED 實驗跑通后建議你再補一個read方法和ioctl把整個字符設備驅(qū)動的骨架填滿后面寫按鍵、寫傳感器驅(qū)動時這套框架能直接復刻。最后提醒一句經(jīng)驗調(diào)試階段固定major241方便看現(xiàn)象但產(chǎn)品代碼里一定要默認走動態(tài)分配。我見過不止一次同事把測試時的固定設備號帶進量產(chǎn)程序結果目標板上那個號早被別的驅(qū)動占走驅(qū)動加載直接失敗排查大半天才反應過來。新版這套流程看著比老版多一些代碼但每一步都可控、可回滾、可定位等你能不看模板把這個鏈路默寫出來字符設備驅(qū)動基本上就入門了。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲女人91| 人妻一区视频| 中文字幕精品人妻丝袜| 国产 热久久久久国产精品| 在线观看啊啊啊啊啊| 色欧美天天| 国产高清成人mv在线观看| 国产精品白丝AV| 超AV色女| 懂色综合久久久| 日韩av不卡在线看| 天天色欧美| 强奸熟女一区二区三区| 精品国产乱码久久久久久久久1| 中文字幕在线观看AV| 涩涩涩综合| 欧美日韩资源| 精品在线78| 久插综合| 亚洲精品欧美专业| 日本久久精品| 十八禁视频网站| 九月丁香综合网| 天天躁日日躁xxxxx| 婷婷在线视频在线观看| 搡老女人老91二区| 亚洲九九视频| 久久内射| 嗯嗯不要 视频| 久久九九久精品国产尤物|国产精品爽黄69天堂A片潘金莲,国产亚洲精品第一综合 | 96精品久久久久久久久久| 99国产精品人妻人伦| 成人片在线播放| 精品视频免费在线一区| 亚洲一级性爱视频免费看| 天堂v无码免费视频| 亚洲欧美校园| 校园春色综合香蕉| 久久水蜜臀亚洲AV无码精品| 婷婷五月天色网| 青青欧美| 97精品网| 人人做天天爱| 日本在线视频导航| 婷婷五月天丁香花| 亚精品无码毛片一区二区三区| 啊啊啊不要好爽日韩无码一区| 亚洲限制级| 亚洲精品国产精品乱码不卡| 曰韩香蕉97| 亚洲中亚日激情视频| 久肏视频字幕| www.亚洲黄色| 婷婷影院入口| 久久国产精品一级二级三级| 大香伊人在线一区| 国产精选视频| 亚洲一级特黄大片在线播放91| 国产一级黄色片在线观看| 久久女婷| 欧美精品双插| 蜜乳视频网站| 91逼逼女人91| 97精品在线| 啊啊啊啊啊啊在线| 激情综合五| 亚洲最大黄网| 中国少妇啪啪视频| 欧美一级美片在线观看免费| 国产一级黄色片在线观看| 91丨九色丨熟女高潮| 日韩啪啪啪啪啪| 欧美后入视频| 人人操人人搞人人草| 日本女人操逼| 东京热av影院| 日韩丝袜二区| 婷婷10月天青娱乐| 中文字幕乱在线伦视频中文字幕乱码在线 | 国产高清成人免费视频| 国产精品电影大全| 无码免费精品高清| 亚洲另类久操网| 精品无码一区二区人妻久久蜜桃| 午夜噜噜噜| 免费日韩黄片| 久久超碰爱| 欧亚日本情色| 欧美黄色片AAAAA| m欧洲一级午老| 免费a v| 操逼操操操91| 一卡二卡在线播放| 你想操日本小逼吗| 欧美熟女妇同| 亚洲第一页第二页激情| 中文字幕高清20页视频| 2017,超碰| 再深点灬舒服灬太大了添视频| 黑丝少妇在线观看| 久久久久久久久久久精| 一区二区视频在线播放| 亚洲日韩东京热一区| 欧美999| 激情一区二区三区在线观看| 97伊人| 女人喷水视频在线观看| 成人天天爽| 1人人看人人摸人人操| 99自拍B亚洲 | 使劲用力艹少妇视频一区二区| 久久久久久精| 日日日啊啊啊| 国产操操日韩三级黄| 日韩影片中文字幕一区二区三区| 精品黄色电影| 中国黑人三级片网站上区| 七月丁香婷婷| 97日视频| 黄片www.| 97伊人| 亚洲中文一区二区三区视频| 少妇熟女视频一二三区| 操逼日韩无码| 91美女片在线| 日本黄页视频在线观看| 牛牛aV| 拍拍拍拍大尺度黄色三级片拍拍拍拍拍照| 一区二区视频在线播放| 99re久久| 校园春色亚洲欧洲| 四虎影视永久在线免费| 青青伊人这里只有精品| 99视频只有精品| 久久香蕉国产线看观看亚洲女人 | 亚洲色资源| 成人在线视频一区| 激情五月天网站| 97人人模人人爽人人| 欧美成人一级麻豆| 亚洲欧洲精品视频发布| 黄色十八禁| 五毛骚逼极品美女怕怕| 日本黄色天堂| 午夜成人爽爽爽爽A片李冰冰| 国产97av| 天天网综合| 日韩精品在线视频在线观看| 九九99精品视频在线观看| 久久久久久久 九九九九九九九| 青青草字幕AV| 日韩精品资源专区二区| 99自拍视频在线| 日本大香蕉| 2017天天插| 国产精品久久久久久无码红治院| 99热精品青草在线| 热热色91| 九九黄色网| 亚洲精品一卡二卡三卡福利视频网站| 四虎免费在线观看| 91操操| 东北女人操比视频| 国产对白刺激视频| 江都AV在线| 久久精品国产97欧美精品亚洲 | 色情亚洲日本成人| 亚洲91网| 欧美色偷拍| 伊人欧美大香蕉视频| 亚洲电影中字一区二区| 蜜桃臀 后入 一区 二区 三区 在线| 玖玖超碰熟| 岛国激情视频软件| 成人一区二区三区四区| 亚洲A曰本VA欧美VA视频| · —级AA伦aa坐爱午夜极速ⅴA一区天天噪天天噪天天噪 | 超碰诱惑| 色色婷| AV色五月| 亚洲女毛多水多21P| 欧美性,色九九| 久久夜夜| 欧美日韩理论一区| 亚洲精品国语在线播放| 神马视频久久久久久| 视频在线97| 7777欧美成是人在线观看| 日韩精品操少妇| 97色伦97色伦国产欧美| 亚洲中文字幕日产无码久久| 福利社区午夜一区二区| 久神马| av无线看| 无码人妻毛片丰满熟妇精品区| 久久这里是精品| 9热9热综合网| 亚洲第一精品在线视频 | 玖玖爱免费观看视频| 欧美大片天天看| 无码 黑人一区二区三区| 九九热五区| 国产精品高潮呻吟av久久4虎| 精品人妻伦一二三区久久| 久久午夜神马| 九九毛片这里只有精品| 久久久久久亚洲Av无码精| 九九热免费国产视频婷婷伊人| 久久久97| 97久久精品亚洲中六字幕| 秋霞网无码| 台湾大香蕉99热| 尤物网址| 亚洲精品欧洲色| 婷婷久草一区二区三区| 男人女人18禁片免费看网站| 欧美 日韩 婷婷 五月| 国产成人精品无码久久| 91制服丝袜| 色五月婷婷在线| 91人人| 亚洲综合113页| 国产精品亚洲一级av第二区| 久久久久深夜无码| 久久久噜噜噜久久人妻| 久久超碰97中文字幕| 91麻豆天美国产欧美| 日韩大香蕉AV影片| 天天综合影院91| 亚洲国产成人福利在线观看| 亚洲第一男人天堂| 久久精品免费| 美国aaaaa一级黄片| 欧美色亚洲色| 日本熟人妻中文字幕在线|...久久国产精品-国产精品_日本一区二区三区中文字幕 | 中文字幕日韩人妻视频| 五毛骚逼极品美女怕怕| 性欧美999| 久久久一二三四区| 天色综合网| 欧美另类综合久久| 日韩成人私密一级精品av| 欧美天天综| 久久性爱大全| 国产女性无套 免费观看| 日本午夜操逼| 无码不卡亚洲成?人片| 97亚洲资源| 久久久久久久国产a∨| 精品久9| 91骚妇| 91久热| 永久免费av无码网站国产app| 国产99999久久精品| 国产原创自拍| 色情五月丁香| 精品黑人一区二区| gogogo免费高清看中国国语| 日骚逼视频| 久久久久9| 亚洲色堂免费视频| 亚洲人妻熟妇三十三区| 欧美日韩中文亚洲v在线综合| 中文字幕丰满人妻日本| 这里都是精品| 久久精品无码熟妇一区二区三区视频导航 | 人人看人人插| 麻豆成人AV| 欧美激情一| 97自拍一区| 少妇99成人麻豆| 日韩啪啪视频| 欧美中出1| 伦伦成年午夜免费视频| 欧美Aⅴ| 凹凸视频在线一区二区| 女生91网站| 欧美三四五区| 最新9久久久9免费视频| 成人老鸭窝人人在线视频| 97天天摸天天碰| 日本高清有码网址视频| 九九久久一区二区伦理| 91人妻素女| 91精品女厕偷拍视频| 国产二区三区免费视频| 啊啊啊好想要| 人妻二区| 少妇综合网| 中文字幕在线免费观看| 三四中文字幕| 97干在线| 亚洲 无码 偷拍| 亚洲综合第一页| 国产精品天堂| 一级做a爰片性色毛片久久| 成人久久久| 97香蕉网| 亚洲国产成人精品999| 精品免费视频国产一区| 日韩欧洲操屄视频| 久久男人精品| 三级三久久线久久99久目本WW| 国产精品探花在线| av片在线观看免费播放| 五月婷婷激情综合| 亚洲国产一区二区三区在线| 婷婷精品国产一区二区三区日韩| 久久久久九九九九九| 婷婷人妻激情| 国产免费黄色一级大片| 亚欧性爱无码| 激情四射五月天| 国产999精品久久久久久| 欧洲综合视频| 久久成人午夜狠狠| 国产强奸乱伦第1页| 黑人猛交| 日本五十路熟女一区二区| 新版天堂中文资源8在线| 欧美亚洲日韩人妻在线观看| 欧美激情内射| 成人性爱视频在线看| 国产综合网站在线播放| 久久五月婷| 少妇蜜汁| 热热色青青草| 久久av无码| 日va操| 欧美国产日韩清纯唯美| 天天天天天超碰| 国产成人无码啪| 日本视频在线观看污污污| www99热| 日本不卡码黄色| 久久一区二区加油站| 在线天堂资源亚洲| 手机在线播放国产福利| 亚洲色吧网| 综合五月天| 亚洲熟女乱色一区二区三区| 全免费a敌肛交毛片免费| 99热| 男人的亚洲天堂| 亚洲高清欧美总合| 93人人操人人| 色五月天AV| 黄色成年| 亚洲最新a在线观看| 嗯嗯啊中文字幕| 午夜精品人妻二区三区| 强被迫伦姧在线观看无码网站| 9999免费精彩视频| 亚av顶级裸体一区二区三区四区五区 | 青青草视频爽一爽| 日韩欧美三级| 2019久久久久久久久福利| 日韩乱码Av| 夜夜嗨TV| 一区二区影院| 亚洲A曰本VA欧美VA视频| 日韩无码精品综合久久| 激情五月天婷婷| av东京热男人的天堂| 91天天综合网| 精品国产少妇高潮视频| 美女天天干| 乱伦av国产| 乱码熟妇人妻久久久| 久艹日日日| 丁香六月综合激情| 欧美日韩妖精91com| 天天操天天干一区二区 | 夜夜骑夜夜操| 韩国久久97| 91久久久久久久| 九九热在线视频| 日日嗷| 97国产高清视频在线观看| 国产超碰在线一区| 国产精品国产亚洲区艳妇糸列| 色色激情五月天| 人人妻天天做天天爽| 在线免费观看日韩一区| 五月天伊人网| 亚洲男人的天堂网| 中文精品一区二去| 久久中日麻豆| av最新免费中文字幕| 操美女人妻| 超碰午夜| 天美传媒AV国产在线| 国产家庭乱伦性爱视频| 99re99视频在线免费观看| 欧美日韩电影成人在线| 97精品国产手机| 日本人妻中文字幕精品| 偷拍五区| 婷婷丁香五月综合| 麻豆亚洲AV成人无码久久精品| 色情综合| 国产色产精品在线观看| 大奶尤物鲍汁淫荡欧美视频粉嫩夜夜骚| 思思热在线视频免费| 综合久欧洲| 国产精品熟女九色九色蜜臀| 亚洲色人| 三级网站超变态精品| 亚洲性爱电影| 天天影视综合色| 九九色色| ji熟女.com| 97视频新免费| 加勒比无码一区二区三区| 久久国产精品m码| 天天综合网国产| 欧美日韩啪啪电影| 9九九国产| 99热这里只有精品8| 黄色无码高清黄色无码网站| 夜夜嗨绯色| 九九色逼| 草草影院最新网址| 国产精品白丝www| 手机av天堂久久久久| 秋霞一级A片黄色视频| 欧美综合传媒| 天天看少妇| 综合五月婷婷亚洲一区| 久久久久久人| 丝袜天堂| 亚洲精品男人的天堂| a片在线播放| 天堂精品| 色好看av| 97色婷婷| 亚洲第一狼人丝袜美女另类| 热热色91| 一二区在线观看视频| 国产精品乱人伊人网| 久久九九视频九九视频| 免费视频一二三区| 后入式五六区| 中文97国产| 天天综合精品| 一个人免费HD91视频| 中文字幕丰满子伦无码专区在线视频最新| AV丝袜少妇| 色欧美天天| 熟女人妇一区二区三区| 碰碰97| 国产成人精品一区| 欧美精品91| 色情五月婷婷| 手机在线观看不卡无码av| 亚洲精品一区二区精华| 蜜臀久久99精品久久久久久婷婷| 亚洲日韩黑丝| 日韩欧美资源| 欧美一二在线| 四虎影视在线| 亚洲老熟妇xxx| 麻豆这里只有精品| 中国zzijzzijzzwww精品| 欧美色999| 青青久久艹| 中出在线视频| 91欧美性| 美女网站黄页| 91女优在线观看| 青春草A| 熟妇人妻一区二区三区| 9久综合网| 五月婷丁香| 婷婷五月天AV| 国产自偷自拍一区| 久久男女激情视频网站| 欧美亚洲涩涩| 亚州再线| 1区2区3区中文字幕日韩| 香一区二区三区| 亚洲色图激情小说| 日本人妻一区二区| 老熟女熟妇| 青青网三级视频| 国产精品对白内射| 天堂九九九九九九九九九| 91粉嫩萝控精品福利网站_精品影音先锋国| 国产真乱mangent| 在线日韩日本亚洲国产| 搡老熟女免费视频 | 亚洲精品美女久久久久久久久| 国产成人精品必看| 亚洲中文一区二区三区| 深夜激情无码| 五月丁香啪啪网| 久久女人一区二区三区| 亚洲……91| 99re不伦| 岛国毛片在线观看免费| 日本孕妇一区二区视频操逼免费看| 国产精品夜夜夜| 中文字幕女同在线| 啊啊啊啊二区好大| 91处女在线视频| 日韩成人人妻网站| 青青久久艹| 2024黄色视频| 成年女人黄网站| 久久久精品成人国产| 99亚洲天堂| 亚洲 欧美 91| 欧美曰韩国产精品| 韩国毛片一区二区三区| 久久久啊啊啊| 欧美高清无码免费视频高清版| 国产高清视频无码在线| 日本三级网页| 久久久999日本大片| 极品少妇99| 国产中文日韩欧美一区二区三区人妻丝袜美腿 | 水澄无码AV| 蜜臀AV一区二区三区激情综合| 欧美高清性猛交| 少妇第一页| 国产一区在线看| 黄色人人| 天天日天天色| 中文字幕、久久精品国产2020、久久综合久久自在自线精品自、亚洲 | 综合熟女| 亚洲情色在线| 奶水 人妻 哺乳 在线| 成年人网站在线免费观看| 上海一级黄片| 不卡超碰护士AV在线免费播放| 久久仑合| 99夜夜操| 免费公开人人操| 亚洲天堂区| 秋霞福利网| 大香蕉中文| 亚洲av影音先锋| 成人五月香网在线| 久久亚州大香蕉| 伊人网免费视频| 69精品人人人人| 久久久111| 97色网| 久久免费精品96| 91色人| 午夜无遮挡男女啪啪视频| 91丨九色丨国产打屁股| 老熟女中文字幕高清| 久热在线精品免费观看| 午夜a成v人电影| 超碰天天去日穴| 国产精品久久久久久久久久久久久久久 | 中国黑人三级片网站上区| 久久久成人免费av电影| 久久久久亚洲av综合波多野制衣| 国产成人资源| 久久免费9| 日韩人妻无码专区| 亚洲图片欧美另类综合免费视频大大香| 黄色免费一级在线毛片| 天天射,天天操,天天爽-国内精品一区二区三区-成人AV | Av手机版天堂网| 男人天堂2019亚洲| 午夜精品久久久久久久第一页按摩| 影音先锋视频在线| 天堂亚洲精品久久老牛| 国产乱伦亚洲| 久久精9| 国产一区二区三区免费视频在性观看| 国产专区路线| 久久亚洲中文字幕视频| 男人天堂站| 国产精品精品系列在线观看| 91大胆欧美| 欧美日韩中文字幕人妻| 综合网欧美在线| 国产综合久久久麻桃个| 成人五月香网在线| 日本黄色精品专区网站| 精品人人插人人操| 亚洲欧美骚| 开心五月激情网| 青草精品视频日本久久久久网站在线| 99久久99久久综合| 色噜噜国产精品视频一区二区| 九九色色| 91啪啪| 乱理日韩中文| 久久久久久电影| 好吊爽好吊爽在线视频,中文字幕精品一区二区日本,国产良妇出轨视频在线观看, | 密臀AV在线| 日韩无码三级影院| 校园春色家庭伦理欧美激情| 欧美一区二区亚洲天堂| 风间由美日韩欧美久久| 天天做天天爽| 国产高清亚洲日韩一区| 久久只有精品一区二区三区| 岛国激情视频软件| 美女上床网站| 天天欧美色| 亚洲欧洲av影音| 亚洲欧美精品久| 亚洲图片 激情小说| 噜噜噜久久亚洲精品色情| 午夜激情成人在线观看| 人妻美腿丝袜日韩| 黄污污污污| 99亚洲精品| 99国内熟女露脸视频| 国产欧美一区激情交| 中文字幕熟女人妻丝袜| 91爱看| 五月丁香激情综合| 色网站导航大全| 97频视在线| 人妻少妇色综合| 久久欲| 天天日天天干天天摸天天操| 爱爱动态120秒| 国产网红精品| 亚洲熟女综合网| 久操大香蕉超碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰碰 | 99热导航| 日韩精品一区的| 麻豆人妻精品一区二区| 不卡中文字幕aⅴ在线| 台湾佬中文娱乐网久久久久久久久久com| 91久久久久久久久18| 精品国产三级av韩国在线| 久草老司机| 亚洲色图 欧美热图 清纯唯美 另类自拍 | 欧美色图综合| 久久久一区二区| 久久精彩视频9| 天天肏夜夜肏| 欧美一区二区三区另类精品| 男人天堂网址| 亚洲综人网| 日韩啪啪啪视频| 天天欧美色| 人妻熟女av国产网站| 国产无码高清操逼视频| 大鸡巴久久| 日本黄页视频在线观看| 天天亚洲综合| 97精彩视频网站| 在线99热| 人人操人人狠狠操| 乱伦日本色图AⅤ| 欧美日韩另类在线播放| 欧美黑人极品高潮喷吹熟女黑人性暴力日韩在线欧美极品一区二区老师黑人潮喷一 | 韩国一级婬片A片AAAAA| 亚洲av无码国产精品字幕| 亚洲精品久久久久久| 嗯嗯啊啊好疼| 大香蕉中文aV在线| 九一屌逼| 天堂蜜桃无码视频一区二区| 柠檬AV导航| 国产 v乱码一区二| 333kkkk·亚洲com久久| 国产女人高潮嗷嗷嗷叫小说| 日B操| 国产中出内射一区二区| 黑人综合网| 欧美日韩传媒| 9久精品| 亚洲欧美人妻| 激情综合网亚洲| 超碰2017| 伊人国产成人av网站| 久久久久久久9| 色欧洲| 亚洲少妇在线观看| 啊啊啊啊啊啊好多水| 性91| 白丝av| 中文乱码字字幕在线第5页| 日本久久超碰| 日本一级真人黄色性爱视频| 中文字幕丰满人妻日本| 国产精品高潮呻吟av久久4虎| 综合伊人激情| 狠狠中文字幕| 色噜噜人妻丝袜a∨先锋影| 福利在线黄片| 六月婷婷五月丁香| 亚洲熟妇乱女区二区三区| 影音综合网| 久久久久亚洲精品| 日本天天干天天日一区| 国产精品另类一区大香蕉| 欧美综合色图网| 在线97视频| 久久无码一区二区二三区性色| 91久久免费视频互動交流| 久热影视| 大伊香蕉在线视频免费| 五月丁香六月激情综合| 澳门成人网站久国产日韩| 女生自91网站| 精品美女久久久久| 伊人超碰97| 国产主播福利| 国产精品女久久久久av爽| 日本3级一区二区免费| 欧美亚洲综合色| 啊啊啊在线观看免费视频| 亚洲宗合网| 九久9精品| 黄人人操人人操| 日韩精品永久在线观看| 97香焦色区| 日韩精品作爱导航| 天天综合青苹果| 欧洲黄色网| 欧美日日夜夜| 中文子幕一二三| 少妇综合网| 强奸乱伦日韩AV| 日韩情色视频| 哑洲在线| 人人干黄色| 啪啪91| 欧美青青视频| 91精品人妻一区二区三区蜜桃| 国产在线观看91精品一区| 日本在线不卡一二区| 97超久碰| 亚洲视频精选| a v网站在线播放| 无码99| 成人草草视频| 久久久亚洲Av| 日本一区二区电影网站| 夜夜高潮夜夜爽国产伦精品| 日韩有码 一区二区三区| 欧美性爱另类综合| 亚洲精品1区| 天天综合91| 超碰公开久久网| 96精品久久久| 亚洲欧美在线观看免费| 天天操女人| 欧美日韩欧美| 国产小u女在线观看| 99re9这里只有精品| 蜜臀99久| 日本午夜久久电影| 精品人妻伦一区二区三区久久| 国产精品久久久久无码Av网曝门| 亚洲色五月| 国产美女91| 波多野42部无码喷潮在线观看 | 1769精品一区二区三区| 欧美综合在线91| 一区在线精品中文字幕| 五月丁香久久| 亚洲成人在线乱码色午夜| 芊芊操逼视频无码| 伊人国产视频| 都市久久精品激情亚洲| 国产一区二区三区不卡手机在线| 日日夜夜骑| 三级三久久线久久99久目本WW| 日韩 女同 综合| 国产高清26uuu| 一区二区三区成人| 日韩欧美成人午夜福利| 美女诱惑在线一区| 午夜AV人气不卡| 91丨九色丨国产丨人妻在线| 久久大香蕉手机高清| 天天做天天爱| 嗯嗯嗯嗯啊啊啊好紧好大| 色欧美亚洲| 久久久久久久久久久97| 天天干人人看综合| n1038 一二三区| 日韩熟女无码| 97看操| 国产日韩区| 人妻少妇精品久久久| 青青久久手机线视频| 色爽——AV| 91人妻Pr| 亚洲丝袜综合| av操操不卡| 亚洲一曲日韩精品| 国产后入清纯| 五月天婷婷基地| 人妻少妇精品| 久久只有精品一区二区三区| 又大又长又粗又爽又黄| 欧美性视频二区三区| 一区二区三区精品久久| 好爽视频在线观看| 抽查国产福利主播| 久久成人午夜精品影院| 白嫩白嫩的午夜九久久久久久久久久久久成人剧场| 日本一本道A级黄色毛片试看60分钟| 亚州精品人妻一二三区| 日本天天色| 97色伦97色伦国产欧美| 色眯眯av| 99免费视频| 老外又粗又长一晚做五次| 久久人妻无码毛片A片麻豆| 色官网在线| 99久久99久久免费精品蜜臀| 黑丝日韩av丝袜av| 青娱乐日韩无码| 中文字幕一区二区视频在线观看| 伊人久久大香线综合无码| AA特级绝黄| 国产精品剧情| 精品人妻无码一区二区三区不卡-精品人妻无码一区二区...|精品少妇一区二区三 | 午夜一区| 综合亚洲欧美精品日韩?v| 男人天堂2019亚洲| 午夜男女爽爽爽影院视频| 黄色片G G G| 99在线免费视频| A级毛片在线看免费| 蜜臀亚洲综合一二三四区| 丁香五月天堂| www.久久制服糖| 97超级久久| 激情综合av| 亚洲天堂区| 青娱乐国产精品| 精品无码久久久久久久久果冻糖心| 青青伊人加勒比海| 91在线欧色| 国模精品娜娜一二三区| 人人看人人插| 色香欲综合| 乱操9999| 亚洲一区二区专区-国产丝袜精品丝袜-成人AV| 欧美啪啪女女| 啪啪视频亚洲第一| 亚洲欧美首页| 91老妇女| 嗯~啊~快点 死我视频免费看网站| 好淫网一二三视区| 99日韩| 免费αⅴ在线观看| av亚欧| 91第一页| 精品国产a∨一区天美传媒| 操一区| 欧美 传媒 麻豆 日韩 偷拍| 色播五月丁香| 国产97色在线| 久久一区二区三区入口| 乱伦a片视频| 欧美精品精品一区二区| 少妇高潮九九九九| 91白虎| 国产2.3.4区| 尤物视频网 刘玥| 欧美成人色| 人人污日韩一区二区| oumeisetu综合| 激情五月天色色| www.色婷婷色综合| 五月天婷精品激情| 91爆操视频| 思思性爱| 亚欧Av| 竹菊影视国产一区二区| 日本一区二区成人在线| 五十路三级片| 51一区二区三区| 黄页视频网站野外| 3028国产精品| 日韩精品1区2区中文字幕| 蜜乳AV一区| 粉嫩粉嫩一区性色AV片| 久久久久免费看少妇A片特黄| 欧美大香蕉久| 色就色综合| 丝袜剧情| 国产大学生高潮在线播放| 手机看av网站在线看| 精品超碰国产| 亚洲色五月| 久久久久久亚洲精品中文字幕人妻| 视频二区美腿丝袜制服人妻欧美 | 18禁无码永久免费无限制| 日欧操屄| 奇米狠999| 91呆哥人妻| 99热综合| 日本一区二区三区欧美日韩中文字幕| 嗯嗯嗯啊啊啊操的我好爽| 亚洲综合影视| 青青三级视频| 欧美,日韩,中文,另类| 最新AV在线| 中文字幕一区二区视频在线观看| 一级片视频啪啪| 亚洲成人在线高清| α√在线| 婷婷五月天av| 人人综合| 九九人妻| 亚洲日韩国产精品| 成 人片 黄色大片| 蜜乳AV色欲AVAV无码| 一二三区在线| 超碰天天久久79| 中文字幕精品亚洲熟女| 91五十路| www亚洲免费| 欧美视频在线视频免费va| 性色一线| 青青伊人加勒比海| 91色宗合| 嗯啊视频免费在线观看| 亚洲国产日韩欧美熟妇在线| 99热免费| 91视频综合在线| 亚洲精品97| 国产小黄片在线免费观看| 国产亚洲欧洲在线观看| 日日日日做夜夜夜夜做无码97| 玖玖久久久| www.av在线视频| 屌逼传媒| 欧美熟女丝袜| 丝袜美腿亚洲| 亚州AV无码国产精品| 九九精品美女高溯喷水 | 78综合网| 超碰在线1234区| 国产资源中文字幕在线| 亚洲国产午夜真人一级片中文字幕精品黄网站| 人妻啊啊人妻啊| 97超碰总站| 老司机福利青青草| 操逼网站地址| 日夜干射色啊| 69精品| 日韩亚洲Av人人夜夜澡人人爽| 丁香五月天婷婷姐| 玖玖爱视频网站| 免费一级黄色录像影片| 久草成人福利导航| 亚洲蜜臀精品视频久久| 日韩激情毛片一级久久久| 99综合视频一体| 色偷偷男人的天堂麻豆| 强被迫伦姧在线观看无码网站| 亚洲精品亚洲人成人网| 亚洲一区二区 麻豆传媒| 久久六六| 亚州国产精品乱| 国产精品高朝久久久久久久| 午夜视频久久久久一区| 韩国久久97| 国产搭汕a级片| 强奸乱伦日韩AV| 久草综合视频| 久操操AV电影| 青青青国产| 日韩啪啪视频| 无码国产精品午夜不卡( | 日欧美色| 超碰午夜| 插入综合网| 91岛国动作片| 中文激情网| 欧美三四五区| 欧美人人AAA| 精品美女人人干| 在线观看无码三级少妇| 欧美激情视频一区二区三区不卡| 国产精品网址| 亚洲天堂东京热| 婷婷六月天| 日本久久综合| 国产精品久久久久久照片| 亚洲人在线成线成人| 精品国产AV一区天美传媒| 亚洲超碰在线| 91爽啪| 色狠狠色| 偷偷人人精品女女久久| 婷婷中文网| 日日日日做夜夜夜夜做无码97| 欧美老妇曰批的视频| 啊操爽品善一区二区三区| 色哟哟AⅤ| 五月婷婷hd| 成人a级高清视频在线观看| 欧美暴力猛交| 亚洲成人免费中文字幕| 成人天天爽| 黄色一级视| 亚洲天堂电影网99999| 五月天激情视频| 九久精品| 欧美综合色站| 狠狠中文字幕| 国产蜜臀在线| 五月丁香啪啪啪| 色图综合网| 精品国产99| 99在线无码精品秘 入口黑人| 国产乱子伦一区二区三区免看| 亚洲精品aa久久伊人| 国产又粗又长又大的视频| 麻豆久久视频在线地址| 五月天我淫我色av| Aa东京男人的天堂| 久热大香蕉| 精品久久久久久中文字幕视频免费| 青青草亚洲一区 | 老女人老91妇女老热女| 日韩黄色一区二区三区| 夜夜欢天天干| 亚洲色性情三级| 国产熟女乱论| 搡老女人老91二区| 色色99| 黑人精品成人一区二区三区| 婷婷爽人人婷婷爽视频| 精品国产72| 色综合色欲色综合色综合色综合| 亚洲男人天堂AV| 绑缚麻绳人妻寝取完整版| 性感女人网页在线观看视频| 中文一区二区| 91GD.COM| 青娱乐淫乱1314| 人妻激情在线视频| 亚洲 日韩 欧美 国产综合体| 国产成人拍国产亚洲精品| 人妻少妇久久| 99这里有精品| 久久久久久国产手机AV| 九九九网站| 美女丝袜激情小说| 天美国产三级传媒| 日韩性爱免费视频在线网站| 超碰在线一区二区三区| 一本久久精品中文字| 久久人妻视频| 国产熟女免费观看久久| 超碰97亚洲| 啊啊啊好疼| 天天综合网91入口| 日韩另类| 在线欧美69V免费观看视频| 花花AV导航| 自拍亚洲综合| 久久久不能久久久久| www久久99| 精品人体无圣光凹凸| 91成人18| 91操熟女视频| 中文一区在线日| 亚州成人a∨| 9999久久久久| 久久久久久国产手机AV| 性色AV蜜色av色欲av| 91色欧美| 精品国产综合久久福利,热99这里有精品综合久久,99热这里只有免费国产精品,精 | 欧美天天谢综合网| 狠狠综合网| 果冻国产精品麻豆成人av| gogogo免费高清看中国国语| 超碰色图| avav青青草久久夜| 九9热伊人| 啊啊啊啊二区好大| 一二三啪啪专区| 日韩中文字幕二区| 探花熟女,姿勢到位,體驗感也到位| 亚洲**2021在线观看| 亚洲图片另类| 猛猛干| 综合网少妇| 欧美色图小说综合| 亚洲蜜臀视频精品久久| 天天天乱色综合全| 中文字幕 一区二区 亚洲无码| 色五月婷婷五月天| 99久在线精品99re8热| 欧美成人一区二区三区在线播放| 国产白嫩漂亮KTV在线| 6080YYY午夜理论片在线观看| 天堂69亚洲精品中文字| 在线午夜成人无码视频| 九九九九精品| 久久久久9999| 百度百度日本操逼| 不卡av免费在线网址| 国产一级高清免费观看| 亚洲超碰97| 国产h小视频在线观看免费| 欧成人精品H无码| 欧美乱欲| 中文一区二区三区影院| yw尤物av无码点击进入麻豆| 日韩一级二级三级在线不卡观看完整| 猛猛干| 日本影视久久免费| 国产精品国产亚洲区艳妇糸列| 午夜男女爽爽大片免费观看| 蜜乳中文字幕a在线| 日日操免费视频| 国产乱伦亚洲| 日本成人电影资源网| 国产女生在线| 99热色精品| 欧州色图区| 日韩超碰精品综合| 国产小炒后入式| 亚洲久久东京热一二三四五区视频| 久久影视二区三区行押| 有码专区最新中文字幕有码| 亚洲欧美伦综合| 成人蜜乳小视频网站| 伊人久久综合影院| 一区三区啪啪| 久久人妻丝袜一区二区三| 丰满少妇一区二区三区四区观看| 欧美狠狠鲁| 91劲爆| 96麻豆精品一区二区三区| 亚洲午夜未满十八勿入网站日本又色又爽又黄 | 国产女人高潮视频| 操穴国产| 骚女高跟AV在线| 亚洲精品国产拍免费91在线| 欧美色偷偷| 再深点灬舒服灬太大了添视频 | 四虎国产精品永久入口| 国产传媒操逼视频| 欧美在线视频99| 国产精品午夜成人福利| 国产精品3| 久久久蜜桃臀无码视频| 国产精品久久久久久久电影渣男| 尤物AV免费网站| 一本一道人妻久久一区二区三区 | 少妇丝袜在线观看AV| 亚洲精品九九九九九九| 精品少妇999| av午夜影院在线播放| 久久人妻办公室视频| 免费看污网址|