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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? tapefslib.c

?? vxworks的完整的源代碼
?? C
?? 第 1 頁 / 共 4 頁
字號(hào):
/* tapeFsLib.c - tape sequential device file system library *//* Copyright 1984-1995 Wind River Systems, Inc. */#include "copyright_wrs.h"/*modification history--------------------01f,21feb99,jdi  doc: listed errnos.01e,06mar97,dds  SPR 8120: fixed tapeFsRead to return the actual number                 of bytes read, 0 if end of file, or ERROR.01d,29oct96,dgp  doc: editing for newly published SCSI libraries01c,08may96,jds  more doc changes01b,01may96,jds  doc changes01a,17jul95,jds  written*//*This library provides basic services for tape devices that do notuse a standard file or directory structure on tape.  The tape volume is treatedmuch like a large file. The tape may either be read or written. However, thereis no high-level organization of the tape into files or directories, which must be provided by a higher-level layer.USING THIS LIBRARYThe various routines provided by the VxWorks tape file system, or tapeFs, canbe categorized into three broad groupings: general initialization,device initialization, and file system operation.The tapeFsInit() routine is the principal general initialization function;it needs to be called only once, regardless of how many tapeFs devicesare used.To initialize devices, tapeFsDevInit() must be called for each tapeFs device.Use of this library typically occurs through standard use of the I/O systemroutines open(), close(), read(), write() and ioctl().  Besides these standard I/O system operations, several routines are provided to inform the file system of changes in the system environment.  The tapeFsVolUnmount() routine informs the file system that a particular device should be unmounted; any synchronization should be done prior to invocation of this routine, in preparation for a tape volume change. The tapeFsReadyChange() routine is used to inform the file system that atape may have been swapped and that the next tape operation should firstremount the tape. Information about a ready-change is also obtained from the driver using the SEQ_DEV device structure. Note that tapeFsVolUnmount() andtapeFsReadyChange() should be called only after a file has been closed.INITIALIZATION OF THE FILE SYSTEMBefore any other routines in tapeFsLib can be used, tapeFsInit() must be called to initialize the library. This implementationof the tape file system assumes only one file descriptor per volume. However,this constraint can be changed in case a future implementation demandsmultiple file descriptors per volume.During the tapeFsInit() call, the tape device library is installed as a driverin the I/O system driver table.  The driver number associated with it isthen placed in a global variable, `tapeFsDrvNum'.To enable this initialization, define INCLUDE_TAPEFS in the BSP, or simply start using the tape file system with a call to tapeFsDevInit() and tapeFsInit() will be called automatically if it has not been called before. DEFINING A TAPE DEVICETo use this library for a particular device, the device structureused by the device driver must contain, as the very first item, asequential device description structure (SEQ_DEV).  The SEQ_DEV must be initialized before calling tapeFsDevInit(). The driver places in the SEQ_DEV structure the addresses of routines that it must supply:  one that reads oneor more blocks, one that writes one or more blocks, one that performsI/O control (ioctl()) on the device, one that writes file marks on a tape, one that rewinds the tape volume, one that reserves a tape device for use,one that releases a tape device after use, one that mounts/unmounts a volume,one that spaces forward or backwards by blocks or file marks, one that erasesthe tape, one that resets the tape device, and one that checks the status of the device.The SEQ_DEV structure also contains fields that describe the physical configuration of the device.  For more information about defining sequentialdevices, see the .I "VxWorks Programmer's Guide: I/O System."INITIALIZATION OF THE DEVICE The tapeFsDevInit() routine is used to associate a device with the tapeFsLibfunctions.  The `volName' parameter expected by tapeFsDevInit() is a pointer toa name string which identifies the device.  This string serves asthe pathname for I/O operations which operate on the device and  appears in the I/O system device table, which can be displayedusing iosDevShow().The `pSeqDev' parameter expected by tapeFsDevInit() is a pointerto the SEQ_DEV structure describing the device and containing theaddresses of the required driver functions.  The `pTapeConfig' parameter is a pointer to a TAPE_CONFIG structure that contains information specifying how the tape device should be configured. The configuration items are fixed/variable block size, rewind/no-rewind device,and number of file marks to be written. For more information about the TAPE_CONFIG structure, look at the header file tapeFsLib.h. The syntax of the tapeFsDevInit() routine is as follows:.CS    tapeFsDevInit	(	char *        volName,     /@ name to be used for volume   @/	SEQ_DEV *     pSeqDev,     /@ pointer to device descriptor @/	TAPE_CONFIG * pTapeConfig  /@ pointer to tape config info  @/	).CEWhen tapeFsLib receives a request from the I/O system, after tapeFsDevInit()has been called, it calls the device driver routines (whose addresses werepassed in the SEQ_DEV structure) to access the device.OPENING AND CLOSING A FILEA tape volume is opened by calling the I/O system routine open(). A file canbe opened only with the O_RDONLY or O_WRONLY flags. The O_RDWR mode is not used by this library. A call toopen() initializes the file descriptor buffer and state information, reservesthe tape device, rewinds the tape device if it was configured as a rewinddevice, and mounts a volume. Once a tape volume has been opened, that tapedevice is reserved, disallowing any other system from accessing that device until the tape volume is closed. Also, the single file descriptor is marked"in use" until the file is closed, making sure that a file descriptor isnot opened multiple times.A tape device is closed by calling the I/O system routine close(). Upon a close() request, any unwrittenbuffers are flushed, the device is rewound (if it is a rewind device), and, finally, the device is released.UNMOUNTING VOLUMES (CHANGING TAPES)A tape volume should be unmounted before it is removed.  When unmounting a volume, make sure that any open file is closed first.A tape may be unmounted by calling tapeFsVolUnmount() directly.If a file is open, it is not correct to change the medium and continue with the same file descriptor still open.Since tapeFs assumes only one file descriptor per device, to reuse that device, the file must be closed and opened later for the new tape volume.Before tapeFsVolUnmount() is called, the device should be synchronized by invoking the ioctl() FIOSYNC or FIOFLUSH. It is the responsibilityof the higher-level layer to synchronize the tape file system before unmounting. Failure to synchronize the volume before unmounting may resultin loss of data.IOCTL FUNCTIONSThe VxWorks tape sequential device file system supports the following ioctl()functions.  The functions listed are defined in the header files ioLib.h and tapeFsLib.h..iP "FIOFLUSH" 16 3Writes all modified file descriptor buffers to the physical device..CS    status = ioctl (fd, FIOFLUSH, 0);.CE.iP "FIOSYNC"Performs the same function as FIOFLUSH..iP "FIOBLKSIZEGET"Returns the value of the block size set on the physical device. This valueis compared against the 'sd_blkSize' value set in the SEQ_DEV device structure..iP "FIOBLKSIZESET"Sets a specified block size value on the physical device and also updates thevalue in the SEQ_DEV and TAPE_VOL_DESC structures, unless the supplied valueis zero, in which case the device structures are updated but the device is not set to zero. This is because zero implies variable block operations,therefore the device block size is ignored..iP "MTIOCTOP"Allows use of the standard UNIX MTIO `ioctl' operationsby means of the MTOP structure. The MTOP structure appears as follows:.CStypedef struct mtop    {    short       mt_op;                  /@ operation @/    int         mt_count;               /@ number of operations @/    } MTOP;.CEUse these ioctl() operations as follows:.CS    MTOP mtop;    mtop.mt_op    = MTWEOF;    mtop.mt_count = 1;    status = ioctl (fd, MTIOCTOP, (int) &mtop);.CE.LPThe permissable values for 'mt_op' are:.iP "MTWEOF"Writes an end-of-file record to tape. An end-of-file record is a file mark..iP "MTFSF"Forward space over a file mark and position the tape head in the gap betweenthe file mark just skipped and the next data block.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTBSF"Backward space over a file mark and position the tape head in the gap preceeding the file mark, that is, right before the file mark.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTFSR"Forward space over a data block and position the tape head in the gap betweenthe block just skipped and the next block.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTBSR"Backward space over a data block and position the tape head right before theblock just skipped.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTREW"Rewind the tape to the beginning of the medium.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTOFFL"Rewind and unload the tape.Any buffered data is flushed out to the tape if the tape is in writemode..iP "MTNOP"No operation, but check the status of the device, thus setting the appropriateSEQ_DEV fields..iP "MTRETEN"Retension the tape. This command usually sets tape tension and can beused in either read or write mode.Any buffered data is flushed out to tape if the tape is in writemode..iP "MTERASE"Erase the entire tape and rewind it..iP "MTEOM"Position the tape at the end of the medium and unload the tape.Any buffered data is flushed out to the tape if the tape is in writemode.INCLUDE FILES: tapeFsLib.hSEE ALSO: ioLib, iosLib,.pG "I/O System, Local File Systems"*/#include "vxWorks.h"#include "ctype.h"#include "ioLib.h"#include "lstLib.h"#include "stdlib.h"#include "string.h"#include "semLib.h"#include "errnoLib.h"#include "logLib.h"#include "tapeFsLib.h"/* GLOBALS */int 	tapeDebug = FALSE;#define TAPE_DEBUG_MSG if (tapeDebug) \		            logMsgint 	tapeFsDrvNum   = NONE;	   /* I/O system driver number for tapeFsLib */					/* default mutex options */int	tapeFsVolMutexOptions    = (SEM_Q_PRIORITY | SEM_DELETE_SAFE);/* forward static functions */LOCAL int	       tapeFsDevRd (TAPE_VOL_DESC * pTapeVol, UINT numBlks, 						char * pBuf, BOOL fixed);LOCAL STATUS	       tapeFsBlkWrt (TAPE_VOL_DESC * pTapeVol, int numBlks, 						char * pBuf, BOOL fixed);LOCAL STATUS	       tapeFsClose (TAPE_FILE_DESC * pTapeFd);LOCAL STATUS	       tapeFsFdFlush (TAPE_FILE_DESC * pTapeFd);LOCAL STATUS	       tapeFsIoctl (TAPE_FILE_DESC * pTapeFd, int function, 								int arg);LOCAL int	       tapeFsRead (TAPE_FILE_DESC * pTapeFd, char * pBuf, 								UINT maxBytes);LOCAL int 	       tapeFsPartWrt (TAPE_FILE_DESC * pTapeFd, char * pBuf, 								int nBytes);LOCAL STATUS	       tapeFsVolCheck (TAPE_VOL_DESC * pTapeVol);LOCAL STATUS	       tapeFsVolMount (TAPE_VOL_DESC * pTapeVol);LOCAL int	       tapeFsWrite (TAPE_FILE_DESC * pTapeFd, char * pBuf,								int maxBytes);LOCAL int 	       tapeFsPartRd (TAPE_FILE_DESC * pTapeFd, char * pBuf, 								UINT nBytes);LOCAL STATUS 	       mtOpHandle (FAST TAPE_FILE_DESC * pTapeFd, int op, 								int numOps);LOCAL TAPE_FILE_DESC * tapeFsOpen (TAPE_VOL_DESC * pTapeVol, char * name, 							int flags, int mode);/********************************************************************************* tapeFsDevRd - read blocks or bytes from a tape volume** This routine reads the specified block or bytes from the specified volume.** RETURNS: Number of bytes or blocks read, 0 if EOF, or error*/LOCAL int tapeFsDevRd    (    FAST TAPE_VOL_DESC * pTapeVol,      /* pointer to volume descriptor      */    UINT                 numDataUnits,  /* how many (blocks | bytes) to read */    FAST char *          pBuf,          /* buffer to receive block           */    BOOL		 fixed	        /* FIXED_BLK or VARIABLE_BLK read    */    )    {    /* Pointer to sequential device struct */        SEQ_DEV	*pSeqDev = pTapeVol->tapevd_pSeqDev;        if (pSeqDev->sd_seqRd == NULL)	{	errno = S_tapeFsLib_SERVICE_NOT_AVAILABLE;	return (ERROR);	}        /* Try to read the data once */    return ((* pSeqDev->sd_seqRd) (pSeqDev, numDataUnits, pBuf, fixed));    }/********************************************************************************* tapeFsBlkWrt - write block(s) to a tape volume** This routine writes the specified blocks to the specified volume.** RETURNS:* OK, or* ERROR, if write error. */LOCAL STATUS tapeFsBlkWrt    (    FAST TAPE_VOL_DESC * pTapeVol,      /* pointer to volume descriptor       */    int                  numDataUnits,  /* how many (blocks | bytes) to write */    char *               pBuf,          /* pointer to buffer to write to tape */    BOOL	         fixed		/* FIXED_BLK or VARIABLE_BLK write    */    )    {    /* Pointer to sequential device struct */    FAST SEQ_DEV	*pSeqDev = pTapeVol->tapevd_pSeqDev;    if (pSeqDev->sd_seqWrt == NULL)	{	errno = S_tapeFsLib_SERVICE_NOT_AVAILABLE;	return (ERROR);	}    /* Try to write the data once */    if (((* pSeqDev->sd_seqWrt) (pSeqDev, numDataUnits, pBuf, fixed)) != OK)        return (ERROR);			    return (OK);    }/********************************************************************************* tapeFsClose - close tape volume** This routine closes the specified tape volume file descriptor.  Any* buffered data for the descriptor is written to the physical device.** If the file descriptor has been marked as obsolete (meaning the* volume was unmounted while the descriptor was open), the descriptor* is freed, but an error is returned.** RETURNS: OK, or ERROR.*/LOCAL STATUS tapeFsClose    (    FAST TAPE_FILE_DESC  *pTapeFd         /* file descriptor pointer */    )    {    FAST STATUS	         status;    /* Pointer to volume descriptor */    FAST TAPE_VOL_DESC * pTapeVol = pTapeFd->tapefd_pTapeVol;    /* Pointer to sequential device */    FAST SEQ_DEV *       pSeqDev  = pTapeVol->tapevd_pSeqDev;    semTake (pTapeVol->tapevd_semId, WAIT_FOREVER); /* get ownership of vol */    /* Write out file descriptor buffer, if WRONLY mode and fixed block */    if ((pTapeFd->tapefd_mode == O_WRONLY) && (pTapeVol->tapevd_blkSize > 0))	{        if (tapeFsFdFlush (pTapeFd) != OK)	    goto closeFailed;	}    /* Rewind if neccessary */    if (pTapeVol->tapevd_rewind)	{	if (pSeqDev->sd_rewind == NULL)	    goto closeFailed;	if ((*(pSeqDev->sd_rewind)) (pSeqDev) != OK)	    goto closeFailed;	}    /* Release the device */    if (pSeqDev->sd_release == NULL)	goto closeFailed;    status = (*(pSeqDev->sd_release)) (pSeqDev);        pTapeFd->tapefd_bufSize = 0;		/* disable buffer        */    pTapeFd->tapefd_inUse   = FALSE;		/* fd not in use anymore */    semGive (pTapeVol->tapevd_semId);		/* release volume        */    free (pTapeFd->tapefd_buffer);		/* free file I/O buffer  */    return (status);closeFailed:    semGive (pTapeVol->tapevd_semId);		/* release volume */    return (ERROR);    }/********************************************************************************* tapeFsDevInit - associate a sequential device with tape volume functions** This routine takes a sequential device created by a device driver and* defines it as a tape file system volume.  As a result, when high-level * I/O operations, such as open() and write(), are performed on the* device, the calls will be routed through tapeFsLib.** This routine associates `volName' with a device and installs it in* the VxWorks I/O system-device table.  The driver number used when* the device is added to the table is that which was assigned to the* tape library during tapeFsInit().  (The driver number is kept in* the global variable `tapeFsDrvNum'.)** The SEQ_DEV structure specified by `pSeqDev' contains configuration* data describing the device and the addresses of the routines which* are called to read blocks, write blocks, write file marks, reset the * device, check device status, perform other I/O control functions (ioctl()),* reserve and release devices, load and unload devices, and rewind devices.* These routines are not called until they are required by subsequent I/O* operations.  The TAPE_CONFIG structure is used to define configuration* parameters for the TAPE_VOL_DESC.  The configuration parameters are defined* and described in tapeFsLib.h.** INTERNAL* The semaphore in the device is given, so the device is available for* use immediately.** RETURNS: A pointer to the volume descriptor (TAPE_VOL_DESC),* or NULL if there is an error.** ERRNO: S_tapeFsLib_NO_SEQ_DEV, S_tapeFsLib_ILLEGAL_TAPE_CONFIG_PARM*/TAPE_VOL_DESC *tapeFsDevInit    (    char *             volName,    	/* volume name                       */    FAST SEQ_DEV *     pSeqDev,    	/* pointer to sequential device info */    FAST TAPE_CONFIG * pTapeConfig	/* pointer to tape config info       */    )    {    FAST TAPE_VOL_DESC * pTapeVol;	/* pointer to new volume descriptor */    /* Initialise the tape file system if it has not been initialised before */    if (tapeFsDrvNum == NONE)	 tapeFsInit ();    /* Return error if no SEQ_DEV */    if (pSeqDev == NULL)	{	errno = S_tapeFsLib_NO_SEQ_DEV;	TAPE_DEBUG_MSG ("tapeFsDevInit: pSeqDev null\n",0,0,0,0,0,0);	return (NULL);	}    /* Check configuration parameters */    if ((pTapeConfig->blkSize < 0) /* XXX || blkSize > some MAX*/)	{	errno = S_tapeFsLib_ILLEGAL_TAPE_CONFIG_PARM;	TAPE_DEBUG_MSG ("tapeFsDevInit: blkSize < 0\n",0,0,0,0,0,0);	return (NULL);	}    if (pTapeConfig->numFileMarks < 0)	{	errno = S_tapeFsLib_ILLEGAL_TAPE_CONFIG_PARM; 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产黄色精品网站| 国产精品夜夜嗨| 在线视频你懂得一区| 亚洲精品伦理在线| 欧美电影影音先锋| 国产高清精品久久久久| 亚洲综合视频在线观看| 日韩亚洲欧美一区二区三区| 国产91精品一区二区麻豆亚洲| 亚洲欧洲日韩一区二区三区| 欧美精品电影在线播放| 精品一区二区三区免费观看| 国产精品国模大尺度视频| 欧美日韩欧美一区二区| 国产在线不卡视频| 一区二区三区国产豹纹内裤在线| 精品国产露脸精彩对白 | 日本不卡中文字幕| 国产亚洲欧美激情| 在线不卡a资源高清| 成人午夜碰碰视频| 日本不卡在线视频| 日韩欧美在线网站| 91电影在线观看| 成人精品免费网站| 美女免费视频一区| 亚洲美女精品一区| 久久精品一区蜜桃臀影院| 欧美三级三级三级爽爽爽| 成人小视频在线观看| 国产一区二区三区免费看| 日本午夜一本久久久综合| 亚洲欧美激情在线| 中文字幕乱码亚洲精品一区| 精品国产成人在线影院| 777奇米四色成人影色区| 欧美伊人精品成人久久综合97| 成人免费看的视频| 国产麻豆精品在线| 国产91精品精华液一区二区三区 | 久久99日本精品| 亚洲一二三级电影| 国产精品久久久久久久久免费丝袜| 精品国产伦一区二区三区免费| 欧美精品久久久久久久久老牛影院| 日本黄色一区二区| 91女神在线视频| 97久久久精品综合88久久| 国内不卡的二区三区中文字幕| 麻豆精品视频在线观看| 奇米色一区二区| 日本不卡视频在线| 国产麻豆精品theporn| 国产综合色精品一区二区三区| 蜜桃av一区二区在线观看 | 1024精品合集| 国产精品色呦呦| 亚洲欧美日韩国产综合在线| 中文字幕亚洲电影| 一区二区三区国产豹纹内裤在线| 亚洲成av人片| 国产在线一区观看| 9人人澡人人爽人人精品| 91成人免费电影| 日韩精品一区二区三区在线 | 日韩精品专区在线影院观看 | 国产精品欧美极品| 一区二区三区中文字幕电影| 五月婷婷色综合| 国产一区二区不卡在线| 色综合天天综合网国产成人综合天| 欧美色涩在线第一页| 欧美mv日韩mv| 中文字幕亚洲一区二区av在线 | 蜜桃久久精品一区二区| 国产69精品久久久久毛片| 91影视在线播放| 精品人在线二区三区| 亚洲三级电影全部在线观看高清| 日韩国产欧美三级| 成人sese在线| 这里只有精品电影| 中文字幕二三区不卡| 亚洲va天堂va国产va久| 欧洲视频一区二区| 日韩一区二区免费在线电影| 亚洲欧洲日产国码二区| 日本欧美大码aⅴ在线播放| 成人少妇影院yyyy| 7777女厕盗摄久久久| 成人免费一区二区三区在线观看| 亚洲bt欧美bt精品777| 丰满少妇久久久久久久| 7777女厕盗摄久久久| 亚洲女同一区二区| 国产精品99久久久久久久vr| 欧美日本韩国一区二区三区视频 | 免费在线看一区| 日本电影亚洲天堂一区| 国产蜜臀97一区二区三区 | 久久99国产精品久久99果冻传媒| 99久久99久久精品免费观看| 久久蜜桃av一区精品变态类天堂| 婷婷开心激情综合| 91浏览器打开| 国产日产欧美精品一区二区三区| 免费高清在线一区| 91成人国产精品| 中文字幕一区二区日韩精品绯色 | 欧美三片在线视频观看| 国产精品乱人伦一区二区| 久久66热re国产| 在线成人免费观看| 亚洲一线二线三线视频| 成人动漫在线一区| 日本一区二区三区国色天香| 精品一区二区影视| 日韩一区二区麻豆国产| 日日摸夜夜添夜夜添国产精品 | 成人黄色在线看| 欧美sm美女调教| 美女视频网站久久| 欧美一区二区三区视频免费| 亚洲午夜视频在线观看| 色综合欧美在线视频区| 中文字幕中文在线不卡住| 国产成人在线电影| 久久伊人中文字幕| 狠狠色丁香婷婷综合| 日韩一级大片在线观看| 日本网站在线观看一区二区三区| 欧美精品久久99久久在免费线 | 丁香啪啪综合成人亚洲小说| 精品处破学生在线二十三| 美女视频黄频大全不卡视频在线播放| 91色.com| 国产成人午夜视频| 久久伊人中文字幕| 婷婷久久综合九色综合绿巨人| 欧美视频一区二区在线观看| 国产成a人亚洲| 成人永久aaa| 成人av网站免费| 成年人午夜久久久| 欧美视频中文一区二区三区在线观看| 91精品在线免费| 亚洲国产中文字幕| 欧美精品一区二| 91蜜桃网址入口| 久色婷婷小香蕉久久| 国产精品久久久久久久久久免费看| 欧美日韩亚洲综合| 国产a视频精品免费观看| 亚洲一区二区三区四区在线免费观看| 精品福利一区二区三区| 一本大道久久a久久精二百| 琪琪久久久久日韩精品| 亚洲品质自拍视频网站| 精品人伦一区二区色婷婷| 在线精品视频免费播放| 国产一区二区三区日韩 | 亚洲成人av在线电影| 国产日韩欧美一区二区三区乱码| 精品视频全国免费看| 成人一区二区三区| 免费美女久久99| 一区二区三区高清不卡| 国产精品网站在线观看| 精品国产自在久精品国产| 欧美在线免费播放| 99精品偷自拍| 国产成人精品免费在线| 麻豆视频一区二区| 洋洋成人永久网站入口| 亚洲国产精品成人综合色在线婷婷| 欧美一级片在线| 欧美最猛性xxxxx直播| 国产成人免费9x9x人网站视频| 蜜臀国产一区二区三区在线播放| 亚洲一区二区三区国产| 亚洲欧美日韩人成在线播放| 久久精品免视看| 久久婷婷国产综合精品青草| 91精品国产乱码| 欧美日韩在线三级| 欧美在线|欧美| 91视频观看视频| av资源网一区| 国产999精品久久久久久绿帽| 久久99久久99| 蜜桃av噜噜一区| 视频一区国产视频| 午夜精品一区二区三区三上悠亚 | 不卡av免费在线观看| 国产成人夜色高潮福利影视| 久久av中文字幕片| 蜜桃视频一区二区三区在线观看 | 欧美性感一类影片在线播放| 北条麻妃国产九九精品视频| 国产99精品在线观看|