精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

學習深入Linux Sysfs編程與源碼分析

運維 系統運維
從源代碼中理解 Linux Sysfs 屬性的用途更多的 Linux Sysfs 屬性的功能只能靠閱讀源代碼來理解。還是以上文提到的 scsi_host 的 scan 屬性來理解,這個功能沒有任何文檔上有描述,因此只能去讀源代碼。

Linux經過長時間的發展,很多用戶都很了解Linux Sysfs了,本人很喜歡Linux Sysfs,下面就這個問題來詳細說說吧。Linux Sysfs 源碼分析和編程實踐。Linux的發行遵守GNU(GNU is Not UNIX)的通用公共許可證,遵循公共版權許可證(GPL,General Public License),秉承“自由的思想,開放的源碼”原則。

從源代碼中理解 Linux Sysfs 屬性的用途更多的 Linux Sysfs 屬性的功能只能靠閱讀源代碼來理解。還是以上文提到的 scsi_host 的 scan 屬性來理解,這個功能沒有任何文檔上有描述,因此只能去讀源代碼。

在內核中, Linux Sysfs屬性一般是由 __ATTR 系列的宏來聲明的,如對設備的使用 DEVICE_ATTR ,對總線使用 BUS_ATTR ,對驅動使用 DRIVER_ATTR ,對類別(class)使用 CLASS_ATTR, 這四個高級的宏來自于 , 都是以更低層的來自 中的 __ATTR/__ATRR_RO 宏實現; 因此我們在內核源碼樹中相應位置 drivers/scsi/ 找到這幾個宏的使用情況,可以得到在 drivers/scsi/scsi_sysfs.c 中:
static ssize_t
store_scan(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count)
struct Scsi_Host *shost = class_to_shost(dev);
int res;
res = scsi_scan(shost, buf);
if (res == 0)
res = count;
return res;
static DEVICE_ATTR(scan, S_IWUSR, NULL, store_scan);

DEVICE_ATTR 宏聲明有四個參數,分別是名稱、權限位、讀函數、寫函數。這里對應的,名稱是 scan, 權限是只有屬主可寫(S_IWUSR)、沒有讀函數、只有寫函數。因此讀寫功能與權限位是對應的,因為 DEVICE_ATTR 把權限位聲明與真正的讀寫是否實現放在了一起,減少了出現不一致的可能。(上文提到 /proc/scsi/scsi 接口的權限位聲明與其功能不對應,這與注冊 proc 接口的函數設計中的不一致是有關系的,權限位聲明與功能實現不在代碼中同一個位置,因此易出錯。雖然修復 /proc/scsi/scsi 的權限位錯誤很容易,但內核團隊中多年來一直沒有人發現或未有人去修正這個 BUG,應該是與 /proc/scsi/ 接口的過時有關,過時的功能會在未來某個內核版本中去除。)

上面的 scan 屬性寫入功能是在 store_scan 函數中實現的,這個接口的四個參數中, buf/count 代表用戶寫入過來的字符串,它把 buf 進一步傳給了 scsi_scan 函數;如果進一步分析 scsi_scan 函數實現可以知道,它期望從 buf 中接受三個或四個整型值(也接受"-"作為通配符),分別代表 host, channel, id 三個值,(第四個整數在早期內核中曾代表 lun 號碼,但在較新內核中第四個數字被忽略,僅作為向后兼容保留接受四個整數),然后對具體的 (host, channel, id) 進行重新掃描以發現這個 SCSI 控制器上的設備變動。

添加 Linux Sysfs 支持

如果你正在開發的設備驅動程序中需要與用戶層的接口,一般可選的方法有:
注冊虛擬的字符設備文件,以這個虛擬設備上的 read/write/ioctl 等接口與用戶交互;但 read/write 一般只能做一件事情, ioctl 可以根據 cmd 參數做多個功能,但其缺點是很明顯的: ioctl 接口無法直接在 Shell 腳本中使用,為了使用 ioctl 的功能,還必須編寫配套的 C語言的虛擬設備操作程序, ioctl 的二進制數據接口也是造成大小端問題 (big endian與little endian)、32位/64位不可移植問題的根源;
注冊 proc 接口,接受用戶的 read/write/ioctl 操作;同樣的,一個 proc 項通常使用其 read/write/ioctl 接口,它所存在的問題與上面的虛擬字符設備的的問題相似;

