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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? block-raw-posix.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 2 頁
字號:
    }}static int raw_truncate(BlockDriverState *bs, int64_t offset){    BDRVRawState *s = bs->opaque;    if (s->type != FTYPE_FILE)        return -ENOTSUP;    if (ftruncate(s->fd, offset) < 0)        return -errno;    return 0;}static int64_t  raw_getlength(BlockDriverState *bs){    BDRVRawState *s = bs->opaque;    int fd = s->fd;    int64_t size;#ifdef _BSD    struct stat sb;#endif#ifdef __sun__    struct dk_minfo minfo;    int rv;#endif    int ret;    ret = fd_open(bs);    if (ret < 0)        return ret;#ifdef _BSD    if (!fstat(fd, &sb) && (S_IFCHR & sb.st_mode)) {#ifdef DIOCGMEDIASIZE	if (ioctl(fd, DIOCGMEDIASIZE, (off_t *)&size))#endif#ifdef CONFIG_COCOA        size = LONG_LONG_MAX;#else        size = lseek(fd, 0LL, SEEK_END);#endif    } else#endif#ifdef __sun__    /*     * use the DKIOCGMEDIAINFO ioctl to read the size.     */    rv = ioctl ( fd, DKIOCGMEDIAINFO, &minfo );    if ( rv != -1 ) {        size = minfo.dki_lbsize * minfo.dki_capacity;    } else /* there are reports that lseek on some devices              fails, but irc discussion said that contingency              on contingency was overkill */#endif    {        size = lseek(fd, 0, SEEK_END);    }    return size;}static int raw_create(const char *filename, int64_t total_size,                      const char *backing_file, int flags){    int fd;    if (flags || backing_file)        return -ENOTSUP;    fd = open(filename, O_WRONLY | O_CREAT | O_TRUNC | O_BINARY,              0644);    if (fd < 0)        return -EIO;    ftruncate(fd, total_size * 512);    close(fd);    return 0;}static void raw_flush(BlockDriverState *bs){    BDRVRawState *s = bs->opaque;    fsync(s->fd);}BlockDriver bdrv_raw = {    "raw",    sizeof(BDRVRawState),    NULL, /* no probe for protocols */    raw_open,    NULL,    NULL,    raw_close,    raw_create,    raw_flush,    .bdrv_aio_read = raw_aio_read,    .bdrv_aio_write = raw_aio_write,    .bdrv_aio_cancel = raw_aio_cancel,    .aiocb_size = sizeof(RawAIOCB),    .protocol_name = "file",    .bdrv_pread = raw_pread,    .bdrv_pwrite = raw_pwrite,    .bdrv_truncate = raw_truncate,    .bdrv_getlength = raw_getlength,};/***********************************************//* host device */#ifdef CONFIG_COCOAstatic kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator );static kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize );kern_return_t FindEjectableCDMedia( io_iterator_t *mediaIterator ){    kern_return_t       kernResult;    mach_port_t     masterPort;    CFMutableDictionaryRef  classesToMatch;    kernResult = IOMasterPort( MACH_PORT_NULL, &masterPort );    if ( KERN_SUCCESS != kernResult ) {        printf( "IOMasterPort returned %d\n", kernResult );    }    classesToMatch = IOServiceMatching( kIOCDMediaClass );    if ( classesToMatch == NULL ) {        printf( "IOServiceMatching returned a NULL dictionary.\n" );    } else {    CFDictionarySetValue( classesToMatch, CFSTR( kIOMediaEjectableKey ), kCFBooleanTrue );    }    kernResult = IOServiceGetMatchingServices( masterPort, classesToMatch, mediaIterator );    if ( KERN_SUCCESS != kernResult )    {        printf( "IOServiceGetMatchingServices returned %d\n", kernResult );    }    return kernResult;}kern_return_t GetBSDPath( io_iterator_t mediaIterator, char *bsdPath, CFIndex maxPathSize ){    io_object_t     nextMedia;    kern_return_t   kernResult = KERN_FAILURE;    *bsdPath = '\0';    nextMedia = IOIteratorNext( mediaIterator );    if ( nextMedia )    {        CFTypeRef   bsdPathAsCFString;    bsdPathAsCFString = IORegistryEntryCreateCFProperty( nextMedia, CFSTR( kIOBSDNameKey ), kCFAllocatorDefault, 0 );        if ( bsdPathAsCFString ) {            size_t devPathLength;            strcpy( bsdPath, _PATH_DEV );            strcat( bsdPath, "r" );            devPathLength = strlen( bsdPath );            if ( CFStringGetCString( bsdPathAsCFString, bsdPath + devPathLength, maxPathSize - devPathLength, kCFStringEncodingASCII ) ) {                kernResult = KERN_SUCCESS;            }            CFRelease( bsdPathAsCFString );        }        IOObjectRelease( nextMedia );    }    return kernResult;}#endifstatic int hdev_open(BlockDriverState *bs, const char *filename, int flags){    BDRVRawState *s = bs->opaque;    int fd, open_flags, ret;#ifdef CONFIG_COCOA    if (strstart(filename, "/dev/cdrom", NULL)) {        kern_return_t kernResult;        io_iterator_t mediaIterator;        char bsdPath[ MAXPATHLEN ];        int fd;        kernResult = FindEjectableCDMedia( &mediaIterator );        kernResult = GetBSDPath( mediaIterator, bsdPath, sizeof( bsdPath ) );        if ( bsdPath[ 0 ] != '\0' ) {            strcat(bsdPath,"s0");            /* some CDs don't have a partition 0 */            fd = open(bsdPath, O_RDONLY | O_BINARY | O_LARGEFILE);            if (fd < 0) {                bsdPath[strlen(bsdPath)-1] = '1';            } else {                close(fd);            }            filename = bsdPath;        }        if ( mediaIterator )            IOObjectRelease( mediaIterator );    }#endif    open_flags = O_BINARY;    if ((flags & BDRV_O_ACCESS) == O_RDWR) {        open_flags |= O_RDWR;    } else {        open_flags |= O_RDONLY;        bs->read_only = 1;    }#ifdef O_DIRECT    if (flags & BDRV_O_DIRECT)        open_flags |= O_DIRECT;#endif    s->type = FTYPE_FILE;#if defined(__linux__)    if (strstart(filename, "/dev/cd", NULL)) {        /* open will not fail even if no CD is inserted */        open_flags |= O_NONBLOCK;        s->type = FTYPE_CD;    } else if (strstart(filename, "/dev/fd", NULL)) {        s->type = FTYPE_FD;        s->fd_open_flags = open_flags;        /* open will not fail even if no floppy is inserted */        open_flags |= O_NONBLOCK;    } else if (strstart(filename, "/dev/sg", NULL)) {        bs->sg = 1;    }#endif    fd = open(filename, open_flags, 0644);    if (fd < 0) {        ret = -errno;        if (ret == -EROFS)            ret = -EACCES;        return ret;    }    s->fd = fd;#if defined(__linux__)    /* close fd so that we can reopen it as needed */    if (s->type == FTYPE_FD) {        close(s->fd);        s->fd = -1;        s->fd_media_changed = 1;    }#endif    return 0;}#if defined(__linux__) && !defined(QEMU_IMG)/* Note: we do not have a reliable method to detect if the floppy is   present. The current method is to try to open the floppy at every   I/O and to keep it opened during a few hundreds of ms. */static int fd_open(BlockDriverState *bs){    BDRVRawState *s = bs->opaque;    int last_media_present;    if (s->type != FTYPE_FD)        return 0;    last_media_present = (s->fd >= 0);    if (s->fd >= 0 &&        (qemu_get_clock(rt_clock) - s->fd_open_time) >= FD_OPEN_TIMEOUT) {        close(s->fd);        s->fd = -1;#ifdef DEBUG_FLOPPY        printf("Floppy closed\n");#endif    }    if (s->fd < 0) {        if (s->fd_got_error &&            (qemu_get_clock(rt_clock) - s->fd_error_time) < FD_OPEN_TIMEOUT) {#ifdef DEBUG_FLOPPY            printf("No floppy (open delayed)\n");#endif            return -EIO;        }        s->fd = open(bs->filename, s->fd_open_flags);        if (s->fd < 0) {            s->fd_error_time = qemu_get_clock(rt_clock);            s->fd_got_error = 1;            if (last_media_present)                s->fd_media_changed = 1;#ifdef DEBUG_FLOPPY            printf("No floppy\n");#endif            return -EIO;        }#ifdef DEBUG_FLOPPY        printf("Floppy opened\n");#endif    }    if (!last_media_present)        s->fd_media_changed = 1;    s->fd_open_time = qemu_get_clock(rt_clock);    s->fd_got_error = 0;    return 0;}#elsestatic int fd_open(BlockDriverState *bs){    return 0;}#endif#if defined(__linux__)static int raw_is_inserted(BlockDriverState *bs){    BDRVRawState *s = bs->opaque;    int ret;    switch(s->type) {    case FTYPE_CD:        ret = ioctl(s->fd, CDROM_DRIVE_STATUS, CDSL_CURRENT);        if (ret == CDS_DISC_OK)            return 1;        else            return 0;        break;    case FTYPE_FD:        ret = fd_open(bs);        return (ret >= 0);    default:        return 1;    }}/* currently only used by fdc.c, but a CD version would be good too */static int raw_media_changed(BlockDriverState *bs){    BDRVRawState *s = bs->opaque;    switch(s->type) {    case FTYPE_FD:        {            int ret;            /* XXX: we do not have a true media changed indication. It               does not work if the floppy is changed without trying               to read it */            fd_open(bs);            ret = s->fd_media_changed;            s->fd_media_changed = 0;#ifdef DEBUG_FLOPPY            printf("Floppy changed=%d\n", ret);#endif            return ret;        }    default:        return -ENOTSUP;    }}static int raw_eject(BlockDriverState *bs, int eject_flag){    BDRVRawState *s = bs->opaque;    switch(s->type) {    case FTYPE_CD:        if (eject_flag) {            if (ioctl (s->fd, CDROMEJECT, NULL) < 0)                perror("CDROMEJECT");        } else {            if (ioctl (s->fd, CDROMCLOSETRAY, NULL) < 0)                perror("CDROMEJECT");        }        break;    case FTYPE_FD:        {            int fd;            if (s->fd >= 0) {                close(s->fd);                s->fd = -1;            }            fd = open(bs->filename, s->fd_open_flags | O_NONBLOCK);            if (fd >= 0) {                if (ioctl(fd, FDEJECT, 0) < 0)                    perror("FDEJECT");                close(fd);            }        }        break;    default:        return -ENOTSUP;    }    return 0;}static int raw_set_locked(BlockDriverState *bs, int locked){    BDRVRawState *s = bs->opaque;    switch(s->type) {    case FTYPE_CD:        if (ioctl (s->fd, CDROM_LOCKDOOR, locked) < 0) {            /* Note: an error can happen if the distribution automatically               mounts the CD-ROM */            //        perror("CDROM_LOCKDOOR");        }        break;    default:        return -ENOTSUP;    }    return 0;}static int raw_ioctl(BlockDriverState *bs, unsigned long int req, void *buf){    BDRVRawState *s = bs->opaque;    return ioctl(s->fd, req, buf);}#elsestatic int raw_is_inserted(BlockDriverState *bs){    return 1;}static int raw_media_changed(BlockDriverState *bs){    return -ENOTSUP;}static int raw_eject(BlockDriverState *bs, int eject_flag){    return -ENOTSUP;}static int raw_set_locked(BlockDriverState *bs, int locked){    return -ENOTSUP;}static int raw_ioctl(BlockDriverState *bs, unsigned long int req, void *buf){    return -ENOTSUP;}#endif /* !linux */BlockDriver bdrv_host_device = {    "host_device",    sizeof(BDRVRawState),    NULL, /* no probe for protocols */    hdev_open,    NULL,    NULL,    raw_close,    NULL,    raw_flush,    .bdrv_aio_read = raw_aio_read,    .bdrv_aio_write = raw_aio_write,    .bdrv_aio_cancel = raw_aio_cancel,    .aiocb_size = sizeof(RawAIOCB),    .bdrv_pread = raw_pread,    .bdrv_pwrite = raw_pwrite,    .bdrv_getlength = raw_getlength,    /* removable device support */    .bdrv_is_inserted = raw_is_inserted,    .bdrv_media_changed = raw_media_changed,    .bdrv_eject = raw_eject,    .bdrv_set_locked = raw_set_locked,    /* generic scsi device */    .bdrv_ioctl = raw_ioctl,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉久久夜色精品国产使用方法| 成人av网站免费观看| 国产精品夜夜嗨| 欧美日韩一区二区欧美激情 | 黑人巨大精品欧美一区| 99视频有精品| 久久女同精品一区二区| 午夜av区久久| 91黄视频在线| 亚洲欧美精品午睡沙发| 成人一区二区三区| 久久色在线视频| 免费观看日韩电影| 欧美视频中文字幕| 亚洲另类在线制服丝袜| 不卡的av中国片| 欧美国产精品v| 国产成人亚洲精品青草天美| 26uuuu精品一区二区| 日本一区中文字幕| 欧美精三区欧美精三区| 亚洲国产精品嫩草影院| 在线亚洲欧美专区二区| 亚洲美女少妇撒尿| 色偷偷88欧美精品久久久| 国产精品色婷婷久久58| 国产成人超碰人人澡人人澡| 国产日韩欧美高清在线| 国产精品夜夜嗨| 国产精品久久久久久久久久久免费看 | 日本不卡的三区四区五区| 欧美亚洲自拍偷拍| 亚洲成av人片在www色猫咪| 欧美中文字幕不卡| 亚洲第一会所有码转帖| 欧美视频一区二区三区四区| 午夜久久久久久| 91麻豆精品91久久久久久清纯| 天天亚洲美女在线视频| 91精品国产美女浴室洗澡无遮挡| 全国精品久久少妇| 日韩欧美中文一区| 国产精品1区2区3区在线观看| 久久久久9999亚洲精品| 国产成人免费视频网站高清观看视频 | 国产午夜精品在线观看| 国产成人在线网站| 国产精品久久久久久久久久久免费看 | 日韩国产欧美在线观看| 欧美一级二级在线观看| 极品美女销魂一区二区三区免费| 国产亚洲一二三区| 亚洲成人一区二区| 一区二区三区四区在线| 欧美色涩在线第一页| 日韩中文字幕区一区有砖一区| 日韩精品一区二区三区在线播放| 国产精品性做久久久久久| 中文字幕在线一区| 在线播放日韩导航| 久久精品国产免费| 最新高清无码专区| 欧美一区二区网站| 99久久99久久精品免费看蜜桃| 亚洲一区二区三区四区在线免费观看| 欧美人与性动xxxx| 国产精品一区二区久久不卡| 一区二区久久久久| 久久亚洲欧美国产精品乐播| 欧美性生活影院| 国产成人精品三级麻豆| 亚洲电影欧美电影有声小说| 久久久美女毛片| 欧美日韩一区成人| 成+人+亚洲+综合天堂| 日韩中文字幕不卡| 亚洲丝袜制服诱惑| 久久婷婷一区二区三区| 欧美系列亚洲系列| 成人黄色电影在线| 黄一区二区三区| 视频一区二区欧美| 亚洲视频免费在线| 中文欧美字幕免费| 精品国精品自拍自在线| 91精品福利视频| jlzzjlzz亚洲日本少妇| 狠狠色伊人亚洲综合成人| 亚洲国产欧美日韩另类综合| 国产精品视频麻豆| 久久精品综合网| 精品国产欧美一区二区| 欧美挠脚心视频网站| 日本高清成人免费播放| 成人黄色大片在线观看| 国产高清精品网站| 国产一区在线精品| 免费美女久久99| 日本怡春院一区二区| 亚洲小少妇裸体bbw| 亚洲女性喷水在线观看一区| 国产精品午夜春色av| 亚洲国产高清aⅴ视频| 久久久影院官网| 久久嫩草精品久久久久| 亚洲精品在线免费播放| 欧美成人vps| 日韩免费电影一区| 日韩视频永久免费| 精品播放一区二区| 精品国产乱码久久久久久蜜臀| 欧美丰满美乳xxx高潮www| 欧美日韩一区二区三区视频| 欧美日韩一区高清| 91精品国产欧美一区二区18| 日韩一区二区三区高清免费看看| 欧美喷潮久久久xxxxx| 日韩一区二区三区av| 欧美一区二区二区| 亚洲精品在线观看视频| 国产欧美日韩在线| 17c精品麻豆一区二区免费| 亚洲精品成a人| 亚洲v日本v欧美v久久精品| 日本亚洲天堂网| 久久激情五月激情| 国产成人av电影在线播放| proumb性欧美在线观看| 欧美在线啊v一区| 欧美高清视频www夜色资源网| 777xxx欧美| 国产日韩精品一区二区浪潮av| 国产精品久久久久久久岛一牛影视| 国产精品美女久久福利网站| 亚洲欧美韩国综合色| 日本中文一区二区三区| 国产成人精品亚洲日本在线桃色| 91香蕉视频污在线| 日韩一区二区高清| 国产精品色哟哟| 丝袜国产日韩另类美女| 国产福利91精品一区| 色哟哟一区二区在线观看 | 国产另类ts人妖一区二区| 成人一道本在线| 欧美私人免费视频| 国产午夜一区二区三区| 亚洲精品中文在线影院| 蜜芽一区二区三区| 97精品久久久久中文字幕| 欧美日韩国产a| 国产欧美精品一区二区色综合| 亚洲三级电影网站| 久久国产夜色精品鲁鲁99| 99久久er热在这里只有精品66| 欧美精品一级二级| 国产精品福利影院| 麻豆精品精品国产自在97香蕉| 成人在线综合网| 欧美一区二区精品久久911| 日韩理论在线观看| 精品一区二区影视| 精品视频全国免费看| 中文字幕va一区二区三区| 美女一区二区视频| 欧美写真视频网站| √…a在线天堂一区| 国产精品一二三区| 91精品国产欧美一区二区成人| 亚洲免费观看视频| 丁香激情综合五月| 精品国产自在久精品国产| 亚洲bt欧美bt精品| 91蜜桃在线观看| 日本一区二区三区高清不卡| 日本成人在线电影网| 在线一区二区三区四区五区| 亚洲国产精品黑人久久久| 久久成人久久爱| 在线播放国产精品二区一二区四区| 亚洲欧洲日本在线| 国产一区二区三区最好精华液| 欧美一区二区久久久| 亚洲二区在线观看| 欧美三级电影网| 亚洲国产成人va在线观看天堂| 一本一道久久a久久精品| 国产精品传媒视频| www..com久久爱| 国产精品电影院| 97精品电影院| 亚洲人成精品久久久久| 99久久777色| 亚洲人午夜精品天堂一二香蕉| 成人网页在线观看| 国产精品国产精品国产专区不蜜| 国产mv日韩mv欧美| 国产精品视频线看| 色香蕉久久蜜桃| 亚洲尤物在线视频观看|