亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專(zhuān)輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? open.c

?? 帶中文注釋的Linux+0.11+源代碼
?? C
字號(hào):
/** linux/fs/open.c** (C) 1991 Linus Torvalds*/#include <string.h>		// 字符串頭文件。主要定義了一些有關(guān)字符串操作的嵌入函數(shù)。#include <errno.h>		// 錯(cuò)誤號(hào)頭文件。包含系統(tǒng)中各種出錯(cuò)號(hào)。(Linus 從minix 中引進(jìn)的)。#include <fcntl.h>		// 文件控制頭文件。用于文件及其描述符的操作控制常數(shù)符號(hào)的定義。#include <sys/types.h>		// 類(lèi)型頭文件。定義了基本的系統(tǒng)數(shù)據(jù)類(lèi)型。#include <utime.h>		// 用戶時(shí)間頭文件。定義了訪問(wèn)和修改時(shí)間結(jié)構(gòu)以及utime()原型。#include <sys/stat.h>		// 文件狀態(tài)頭文件。含有文件或文件系統(tǒng)狀態(tài)結(jié)構(gòu)stat{}和常量。#include <linux/sched.h>	// 調(diào)度程序頭文件,定義了任務(wù)結(jié)構(gòu)task_struct、初始任務(wù)0 的數(shù)據(jù),// 還有一些有關(guān)描述符參數(shù)設(shè)置和獲取的嵌入式匯編函數(shù)宏語(yǔ)句。#include <linux/tty.h>		// tty 頭文件,定義了有關(guān)tty_io,串行通信方面的參數(shù)、常數(shù)。#include <linux/kernel.h>	// 內(nèi)核頭文件。含有一些內(nèi)核常用函數(shù)的原形定義。#include <asm/segment.h>	// 段操作頭文件。定義了有關(guān)段寄存器操作的嵌入式匯編函數(shù)。// 取文件系統(tǒng)信息系統(tǒng)調(diào)用函數(shù)。intsys_ustat (int dev, struct ustat *ubuf){  return -ENOSYS;}//// 設(shè)置文件訪問(wèn)和修改時(shí)間。// 參數(shù)filename 是文件名,times 是訪問(wèn)和修改時(shí)間結(jié)構(gòu)指針。// 如果times 指針不為NULL,則取utimbuf 結(jié)構(gòu)中的時(shí)間信息來(lái)設(shè)置文件的訪問(wèn)和修改時(shí)間。如果// times 指針是NULL,則取系統(tǒng)當(dāng)前時(shí)間來(lái)設(shè)置指定文件的訪問(wèn)和修改時(shí)間域。intsys_utime (char *filename, struct utimbuf *times){  struct m_inode *inode;  long actime, modtime;// 根據(jù)文件名尋找對(duì)應(yīng)的i 節(jié)點(diǎn),如果沒(méi)有找到,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -ENOENT;// 如果訪問(wèn)和修改時(shí)間數(shù)據(jù)結(jié)構(gòu)指針不為NULL,則從結(jié)構(gòu)中讀取用戶設(shè)置的時(shí)間值。  if (times)    {      actime = get_fs_long ((unsigned long *) &times->actime);      modtime = get_fs_long ((unsigned long *) &times->modtime);// 否則將訪問(wèn)和修改時(shí)間置為當(dāng)前時(shí)間。    }  else    actime = modtime = CURRENT_TIME;// 修改i 節(jié)點(diǎn)中的訪問(wèn)時(shí)間字段和修改時(shí)間字段。  inode->i_atime = actime;  inode->i_mtime = modtime;// 置i 節(jié)點(diǎn)已修改標(biāo)志,釋放該節(jié)點(diǎn),并返回0。  inode->i_dirt = 1;  iput (inode);  return 0;}/** XXX should we use the real or effective uid? BSD uses the real uid,* so as to make this call useful to setuid programs.*//** 文件屬性XXX,我們?cè)撚谜鎸?shí)用戶id 還是有效用戶id?BSD 系統(tǒng)使用了真實(shí)用戶id,* 以使該調(diào)用可以供setuid 程序使用。(注:POSIX 標(biāo)準(zhǔn)建議使用真實(shí)用戶ID)*///// 檢查對(duì)文件的訪問(wèn)權(quán)限。// 參數(shù)filename 是文件名,mode 是屏蔽碼,由R_OK(4)、W_OK(2)、X_OK(1)和F_OK(0)組成。// 如果請(qǐng)求訪問(wèn)允許的話,則返回0,否則返回出錯(cuò)碼。intsys_access (const char *filename, int mode){  struct m_inode *inode;  int res, i_mode;// 屏蔽碼由低3 位組成,因此清除所有高比特位。  mode &= 0007;// 如果文件名對(duì)應(yīng)的i 節(jié)點(diǎn)不存在,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -EACCES;// 取文件的屬性碼,并釋放該i 節(jié)點(diǎn)。  i_mode = res = inode->i_mode & 0777;  iput (inode);// 如果當(dāng)前進(jìn)程是該文件的宿主,則取文件宿主屬性。  if (current->uid == inode->i_uid)    res >>= 6;// 否則如果當(dāng)前進(jìn)程是與該文件同屬一組,則取文件組屬性。  else if (current->gid == inode->i_gid)    res >>= 6;// 如果文件屬性具有查詢的屬性位,則訪問(wèn)許可,返回0。  if ((res & 0007 & mode) == mode)    return 0;/** XXX we are doing this test last because we really should be* swapping the effective with the real user id (temporarily),* and then calling suser() routine. If we do call the* suser() routine, it needs to be called last.*//** XXX 我們最后才做下面的測(cè)試,因?yàn)槲覀儗?shí)際上需要交換有效用戶id 和* 真實(shí)用戶id(臨時(shí)地),然后才調(diào)用suser()函數(shù)。如果我們確實(shí)要調(diào)用* suser()函數(shù),則需要最后才被調(diào)用。*/// 如果當(dāng)前用戶id 為0(超級(jí)用戶)并且屏蔽碼執(zhí)行位是0 或文件可以被任何人訪問(wèn),則返回0。  if ((!current->uid) && (!(mode & 1) || (i_mode & 0111)))    return 0;// 否則返回出錯(cuò)碼。  return -EACCES;}//// 改變當(dāng)前工作目錄系統(tǒng)調(diào)用函數(shù)。// 參數(shù)filename 是目錄名。// 操作成功則返回0,否則返回出錯(cuò)碼。intsys_chdir (const char *filename){  struct m_inode *inode;// 如果文件名對(duì)應(yīng)的i 節(jié)點(diǎn)不存在,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -ENOENT;// 如果該i 節(jié)點(diǎn)不是目錄的i 節(jié)點(diǎn),則釋放該節(jié)點(diǎn),返回出錯(cuò)碼。  if (!S_ISDIR (inode->i_mode))    {      iput (inode);      return -ENOTDIR;    }// 釋放當(dāng)前進(jìn)程原工作目錄i 節(jié)點(diǎn),并指向該新置的工作目錄i 節(jié)點(diǎn)。返回0。  iput (current->pwd);  current->pwd = inode;  return (0);}//// 改變根目錄系統(tǒng)調(diào)用函數(shù)。// 將指定的路徑名改為根目錄'/'。// 如果操作成功則返回0,否則返回出錯(cuò)碼。intsys_chroot (const char *filename){  struct m_inode *inode;// 如果文件名對(duì)應(yīng)的i 節(jié)點(diǎn)不存在,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -ENOENT;// 如果該i 節(jié)點(diǎn)不是目錄的i 節(jié)點(diǎn),則釋放該節(jié)點(diǎn),返回出錯(cuò)碼。  if (!S_ISDIR (inode->i_mode))    {      iput (inode);      return -ENOTDIR;    }// 釋放當(dāng)前進(jìn)程的根目錄i 節(jié)點(diǎn),并重置為這里指定目錄名的i 節(jié)點(diǎn),返回0。  iput (current->root);  current->root = inode;  return (0);}//// 修改文件屬性系統(tǒng)調(diào)用函數(shù)。// 參數(shù)filename 是文件名,mode 是新的文件屬性。// 若操作成功則返回0,否則返回出錯(cuò)碼。intsys_chmod (const char *filename, int mode){  struct m_inode *inode;// 如果文件名對(duì)應(yīng)的i 節(jié)點(diǎn)不存在,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -ENOENT;// 如果當(dāng)前進(jìn)程的有效用戶id 不等于文件i 節(jié)點(diǎn)的用戶id,并且當(dāng)前進(jìn)程不是超級(jí)用戶,則釋放該// 文件i 節(jié)點(diǎn),返回出錯(cuò)碼。  if ((current->euid != inode->i_uid) && !suser ())    {      iput (inode);      return -EACCES;    }// 重新設(shè)置i 節(jié)點(diǎn)的文件屬性,并置該i 節(jié)點(diǎn)已修改標(biāo)志。釋放該i 節(jié)點(diǎn),返回0。  inode->i_mode = (mode & 07777) | (inode->i_mode & ~07777);  inode->i_dirt = 1;  iput (inode);  return 0;}//// 修改文件宿主系統(tǒng)調(diào)用函數(shù)。// 參數(shù)filename 是文件名,uid 是用戶標(biāo)識(shí)符(用戶id),gid 是組id。// 若操作成功則返回0,否則返回出錯(cuò)碼。intsys_chown (const char *filename, int uid, int gid){  struct m_inode *inode;// 如果文件名對(duì)應(yīng)的i 節(jié)點(diǎn)不存在,則返回出錯(cuò)碼。  if (!(inode = namei (filename)))    return -ENOENT;// 若當(dāng)前進(jìn)程不是超級(jí)用戶,則釋放該i 節(jié)點(diǎn),返回出錯(cuò)碼。  if (!suser ())    {      iput (inode);      return -EACCES;    }// 設(shè)置文件對(duì)應(yīng)i 節(jié)點(diǎn)的用戶id 和組id,并置i 節(jié)點(diǎn)已經(jīng)修改標(biāo)志,釋放該i 節(jié)點(diǎn),返回0。  inode->i_uid = uid;  inode->i_gid = gid;  inode->i_dirt = 1;  iput (inode);  return 0;}//// 打開(kāi)(或創(chuàng)建)文件系統(tǒng)調(diào)用函數(shù)。// 參數(shù)filename 是文件名,flag 是打開(kāi)文件標(biāo)志:只讀O_RDONLY、只寫(xiě)O_WRONLY 或讀寫(xiě)O_RDWR,// 以及O_CREAT、O_EXCL、O_APPEND 等其它一些標(biāo)志的組合,若本函數(shù)創(chuàng)建了一個(gè)新文件,則mode// 用于指定使用文件的許可屬性,這些屬性有S_IRWXU(文件宿主具有讀、寫(xiě)和執(zhí)行權(quán)限)、S_IRUSR// (用戶具有讀文件權(quán)限)、S_IRWXG(組成員具有讀、寫(xiě)和執(zhí)行權(quán)限)等等。對(duì)于新創(chuàng)建的文件,這些// 屬性只應(yīng)用于將來(lái)對(duì)文件的訪問(wèn),創(chuàng)建了只讀文件的打開(kāi)調(diào)用也將返回一個(gè)可讀寫(xiě)的文件句柄。// 若操作成功則返回文件句柄(文件描述符),否則返回出錯(cuò)碼。(參見(jiàn)sys/stat.h, fcntl.h)intsys_open (const char *filename, int flag, int mode){  struct m_inode *inode;  struct file *f;  int i, fd;// 將用戶設(shè)置的模式與進(jìn)程的模式屏蔽碼相與,產(chǎn)生許可的文件模式。  mode &= 0777 & ~current->umask;// 搜索進(jìn)程結(jié)構(gòu)中文件結(jié)構(gòu)指針數(shù)組,查找一個(gè)空閑項(xiàng),若已經(jīng)沒(méi)有空閑項(xiàng),則返回出錯(cuò)碼。  for (fd = 0; fd < NR_OPEN; fd++)    if (!current->filp[fd])      break;  if (fd >= NR_OPEN)    return -EINVAL;// 設(shè)置執(zhí)行時(shí)關(guān)閉文件句柄位圖,復(fù)位對(duì)應(yīng)比特位。  current->close_on_exec &= ~(1 << fd);// 令f 指向文件表數(shù)組開(kāi)始處。搜索空閑文件結(jié)構(gòu)項(xiàng)(句柄引用計(jì)數(shù)為0 的項(xiàng)),若已經(jīng)沒(méi)有空閑// 文件表結(jié)構(gòu)項(xiàng),則返回出錯(cuò)碼。  f = 0 + file_table;  for (i = 0; i < NR_FILE; i++, f++)    if (!f->f_count)      break;  if (i >= NR_FILE)    return -EINVAL;// 讓進(jìn)程的對(duì)應(yīng)文件句柄的文件結(jié)構(gòu)指針指向搜索到的文件結(jié)構(gòu),并令句柄引用計(jì)數(shù)遞增1。  (current->filp[fd] = f)->f_count++;// 調(diào)用函數(shù)執(zhí)行打開(kāi)操作,若返回值小于0,則說(shuō)明出錯(cuò),釋放剛申請(qǐng)到的文件結(jié)構(gòu),返回出錯(cuò)碼。  if ((i = open_namei (filename, flag, mode, &inode)) < 0)    {      current->filp[fd] = NULL;      f->f_count = 0;      return i;    }/* ttys are somewhat special (ttyxx major==4, tty major==5) *//* ttys 有些特殊(ttyxx 主號(hào)==4,tty 主號(hào)==5)*/// 如果是字符設(shè)備文件,那么如果設(shè)備號(hào)是4 的話,則設(shè)置當(dāng)前進(jìn)程的tty 號(hào)為該i 節(jié)點(diǎn)的子設(shè)備號(hào)。// 并設(shè)置當(dāng)前進(jìn)程tty 對(duì)應(yīng)的tty 表項(xiàng)的父進(jìn)程組號(hào)等于進(jìn)程的父進(jìn)程組號(hào)。  if (S_ISCHR (inode->i_mode))    if (MAJOR (inode->i_zone[0]) == 4)      {	if (current->leader && current->tty < 0)	  {	    current->tty = MINOR (inode->i_zone[0]);	    tty_table[current->tty].pgrp = current->pgrp;	  }// 否則如果該字符文件設(shè)備號(hào)是5 的話,若當(dāng)前進(jìn)程沒(méi)有tty,則說(shuō)明出錯(cuò),釋放i 節(jié)點(diǎn)和申請(qǐng)到的// 文件結(jié)構(gòu),返回出錯(cuò)碼。      }    else if (MAJOR (inode->i_zone[0]) == 5)      if (current->tty < 0)	{	  iput (inode);	  current->filp[fd] = NULL;	  f->f_count = 0;	  return -EPERM;	}/* Likewise with block-devices: check for floppy_change *//* 同樣對(duì)于塊設(shè)備文件:需要檢查盤(pán)片是否被更換 */// 如果打開(kāi)的是塊設(shè)備文件,則檢查盤(pán)片是否更換,若更換則需要是高速緩沖中對(duì)應(yīng)該設(shè)備的所有// 緩沖塊失效。  if (S_ISBLK (inode->i_mode))    check_disk_change (inode->i_zone[0]);// 初始化文件結(jié)構(gòu)。置文件結(jié)構(gòu)屬性和標(biāo)志,置句柄引用計(jì)數(shù)為1,設(shè)置i 節(jié)點(diǎn)字段,文件讀寫(xiě)指針// 初始化為0。返回文件句柄。  f->f_mode = inode->i_mode;  f->f_flags = flag;  f->f_count = 1;  f->f_inode = inode;  f->f_pos = 0;  return (fd);}//// 創(chuàng)建文件系統(tǒng)調(diào)用函數(shù)。// 參數(shù)pathname 是路徑名,mode 與上面的sys_open()函數(shù)相同。// 成功則返回文件句柄,否則返回出錯(cuò)碼。intsys_creat (const char *pathname, int mode){  return sys_open (pathname, O_CREAT | O_TRUNC, mode);}// 關(guān)閉文件系統(tǒng)調(diào)用函數(shù)。// 參數(shù)fd 是文件句柄。// 成功則返回0,否則返回出錯(cuò)碼。intsys_close (unsigned int fd){  struct file *filp;// 若文件句柄值大于程序同時(shí)能打開(kāi)的文件數(shù),則返回出錯(cuò)碼。  if (fd >= NR_OPEN)    return -EINVAL;// 復(fù)位進(jìn)程的執(zhí)行時(shí)關(guān)閉文件句柄位圖對(duì)應(yīng)位。  current->close_on_exec &= ~(1 << fd);// 若該文件句柄對(duì)應(yīng)的文件結(jié)構(gòu)指針是NULL,則返回出錯(cuò)碼。  if (!(filp = current->filp[fd]))    return -EINVAL;// 置該文件句柄的文件結(jié)構(gòu)指針為NULL。  current->filp[fd] = NULL;// 若在關(guān)閉文件之前,對(duì)應(yīng)文件結(jié)構(gòu)中的句柄引用計(jì)數(shù)已經(jīng)為0,則說(shuō)明內(nèi)核出錯(cuò),死機(jī)。  if (filp->f_count == 0)    panic ("Close: file count is 0");// 否則將對(duì)應(yīng)文件結(jié)構(gòu)的句柄引用計(jì)數(shù)減1,如果還不為0,則返回0(成功)。若已等于0,說(shuō)明該// 文件已經(jīng)沒(méi)有句柄引用,則釋放該文件i 節(jié)點(diǎn),返回0。  if (--filp->f_count)    return (0);  iput (filp->f_inode);  return (0);}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品久久久久久久久晋中| 一区二区三区日韩欧美| 亚洲一区在线观看视频| 欧美久久久久久久久中文字幕| 日日夜夜免费精品视频| 日韩欧美亚洲国产精品字幕久久久| 狠狠色丁香婷婷综合| 日韩一级片网址| 99久久婷婷国产综合精品电影| 亚洲自拍偷拍图区| 欧美不卡视频一区| 国产黄人亚洲片| 亚洲图片有声小说| 久久久亚洲午夜电影| 91国偷自产一区二区三区成为亚洲经典| 日日欢夜夜爽一区| 国产人妖乱国产精品人妖| 欧美亚日韩国产aⅴ精品中极品| 国产在线视视频有精品| 亚洲自拍另类综合| 国产精品成人免费精品自在线观看| 欧美日韩综合不卡| 91免费在线播放| 岛国精品一区二区| 日韩福利视频导航| 亚洲最快最全在线视频| 日韩理论片一区二区| 欧美韩国日本不卡| 久久你懂得1024| 日韩午夜在线观看视频| 欧美日韩国产片| 欧美三级资源在线| 91色综合久久久久婷婷| 成人黄色777网| 韩日欧美一区二区三区| 美女网站在线免费欧美精品| 丝袜亚洲精品中文字幕一区| 香蕉影视欧美成人| 日韩精品电影在线观看| 久久国产尿小便嘘嘘| 久久黄色级2电影| 国产在线精品免费| 中文无字幕一区二区三区| 99久久久国产精品免费蜜臀| 另类欧美日韩国产在线| 亚洲午夜在线电影| 国产精品国产a级| 亚洲国产精品精华液ab| 中文字幕欧美激情一区| 久久综合成人精品亚洲另类欧美 | 91猫先生在线| 成人激情图片网| 国产黄色精品视频| 国产成人在线影院| 成人一级片网址| 成人毛片在线观看| 国产成人精品一区二区三区四区 | 色综合天天综合网天天狠天天| 国产乱一区二区| 亚洲www啪成人一区二区麻豆| 亚洲国产欧美在线| 性欧美大战久久久久久久久| 奇米888四色在线精品| 精品综合免费视频观看| 国产一区二区伦理| 99精品久久只有精品| 欧美综合在线视频| 91精品国产福利| 国产女主播视频一区二区| 国产精品理论在线观看| 亚洲一区二区三区激情| 美女在线一区二区| 色综合色综合色综合色综合色综合 | 捆绑调教一区二区三区| 成人午夜免费av| 欧美一级艳片视频免费观看| 亚洲精品中文字幕乱码三区| 韩国视频一区二区| 日韩精品一区二区三区四区视频| 亚洲天堂2016| 成人美女视频在线观看| 国产亚洲一区二区三区在线观看| 日本成人超碰在线观看| 在线观看一区不卡| 中文字幕精品三区| 91女人视频在线观看| 亚洲欧美日韩在线| 欧美体内she精高潮| 欧美成人三级在线| 欧美午夜在线观看| 中文字幕成人在线观看| 亚洲风情在线资源站| 99精品久久只有精品| 国产精品三级av| 国产成人精品aa毛片| 国产亚洲女人久久久久毛片| 日日夜夜精品视频免费| 99国产精品国产精品毛片| 欧美mv日韩mv国产网站| 性做久久久久久久免费看| 99视频在线观看一区三区| 国产欧美视频在线观看| 日韩成人伦理电影在线观看| 欧美在线综合视频| 一区二区三区鲁丝不卡| av午夜精品一区二区三区| 精品久久久久久久久久久久包黑料| 亚洲v精品v日韩v欧美v专区| 久久精品国产亚洲一区二区三区| 欧美日韩精品一区视频| 一区二区国产视频| 欧美艳星brazzers| 日韩av午夜在线观看| 欧美久久一二三四区| 国产一区二区三区免费观看| 中文字幕中文字幕一区二区| 97精品电影院| 亚洲福利电影网| 日韩免费成人网| 国内久久精品视频| 日本一区二区综合亚洲| 97成人超碰视| 舔着乳尖日韩一区| 久久这里只有精品6| 韩国欧美国产1区| 国产精品传媒入口麻豆| 欧美日韩一区二区三区在线看| 丝袜美腿亚洲综合| 国产亚洲精品久| 在线观看日韩av先锋影音电影院| 日韩电影在线观看电影| 中文乱码免费一区二区| 欧美xxxx在线观看| 欧美性受xxxx| 国产成人精品三级麻豆| 午夜在线成人av| 国产精品视频免费| 91精品国产入口| 欧美在线一区二区三区| 丁香五精品蜜臀久久久久99网站| 亚洲综合另类小说| 中文字幕一区二区三区不卡| 欧美一区二区三区视频免费播放 | 91精品欧美综合在线观看最新| 福利一区二区在线| 日韩电影免费一区| 亚洲一级二级三级在线免费观看| 国产午夜亚洲精品理论片色戒| 成人av网站免费观看| 懂色av中文一区二区三区| 国精产品一区一区三区mba视频| 日本欧美一区二区三区| 亚洲综合色自拍一区| 国产精品人成在线观看免费| 精品国产在天天线2019| 日韩午夜精品视频| 欧美一三区三区四区免费在线看| 在线精品亚洲一区二区不卡| 97久久精品人人爽人人爽蜜臀| 成人av综合一区| 91视频免费观看| 91色porny| 欧美色综合影院| 日韩视频在线永久播放| 色欧美片视频在线观看| 91免费在线播放| 91偷拍与自偷拍精品| 欧美综合亚洲图片综合区| 99视频一区二区| 欧美电影精品一区二区| 亚洲私人影院在线观看| 亚洲国产成人av好男人在线观看| 亚洲成人av在线电影| 国产裸体歌舞团一区二区| 成人福利在线看| 在线不卡一区二区| 中文字幕av一区二区三区高| 国产欧美一区二区精品忘忧草| 国产精品你懂的在线| 亚洲国产一区视频| 婷婷综合五月天| 成人手机电影网| 7777精品伊人久久久大香线蕉的 | 国产精品一区二区黑丝| 欧美日韩你懂的| 国产亚洲精品资源在线26u| 亚洲成人免费电影| 狠狠久久亚洲欧美| 欧美乱妇15p| 亚洲精品v日韩精品| 精品在线观看免费| 精品视频一区三区九区| 久久综合九色综合97_久久久 | 国产一区二区剧情av在线| 在线观看网站黄不卡| 久久综合999| 免费精品视频在线| 欧美日韩精品一区二区三区 | 风间由美一区二区三区在线观看| 精品视频在线免费|