注冊 Linux Sysfs 屬性;

最重要的是,添加虛擬字符設備支持和注冊 proc 接口支持這兩者所需要增加的代碼量都并不少,***的方法還是使用 Linux Sysfs屬性支持,一切在用戶層是可見的透明,且增加的代碼量是最少的,可維護性也***;方法就是使用 頭文件提供的這四個宏,分別應用于總線/類別/驅動/設備四種內核數據結構對象上:
#define BUS_ATTR(_name, _mode, _show, _store)   \
struct bus_attribute bus_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define CLASS_ATTR(_name, _mode, _show, _store) \
struct class_attribute class_attr_##_name = __ATTR(_name, _mode, _show, _store)
#define DRIVER_ATTR(_name, _mode, _show, _store)\
struct driver_attribute driver_attr_##_name =\
__ATTR(_name, _mode, _show, _store)
#define DEVICE_ATTR(_name, _mode, _show, _store) \
struct device_attribute dev_attr_##_name = __ATTR(_name, _mode, _show, _store)
 
總線(BUS)和類別(CLASS)屬性一般用于新設計的總線和新設計的類別,這兩者一般是不用的;因為你的設備一般是以PCI等成熟的常規方式連接到主機,而不會去新發明一種類型;使用驅動屬性和設備屬性的區別就在于:看你的 Linux Sysfs屬性設計是針對整個驅動有效的還是針對這份驅動所可能支持的每個設備分別有效。

從頭文件中還可以找到 show/store 函數的原型,注意到它和虛擬字符設備或 proc 項的 read/write 的作用很類似,但有一點不同是 show/store 函數上的 buf/count 參數是在Linux Sysfs 層已作了用戶區/內核區的內存復制,虛擬字符設備上常見的 __user 屬性在這里并不需要,因而也不需要多一次 copy_from_user/copy_to_user, 在 show/store 函數參數上的 buf/count 參數已經是內核區的地址,可以直接操作。
上面四種都是 Linux Sysfs 統一設備模型所添加的高級接口,如果使用 Linux Sysfs所提供的底層接口的話,則還有下面兩個,定義來自 :(上面的總線/類別/驅動/設備四個接口都是以這里的__ATTR實現的)
#define __ATTR(_name,_mode,_show,_store) { \
.attr = {.name = __stringify(_name), .mode = _mode },   \
.show   = _show,  \
.store  = _store, \
#define __ATTR_RO(_name) { \
.attr   = { .name = __stringify(_name), .mode = 0444 }, \
.show   = _name##_show,\

上面這些宏都是在注冊總線/類別/驅動/設備時作為缺省屬性而使用的,在實際應用中還有一種情況是根據條件動態添加屬性,如 PCI 設備上的 resource{0,1,2,...} 屬性文件,因為一個 PCI 設備上的可映射資源究竟有多少無法預知,也只能以條件判斷的方式動態添加上。
int __must_check sysfs_create_file(struct kobject *kobj,
const struct attribute *attr);
int __must_check sysfs_create_bin_file(struct kobject *kobj,struct bin_attribute *attr); 
這兩個函數可以對一個 kobject 動態添加上文本屬性或二進制屬性,這也是唯一可以添加二進制屬性的方法。

二進制屬性與普通文本屬性的區別在于二進制屬性 struct bin_attribute 中內嵌一個 struct attribute 結構體對象,因此具有普通屬性的所有功能特征;二進制屬性上多一個 size 用來描述此二進制文件的大小,而普通屬性文件的大小總是 4096, 準確地說,應該是一個內存頁的大小,因為從當前 Linux Sysfs 內核實現來說,它分配一個內存頁面來作為 (buf/count) 的緩沖區;二進制屬性比普通屬性多內存映射(mmap)接口的支持;

編程示例,對 LDD3 一書中的 lddbus 驅動程序的 Linux Sysfs 改進

首先,這個程序本身是針對當時作者寫書的年代的內核(2.6.11)而編寫的,在當前的 Fedora10 系統 (2.6.27.5-117.fc10.i686) 上甚至無法編譯編譯通過;因此首先需要將它移植過來至少達到可運行狀態;附件的壓縮包中含有修改過的 lddbus, sculld 的源代碼和修改過程的四個patch:

