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

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

?? block-cloop.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
字號:
/* * QEMU Block driver for CLOOP images * * Copyright (c) 2004 Johannes E. Schindelin * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */#include "qemu-common.h"#include "block_int.h"#include <zlib.h>typedef struct BDRVCloopState {    int fd;    uint32_t block_size;    uint32_t n_blocks;    uint64_t* offsets;    uint32_t sectors_per_block;    uint32_t current_block;    uint8_t *compressed_block;    uint8_t *uncompressed_block;    z_stream zstream;} BDRVCloopState;static int cloop_probe(const uint8_t *buf, int buf_size, const char *filename){    const char* magic_version_2_0="#!/bin/sh\n"	"#V2.0 Format\n"	"modprobe cloop file=$0 && mount -r -t iso9660 /dev/cloop $1\n";    int length=strlen(magic_version_2_0);    if(length>buf_size)	length=buf_size;    if(!memcmp(magic_version_2_0,buf,length))	return 2;    return 0;}static int cloop_open(BlockDriverState *bs, const char *filename, int flags){    BDRVCloopState *s = bs->opaque;    uint32_t offsets_size,max_compressed_block_size=1,i;    s->fd = open(filename, O_RDONLY | O_BINARY);    if (s->fd < 0)        return -errno;    bs->read_only = 1;    /* read header */    if(lseek(s->fd,128,SEEK_SET)<0) {cloop_close:	close(s->fd);	return -1;    }    if(read(s->fd,&s->block_size,4)<4)	goto cloop_close;    s->block_size=be32_to_cpu(s->block_size);    if(read(s->fd,&s->n_blocks,4)<4)	goto cloop_close;    s->n_blocks=be32_to_cpu(s->n_blocks);    /* read offsets */    offsets_size=s->n_blocks*sizeof(uint64_t);    if(!(s->offsets=(uint64_t*)malloc(offsets_size)))	goto cloop_close;    if(read(s->fd,s->offsets,offsets_size)<offsets_size)	goto cloop_close;    for(i=0;i<s->n_blocks;i++) {	s->offsets[i]=be64_to_cpu(s->offsets[i]);	if(i>0) {	    uint32_t size=s->offsets[i]-s->offsets[i-1];	    if(size>max_compressed_block_size)		max_compressed_block_size=size;	}    }    /* initialize zlib engine */    if(!(s->compressed_block = malloc(max_compressed_block_size+1)))	goto cloop_close;    if(!(s->uncompressed_block = malloc(s->block_size)))	goto cloop_close;    if(inflateInit(&s->zstream) != Z_OK)	goto cloop_close;    s->current_block=s->n_blocks;    s->sectors_per_block = s->block_size/512;    bs->total_sectors = s->n_blocks*s->sectors_per_block;    return 0;}static inline int cloop_read_block(BDRVCloopState *s,int block_num){    if(s->current_block != block_num) {	int ret;        uint32_t bytes = s->offsets[block_num+1]-s->offsets[block_num];	lseek(s->fd, s->offsets[block_num], SEEK_SET);        ret = read(s->fd, s->compressed_block, bytes);        if (ret != bytes)            return -1;	s->zstream.next_in = s->compressed_block;	s->zstream.avail_in = bytes;	s->zstream.next_out = s->uncompressed_block;	s->zstream.avail_out = s->block_size;	ret = inflateReset(&s->zstream);	if(ret != Z_OK)	    return -1;	ret = inflate(&s->zstream, Z_FINISH);	if(ret != Z_STREAM_END || s->zstream.total_out != s->block_size)	    return -1;	s->current_block = block_num;    }    return 0;}static int cloop_read(BlockDriverState *bs, int64_t sector_num,                    uint8_t *buf, int nb_sectors){    BDRVCloopState *s = bs->opaque;    int i;    for(i=0;i<nb_sectors;i++) {	uint32_t sector_offset_in_block=((sector_num+i)%s->sectors_per_block),	    block_num=(sector_num+i)/s->sectors_per_block;	if(cloop_read_block(s, block_num) != 0)	    return -1;	memcpy(buf+i*512,s->uncompressed_block+sector_offset_in_block*512,512);    }    return 0;}static void cloop_close(BlockDriverState *bs){    BDRVCloopState *s = bs->opaque;    close(s->fd);    if(s->n_blocks>0)	free(s->offsets);    free(s->compressed_block);    free(s->uncompressed_block);    inflateEnd(&s->zstream);}BlockDriver bdrv_cloop = {    "cloop",    sizeof(BDRVCloopState),    cloop_probe,    cloop_open,    cloop_read,    NULL,    cloop_close,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产传媒久久文化传媒| 日韩色在线观看| 一区二区三区欧美日| 欧美久久一区二区| 不卡视频一二三| 国产一区在线观看麻豆| 中文字幕一区免费在线观看| 555www色欧美视频| 91在线一区二区三区| 精品制服美女久久| 亚洲精品国久久99热| 精品91自产拍在线观看一区| 日本高清不卡在线观看| 成人av电影在线观看| 国产一二精品视频| 国产综合久久久久久久久久久久| 亚洲电影一区二区三区| 亚洲欧美日韩国产成人精品影院| 26uuu国产在线精品一区二区| 在线成人av网站| 337p亚洲精品色噜噜狠狠| 99国产精品视频免费观看| 成人激情视频网站| 成人激情视频网站| 色嗨嗨av一区二区三区| 在线亚洲一区观看| 欧美一区二区三区公司| 日韩欧美国产成人一区二区| 欧美一区日本一区韩国一区| 91麻豆精品国产91久久久 | 麻豆freexxxx性91精品| 亚洲国产另类精品专区| 日韩高清电影一区| 韩日av一区二区| av动漫一区二区| 精品婷婷伊人一区三区三| 欧美日韩中文字幕一区二区| 91精品婷婷国产综合久久竹菊| 欧美精品一区二区三区视频| 欧美国产在线观看| 亚洲综合久久久久| 极品少妇xxxx精品少妇| 99v久久综合狠狠综合久久| 欧美人与性动xxxx| 最新国产精品久久精品| 精品一区二区三区在线播放视频 | 欧美人妇做爰xxxⅹ性高电影| 精品三级在线看| 国产精品人成在线观看免费| 尤物视频一区二区| 国产 日韩 欧美大片| 欧美日韩精品电影| 综合av第一页| 成人h精品动漫一区二区三区| 日韩一区二区免费视频| 亚洲国产精品久久一线不卡| 99免费精品在线| 国产亚洲一区二区三区四区| 日本不卡视频在线| 欧美日韩成人一区| 亚洲第一成年网| 欧美性感一区二区三区| 亚洲视频一区二区免费在线观看| 国产一区二区三区香蕉| 日韩精品中文字幕一区二区三区 | 欧美日韩成人综合天天影院| 夜夜操天天操亚洲| 欧美三级电影在线看| 日韩福利视频网| 精品免费国产一区二区三区四区| 日韩av在线播放中文字幕| 91精品福利在线一区二区三区 | 欧美在线观看一区| 亚洲gay无套男同| 欧美大白屁股肥臀xxxxxx| 国产一区啦啦啦在线观看| 久久精品人人爽人人爽| 白白色亚洲国产精品| 亚洲一区自拍偷拍| 欧美精品自拍偷拍| 午夜欧美在线一二页| 日韩情涩欧美日韩视频| 成人午夜视频网站| 蜜臀av一区二区在线免费观看| 日韩欧美一区电影| 成人午夜精品在线| 天堂蜜桃91精品| 中文字幕一区二区三中文字幕| 在线成人免费观看| 色美美综合视频| 激情六月婷婷久久| 蜜臀av一区二区在线免费观看| 中文字幕一区av| 26uuu另类欧美| 欧美日韩国产综合草草| 成人国产精品视频| 国产成人综合网| 精品一区二区三区av| 夜夜爽夜夜爽精品视频| 一区二区三区成人| 一本到不卡免费一区二区| 久久久亚洲精品一区二区三区 | 一区二区三区加勒比av| 日韩电影免费一区| 亚洲精品菠萝久久久久久久| 精品999久久久| 久久综合久色欧美综合狠狠| 欧美性三三影院| 欧美色图片你懂的| 972aa.com艺术欧美| 91在线免费视频观看| 成人视屏免费看| 国产成人免费视频精品含羞草妖精| 久久成人综合网| 精品一区二区三区视频| 亚洲精品亚洲人成人网在线播放| 亚洲成av人片www| 蜜桃视频第一区免费观看| 韩国成人福利片在线播放| 99久久99久久免费精品蜜臀| 欧美日韩一二区| 久久精品日产第一区二区三区高清版 | 国产精品国产成人国产三级| 亚洲一区二区在线观看视频| 亚洲电影视频在线| 国产美女在线观看一区| 91福利国产精品| 国产片一区二区三区| 日日骚欧美日韩| 日本韩国一区二区三区视频| 日韩一区二区在线观看| 国产宾馆实践打屁股91| 日韩中文字幕区一区有砖一区| 成人动漫一区二区在线| 亚洲综合色自拍一区| 欧美日韩精品免费观看视频| 午夜精品久久久久久久| 色婷婷久久久亚洲一区二区三区| 久久只精品国产| 国产一区久久久| 精品国产乱码久久久久久闺蜜| 亚洲午夜一区二区| 色综合天天视频在线观看| 国产日韩欧美精品在线| 国产精品一区二区三区四区| 欧美日韩精品电影| 日本欧美加勒比视频| 欧美一区二区在线免费观看| 午夜电影久久久| 日韩欧美精品在线| 成人网在线免费视频| 一区二区日韩电影| 精品成人一区二区三区四区| 激情六月婷婷久久| 欧美成人综合网站| 日本韩国精品在线| 韩国av一区二区| 亚洲一区欧美一区| 欧美日韩在线三级| 亚洲第一久久影院| 精品福利一区二区三区| 国产xxx精品视频大全| 亚洲精品美国一| 日韩一区二区电影| 94-欧美-setu| 激情另类小说区图片区视频区| 亚洲精品日产精品乱码不卡| 欧美亚洲免费在线一区| 国产成人在线色| 亚洲va国产天堂va久久en| 亚洲欧洲av色图| 日韩美女视频在线| 欧美va亚洲va| 欧美一级欧美三级在线观看| 在线视频欧美精品| 91成人在线精品| 欧美日韩精品欧美日韩精品一| 色婷婷精品久久二区二区蜜臀av| 色美美综合视频| 欧美日韩在线三区| 欧美电影免费提供在线观看| 精品久久久影院| 国产精品每日更新在线播放网址| 国产精品美女久久久久久| 欧美在线色视频| 99re6这里只有精品视频在线观看| 久久成人18免费观看| 亚洲成a人片在线不卡一二三区| 亚洲素人一区二区| 国产精品午夜久久| 亚洲国产成人私人影院tom| 久久久五月婷婷| 久久精品水蜜桃av综合天堂| 国产日韩欧美精品电影三级在线 | 成人白浆超碰人人人人| 成人国产一区二区三区精品| 成人av在线观| 在线欧美小视频| 欧美精品久久一区二区三区| 欧美肥大bbwbbw高潮|