***個 0001-ldd3-examples-build-on-fedora-10-2.6.27.5-117.fc10.i.patch 是將 lddbus 和 sculld 移植到 Fedora10 內核上可運行,這其中主要是一此內核 API 的變化;

第二個 0002-port-dmem-proc-entry-to-use-sysfs-entry.patch 演示了怎樣將原有的 proc 接口改進成為 Linux Sysfs 屬性接口的,從這個 patch 中可以看到刪除的代碼多而新增加的代碼少,這說明對于相同的功能,使用 Linux Sysfs 編程接口的代碼量更少,而且 sysfs 代碼看起來也比 proc 更為整潔:打印每個設備的調試信息可以做成每個設備上分別有自己的接口,而不是統一的一個 proc 接口;設備屬性文件最終出現的位置如 "/sys/devices/ldd0/sculld0/dmem"; static ssize_t sculld_show_dmem(struct device *ddev,
struct device_attribute *attr, char *buf)
/* 其中打印每個設備調試信息的代碼復制自原proc接口 */
static DEVICE_ATTR(dmem, S_IRUGO, sculld_show_dmem, NULL);
static int __init sculld_register_dev(struct sculld_dev *dev, int index)
/* 創建此device屬性文件 */
ret |= device_create_file(&dev->ldev.dev, &dev_attr_dmem);

第三個 0003-add-.gitignore.patch 是增加了 .gitignore 文件,屏蔽一些編譯生成的臨時文件;

第四個 0004-port-qset-get-set-ioctl-to-use-sysfs-entry.patch 演示了怎樣把基于 ioctl 的操作接口改進成為基于 Linux Sysfs 接口,由于原來的 ioctl 接口設置和獲取 qset 信息是表示整個驅動模塊級的變量,它用來控制整個驅動程序而非驅動所支持的單個的設備,因此這個 qset 屬性使用 DRIVER_ATTR 來添加更為合適; ssize_t sculld_show_qset(struct device_driver *driver, char *buf)
return snprintf(buf, PAGE_SIZE, "%d\n", sculld_qset);
ssize_t sculld_store_qset(struct device_driver *driver, const char *buf,
size_t count)sculld_qset = simple_strtol(buf, NULL, 0);return count;
/* 聲明一個權限為0644的可同時讀寫的driver屬性 */
static DRIVER_ATTR(qset, S_IRUGO | S_IWUSR, sculld_show_qset, sculld_store_qset);
/* 創建此driver屬性文件 */
result = driver_create_file(&sculld_driver.driver, &driver_attr_qset);
驅動屬性最終出現如 "/sys/bus/ldd/drivers/sculld/qset" ,這里聲明的是同時可讀寫的,權限位 0644 與其保持一致。 6446 0 -rw-r--r-- 1 root root 4096 12月 14 07:44 /sys/bus/ldd/drivers/sculld/qset

【編輯推薦】

  1. 為你分析Linux操作系統和Windows系統
  2. 闡述Linux操作系統安裝與認識支援的硬體
  3. 詳解Linux操作系統中使用Windows分區
  4. Linux技術受風河與NEC垂青
  5. 多樣性的Linux桌面
責任編輯:佚名 來源: CSDN
相關推薦

2009-12-22 13:26:03

Linux sysfs

2009-12-11 09:47:23

Linux內核源碼進程調度

2009-12-11 09:42:54

Linux內核源碼進程調度

2016-10-26 20:49:24

ReactJavascript前端

2024-04-29 09:06:46

線程初始化源碼

2010-01-12 17:55:03

C++程序

2011-06-28 14:11:33

JavaScript

2009-12-22 13:05:15

Linux sysfs

2017-02-28 18:26:09

Linuxinput子系統編程

2023-12-13 10:01:15

數據結構c++編程

2024-10-14 13:30:20

2009-06-16 10:51:14

Java源碼

2010-03-08 14:53:48

Linux分區

2023-03-15 21:46:17

中間件Java網絡編程

2018-10-31 15:54:47

Java線程池源碼

2009-07-03 11:14:57

2009-12-22 12:14:11

Linux內核

2019-07-08 20:00:35

Linux內核模塊

2009-11-30 16:46:29

學習Linux

2016-10-21 13:03:18

androidhandlerlooper
點贊
收藏

51CTO技術棧公眾號

精品国产一区二区精华| 亚洲欧美激情插| 国产成人福利视频| 亚洲精品国产精品乱码在线观看| 欧美片网站免费| 精品高清美女精品国产区| 亚洲 国产 欧美一区| jizz中国少妇| 视频一区二区三区在线| 美乳少妇欧美精品| av黄色在线免费观看| 国产精品久久久久久久久久久久久久久| 亚洲一区二区三区在线| 五月天丁香综合久久国产| 黄色a在线观看| 日本免费在线视频不卡一不卡二| 欧美国产日韩在线| 国产精品一区二区亚洲| 久久久久观看| 欧美一级黄色大片| 黄色高清无遮挡| a级片免费在线观看| 国产精品对白交换视频| 欧美激情论坛| 色哟哟国产精品色哟哟| 激情文学综合插| 国产精品高潮视频| 国产精品21p| 精品白丝av| 久久久精品在线观看| xxx在线播放| 欧美人体视频| 日韩精品一区二区三区视频播放| 日韩中文字幕a| 二吊插入一穴一区二区| 岛国av一区二区| 精品人妻大屁股白浆无码| 免费a级在线播放| 国产欧美精品一区二区三区四区| 精品视频一区二区| 懂色av蜜臀av粉嫩av分享吧| 国产一区二区三区高清播放| 国产精品入口免费视| 无码人妻精品一区二区三区蜜桃91| 亚洲一级二级| 欧美人交a欧美精品| 538任你躁在线精品视频网站| 99久久九九| 日日狠狠久久偷偷四色综合免费| 中文字幕在线观看免费高清| 亚洲宅男一区| 亚洲欧洲偷拍精品| 久久精品视频18| 综合综合综合综合综合网| 精品小视频在线| 欧美 变态 另类 人妖| 久久久久观看| 亚洲人成电影网| 无码人妻精品一区二区中文| 精品国产精品国产偷麻豆| 精品亚洲aⅴ在线观看| a毛片毛片av永久免费| 国产成人久久| 中文字幕精品网| 久草福利资源在线| 亚洲女同中文字幕| 欧美黄色片免费观看| 日韩毛片在线视频| 美女爽到呻吟久久久久| 国产精品久久9| 国产精品无码专区av免费播放| 国产在线视频一区二区| 51成人做爰www免费看网站| 亚洲免费一级片| 99综合电影在线视频| 免费久久久一本精品久久区| 成人在线观看黄色| 亚洲欧美影音先锋| 日本中文字幕在线视频观看| 欧美大电影免费观看| 欧美色图在线观看| 天堂网成人在线| 露出调教综合另类| 尤物yw午夜国产精品视频| 91精品少妇一区二区三区蜜桃臀| 国产一区日韩一区| 日韩av理论片| 国产视频一二三四区| 成人黄页毛片网站| 天堂一区二区三区| 污的网站在线观看| 色综合久久99| 不卡的一区二区| 美女久久99| 久久精品国产99国产精品澳门| 久久久久久久伊人| 热久久国产精品| av观看久久| 国产免费av在线| 亚洲综合精品久久| 欧美精品无码一区二区三区| 国产一区二区三区黄网站| 日韩精品小视频| 69夜色精品国产69乱| 麻豆亚洲精品| 91九色在线免费视频| 韩国三级av在线免费观看| 伊人开心综合网| 天天操天天摸天天爽| 国产精品白丝av嫩草影院| 中文字幕欧美日韩| 久久国产黄色片| 国产剧情一区二区三区| 日本在线一区| 国产调教在线| 日韩一区二区三区观看| 鲁丝一区二区三区| 亚洲美女色禁图| 亚洲自拍偷拍色片视频| 99中文字幕一区| 狠狠做深爱婷婷久久综合一区| 视频免费1区二区三区 | 色综合天天综合色综合av| 制服丝袜中文字幕第一页| 国产影视一区| 奇米4444一区二区三区| 日韩在线视频观看免费| 亚洲人成在线观看一区二区| 中国黄色片免费看| 久操精品在线| 欧美资源在线观看| 欧日韩在线视频| 一区二区三区在线影院| 波多野结衣国产精品| 日本精品三区| 国产精品九九久久久久久久| 蜜桃视频在线入口www| 五月天久久比比资源色| 超碰caoprom| 亚洲网站在线| 国产另类自拍| h片视频在线观看| 欧美精品一区二区三区在线| 丰满少妇高潮久久三区| 国产精品99久久久久久久女警| 一区二区三视频| 日韩欧美三区| 久久影院资源网| 91在线观看免费| 日韩女优一区二区| 国产综合色在线视频区| 一区二区精品在线观看| 九九热这里有精品| 久久精品男人天堂| 国产a级免费视频| 亚洲精品成人天堂一二三| 亚洲成人福利视频| 狠狠综合久久| 精品无码久久久久久久动漫| www.51av欧美视频| 日韩精品在线观看视频| 日本黄色中文字幕| 欧美国产日韩一二三区| 91高清国产视频| 自产国语精品视频| 国产伦精品一区二区三区视频孕妇| 国产99re66在线视频| 亚洲高清一区二| 五月天婷婷激情| 国产精品免费视频观看| 日本55丰满熟妇厨房伦| 999亚洲国产精| 欧美精品一区三区在线观看| 九七电影院97理论片久久tvb| 粗暴蹂躏中文一区二区三区| 免费a视频在线观看| 欧美性少妇18aaaa视频| 亚洲精品国产精品乱码在线观看| 国产91精品免费| 免费观看精品视频| 手机在线电影一区| 成人av资源网| 欧美aa视频| 欧美刺激性大交免费视频| 少妇精品视频一区二区 | 懂色av中文字幕| 《视频一区视频二区| www.美色吧.com| 爽好久久久欧美精品| 亚洲区成人777777精品| 你懂的在线观看一区二区| 国产精品亚洲视频在线观看| 色呦呦在线视频| 国产亚洲日本欧美韩国| 亚洲va久久久噜噜噜无码久久| 色婷婷综合久久久久中文| 99久久婷婷国产综合| 26uuuu精品一区二区| 亚洲综合成人婷婷小说| 久久爱一区二区| 成人性生交大片| 少妇激情一区二区三区| 午夜精品久久久久99热蜜桃导演| 美脚丝袜一区二区三区在线观看| 99综合99| 欧美在线xxx| 色呦呦在线资源| 色婷婷综合久久久久| 丝袜视频国产在线播放| 欧美一区二区三区白人| 日韩熟女一区二区| 午夜视黄欧洲亚洲| 欧美在线视频第一页| 国产日韩欧美高清在线| 精品国产av色一区二区深夜久久| 美女网站在线免费欧美精品| 91九色在线观看视频| 中文字幕一区二区三区久久网站| 神马影院我不卡午夜| jazzjazz国产精品麻豆| 国产有码一区二区| 亚洲精品一级二级| 2025国产精品视频| 俄罗斯一级**毛片在线播放| 色七七影院综合| 国产精品一级伦理| 精品无码久久久久久国产| 亚洲爱情岛论坛永久| 制服丝袜一区二区三区| 中文字幕+乱码+中文乱码www| 色综合天天视频在线观看| 日本少妇裸体做爰| 亚洲成人动漫精品| 久久国产露脸精品国产| 亚洲精选视频在线| 丁香花五月激情| 亚洲日本中文字幕区| 久久噜噜色综合一区二区| 欧美国产激情二区三区| 无码 人妻 在线 视频| 2020国产精品久久精品美国| 亚洲精品中文字幕在线播放| 暴力调教一区二区三区| 国产a级片视频| 成人午夜电影久久影院| 国产无套精品一区二区三区| 国产成人av电影在线观看| 亚洲熟女乱综合一区二区| 丰满白嫩尤物一区二区| 精品人妻二区中文字幕| 成人视屏免费看| 欧美一级一级性生活免费录像| 成人涩涩小片视频日本| 自拍偷拍欧美精品| 青娱乐国产精品| 亚洲亚洲人成综合网络| 国产精品19乱码一区二区三区| 亚洲国产成人av| 国产区一区二区三| 在线区一区二视频| 亚洲一区二区视频在线播放| 在线成人免费视频| 亚洲第一天堂网| 亚洲国产成人久久综合一区| 视频在线观看你懂的| 亚洲欧洲在线视频| 幼a在线观看| 欧美成年人网站| 免费高潮视频95在线观看网站| 欧洲永久精品大片ww免费漫画| 久久久成人av毛片免费观看| 国产欧美精品一区二区三区介绍| 久久综合给合| 国产欧美日韩在线看| 岛国av在线免费| 国产成人免费在线观看| 亚洲天堂美女视频| 国产亚洲综合在线| 欧美日韩午夜视频| 婷婷成人激情在线网| 成人一级免费视频| 欧美一区二区三区视频| 色噜噜在线播放| 在线精品高清中文字幕| 18在线观看的| 国产suv精品一区二区三区88区| 亚洲成人高清| 久久大片网站| 日韩欧美在线中字| 极品粉嫩国产18尤物| 日本欧美加勒比视频| 精产国品一二三区| 久久蜜桃一区二区| 日本a级片视频| 色婷婷一区二区三区四区| 国产成人精品无码高潮| 亚洲欧美色婷婷| 国模私拍视频在线播放| 国产精品大片wwwwww| 2020最新国产精品| 一本久道久久综合| 国产欧美丝祙| 日本中文字幕在线不卡| 国产亚洲污的网站| 国产极品在线播放| 在线不卡a资源高清| 欧美人体大胆444www| 欧美激情在线观看| 久久精品嫩草影院| 六月婷婷久久| 国产一区亚洲| 国产女同无遮挡互慰高潮91| 久久影院午夜论| 国产无码精品视频| 日韩欧美中文字幕制服| 一区二区三区视频网站| 欧美性受xxxx黑人猛交| 粉嫩的18在线观看极品精品| 一区二区三区不卡在线| 麻豆久久精品| 国产伦精品一区二区免费| 亚洲欧洲综合另类| 中文在线观看免费高清| 亚洲欧洲日产国产网站| 岛国在线视频网站| 国产精品免费一区二区三区四区| 99精品电影| 亚洲精品久久久中文字幕| 久久中文字幕电影| 国产又大又黄视频| 亚洲国产欧美一区二区三区久久| 在线免费观看a视频| 91香蕉嫩草影院入口| 水蜜桃精品av一区二区| 人人爽人人av| 久久久久久久久97黄色工厂| 五月婷婷中文字幕| 亚洲精品videossex少妇| 丁香花在线观看完整版电影| 91久久精品www人人做人人爽| 久久久人成影片免费观看| 亚洲美女性囗交| 成人欧美一区二区三区1314| 亚洲一区中文字幕在线| 日韩视频免费在线| 99精品视频在线免费播放| 激情五月五月婷婷| 国产精品自拍网站| 欧美精品99久久久| 精品91自产拍在线观看一区| 免费av不卡在线观看| 精品乱色一区二区中文字幕| 在线一区视频| 精品少妇一区二区三区免费观| 色天天综合久久久久综合片| 国产系列在线观看| 国产精品欧美激情在线播放| 999国产精品999久久久久久| 在线观看中文av| 亚洲第一搞黄网站| 亚洲欧洲综合在线| 日韩免费在线观看视频| 日韩精品免费| 国产一级免费大片| 亚洲一区二区在线观看视频| 色一情一乱一区二区三区| 日本国产高清不卡| 日韩国产欧美一区二区| 国产毛片久久久久久| 亚洲电影一区二区| 青青青草网站免费视频在线观看| 国产91色在线|免| 亚洲91视频| 88av在线播放| 在线观看日韩电影| 黄网址在线观看| 国产自产在线视频一区| 日日夜夜精品视频免费| 四虎永久免费地址| 亚洲高清福利视频| 99re久久| 国产精品12345| 欧美高清在线视频| www.日韩高清| 日本精品视频在线| 这里只有精品在线| 自拍偷拍中文字幕| 在线不卡中文字幕| 欧美裸体视频| 在线日韩av永久免费观看| www.66久久| 一本色道久久综合无码人妻| 久久久久久午夜| 成人女性视频| 9.1在线观看免费| 欧美午夜精品久久久久久超碰| 欧美性猛片xxxxx免费中国| 欧美一进一出视频| 粉嫩久久99精品久久久久久夜| 中文字幕人成人乱码亚洲电影|