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

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

?? block.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
	return -ENOTSUP;    }    total_sectors = bdrv_getlength(bs) >> SECTOR_BITS;    for (i = 0; i < total_sectors;) {        if (drv->bdrv_is_allocated(bs, i, 65536, &n)) {            for(j = 0; j < n; j++) {                if (bdrv_read(bs, i, sector, 1) != 0) {                    return -EIO;                }                if (bdrv_write(bs->backing_hd, i, sector, 1) != 0) {                    return -EIO;                }                i++;	    }	} else {            i += n;        }    }    if (drv->bdrv_make_empty)	return drv->bdrv_make_empty(bs);    return 0;}/* return < 0 if error. See bdrv_write() for the return codes */int bdrv_read(BlockDriverState *bs, int64_t sector_num,              uint8_t *buf, int nb_sectors){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) {            memcpy(buf, bs->boot_sector_data, 512);        sector_num++;        nb_sectors--;        buf += 512;        if (nb_sectors == 0)            return 0;    }    if (drv->bdrv_pread) {        int ret, len;        len = nb_sectors * 512;        ret = drv->bdrv_pread(bs, sector_num * 512, buf, len);        if (ret < 0)            return ret;        else if (ret != len)            return -EINVAL;        else {	    bs->rd_bytes += (unsigned) len;	    bs->rd_ops ++;            return 0;	}    } else {        return drv->bdrv_read(bs, sector_num, buf, nb_sectors);    }}/* Return < 0 if error. Important errors are:  -EIO         generic I/O error (may happen for all errors)  -ENOMEDIUM   No media inserted.  -EINVAL      Invalid sector number or nb_sectors  -EACCES      Trying to write a read-only device*/int bdrv_write(BlockDriverState *bs, int64_t sector_num,               const uint8_t *buf, int nb_sectors){    BlockDriver *drv = bs->drv;    if (!bs->drv)        return -ENOMEDIUM;    if (bs->read_only)        return -EACCES;    if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) {        memcpy(bs->boot_sector_data, buf, 512);    }    if (drv->bdrv_pwrite) {        int ret, len;        len = nb_sectors * 512;        ret = drv->bdrv_pwrite(bs, sector_num * 512, buf, len);        if (ret < 0)            return ret;        else if (ret != len)            return -EIO;        else {	    bs->wr_bytes += (unsigned) len;	    bs->wr_ops ++;            return 0;	}    } else {        return drv->bdrv_write(bs, sector_num, buf, nb_sectors);    }}static int bdrv_pread_em(BlockDriverState *bs, int64_t offset,                         uint8_t *buf, int count1){    uint8_t tmp_buf[SECTOR_SIZE];    int len, nb_sectors, count;    int64_t sector_num;    count = count1;    /* first read to align to sector start */    len = (SECTOR_SIZE - offset) & (SECTOR_SIZE - 1);    if (len > count)        len = count;    sector_num = offset >> SECTOR_BITS;    if (len > 0) {        if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;        memcpy(buf, tmp_buf + (offset & (SECTOR_SIZE - 1)), len);        count -= len;        if (count == 0)            return count1;        sector_num++;        buf += len;    }    /* read the sectors "in place" */    nb_sectors = count >> SECTOR_BITS;    if (nb_sectors > 0) {        if (bdrv_read(bs, sector_num, buf, nb_sectors) < 0)            return -EIO;        sector_num += nb_sectors;        len = nb_sectors << SECTOR_BITS;        buf += len;        count -= len;    }    /* add data from the last sector */    if (count > 0) {        if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;        memcpy(buf, tmp_buf, count);    }    return count1;}static int bdrv_pwrite_em(BlockDriverState *bs, int64_t offset,                          const uint8_t *buf, int count1){    uint8_t tmp_buf[SECTOR_SIZE];    int len, nb_sectors, count;    int64_t sector_num;    count = count1;    /* first write to align to sector start */    len = (SECTOR_SIZE - offset) & (SECTOR_SIZE - 1);    if (len > count)        len = count;    sector_num = offset >> SECTOR_BITS;    if (len > 0) {        if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;        memcpy(tmp_buf + (offset & (SECTOR_SIZE - 1)), buf, len);        if (bdrv_write(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;        count -= len;        if (count == 0)            return count1;        sector_num++;        buf += len;    }    /* write the sectors "in place" */    nb_sectors = count >> SECTOR_BITS;    if (nb_sectors > 0) {        if (bdrv_write(bs, sector_num, buf, nb_sectors) < 0)            return -EIO;        sector_num += nb_sectors;        len = nb_sectors << SECTOR_BITS;        buf += len;        count -= len;    }    /* add data from the last sector */    if (count > 0) {        if (bdrv_read(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;        memcpy(tmp_buf, buf, count);        if (bdrv_write(bs, sector_num, tmp_buf, 1) < 0)            return -EIO;    }    return count1;}/** * Read with byte offsets (needed only for file protocols) */int bdrv_pread(BlockDriverState *bs, int64_t offset,               void *buf1, int count1){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_pread)        return bdrv_pread_em(bs, offset, buf1, count1);    return drv->bdrv_pread(bs, offset, buf1, count1);}/** * Write with byte offsets (needed only for file protocols) */int bdrv_pwrite(BlockDriverState *bs, int64_t offset,                const void *buf1, int count1){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_pwrite)        return bdrv_pwrite_em(bs, offset, buf1, count1);    return drv->bdrv_pwrite(bs, offset, buf1, count1);}/** * Truncate file to 'offset' bytes (needed only for file protocols) */int bdrv_truncate(BlockDriverState *bs, int64_t offset){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_truncate)        return -ENOTSUP;    return drv->bdrv_truncate(bs, offset);}/** * Length of a file in bytes. Return < 0 if error or unknown. */int64_t bdrv_getlength(BlockDriverState *bs){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_getlength) {        /* legacy mode */        return bs->total_sectors * SECTOR_SIZE;    }    return drv->bdrv_getlength(bs);}/* return 0 as number of sectors if no device present or error */void bdrv_get_geometry(BlockDriverState *bs, uint64_t *nb_sectors_ptr){    int64_t length;    length = bdrv_getlength(bs);    if (length < 0)        length = 0;    else        length = length >> SECTOR_BITS;    *nb_sectors_ptr = length;}/* force a given boot sector. */void bdrv_set_boot_sector(BlockDriverState *bs, const uint8_t *data, int size){    bs->boot_sector_enabled = 1;    if (size > 512)        size = 512;    memcpy(bs->boot_sector_data, data, size);    memset(bs->boot_sector_data + size, 0, 512 - size);}void bdrv_set_geometry_hint(BlockDriverState *bs,                            int cyls, int heads, int secs){    bs->cyls = cyls;    bs->heads = heads;    bs->secs = secs;}void bdrv_set_type_hint(BlockDriverState *bs, int type){    bs->type = type;    bs->removable = ((type == BDRV_TYPE_CDROM ||                      type == BDRV_TYPE_FLOPPY));}void bdrv_set_translation_hint(BlockDriverState *bs, int translation){    bs->translation = translation;}void bdrv_get_geometry_hint(BlockDriverState *bs,                            int *pcyls, int *pheads, int *psecs){    *pcyls = bs->cyls;    *pheads = bs->heads;    *psecs = bs->secs;}int bdrv_get_type_hint(BlockDriverState *bs){    return bs->type;}int bdrv_get_translation_hint(BlockDriverState *bs){    return bs->translation;}int bdrv_is_removable(BlockDriverState *bs){    return bs->removable;}int bdrv_is_read_only(BlockDriverState *bs){    return bs->read_only;}int bdrv_is_sg(BlockDriverState *bs){    return bs->sg;}/* XXX: no longer used */void bdrv_set_change_cb(BlockDriverState *bs,                        void (*change_cb)(void *opaque), void *opaque){    bs->change_cb = change_cb;    bs->change_opaque = opaque;}int bdrv_is_encrypted(BlockDriverState *bs){    if (bs->backing_hd && bs->backing_hd->encrypted)        return 1;    return bs->encrypted;}int bdrv_set_key(BlockDriverState *bs, const char *key){    int ret;    if (bs->backing_hd && bs->backing_hd->encrypted) {        ret = bdrv_set_key(bs->backing_hd, key);        if (ret < 0)            return ret;        if (!bs->encrypted)            return 0;    }    if (!bs->encrypted || !bs->drv || !bs->drv->bdrv_set_key)        return -1;    return bs->drv->bdrv_set_key(bs, key);}void bdrv_get_format(BlockDriverState *bs, char *buf, int buf_size){    if (!bs->drv) {        buf[0] = '\0';    } else {        pstrcpy(buf, buf_size, bs->drv->format_name);    }}void bdrv_iterate_format(void (*it)(void *opaque, const char *name),                         void *opaque){    BlockDriver *drv;    for (drv = first_drv; drv != NULL; drv = drv->next) {        it(opaque, drv->format_name);    }}BlockDriverState *bdrv_find(const char *name){    BlockDriverState *bs;    for (bs = bdrv_first; bs != NULL; bs = bs->next) {        if (!strcmp(name, bs->device_name))            return bs;    }    return NULL;}void bdrv_iterate(void (*it)(void *opaque, const char *name), void *opaque){    BlockDriverState *bs;    for (bs = bdrv_first; bs != NULL; bs = bs->next) {        it(opaque, bs->device_name);    }}const char *bdrv_get_device_name(BlockDriverState *bs){    return bs->device_name;}void bdrv_flush(BlockDriverState *bs){    if (bs->drv->bdrv_flush)        bs->drv->bdrv_flush(bs);    if (bs->backing_hd)        bdrv_flush(bs->backing_hd);}#ifndef QEMU_IMGvoid bdrv_info(void){    BlockDriverState *bs;    for (bs = bdrv_first; bs != NULL; bs = bs->next) {        term_printf("%s:", bs->device_name);        term_printf(" type=");        switch(bs->type) {        case BDRV_TYPE_HD:            term_printf("hd");            break;        case BDRV_TYPE_CDROM:            term_printf("cdrom");            break;        case BDRV_TYPE_FLOPPY:            term_printf("floppy");            break;        }        term_printf(" removable=%d", bs->removable);        if (bs->removable) {            term_printf(" locked=%d", bs->locked);        }        if (bs->drv) {            term_printf(" file=");	    term_print_filename(bs->filename);            if (bs->backing_file[0] != '\0') {                term_printf(" backing_file=");		term_print_filename(bs->backing_file);	    }            term_printf(" ro=%d", bs->read_only);            term_printf(" drv=%s", bs->drv->format_name);            if (bs->encrypted)                term_printf(" encrypted");        } else {            term_printf(" [not inserted]");        }        term_printf("\n");    }}/* The "info blockstats" command. */void bdrv_info_stats (void){    BlockDriverState *bs;    for (bs = bdrv_first; bs != NULL; bs = bs->next) {	term_printf ("%s:"		     " rd_bytes=%" PRIu64		     " wr_bytes=%" PRIu64		     " rd_operations=%" PRIu64		     " wr_operations=%" PRIu64		     "\n",		     bs->device_name,		     bs->rd_bytes, bs->wr_bytes,		     bs->rd_ops, bs->wr_ops);    }}#endifvoid bdrv_get_backing_filename(BlockDriverState *bs,                               char *filename, int filename_size){    if (!bs->backing_hd) {        pstrcpy(filename, filename_size, "");    } else {        pstrcpy(filename, filename_size, bs->backing_file);

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久人人人人传媒| 精品区一区二区| 欧美一区二区在线免费观看| 久久久久久久久久美女| 亚洲不卡av一区二区三区| 成人激情小说网站| 精品人在线二区三区| 香蕉久久夜色精品国产使用方法| 风间由美一区二区三区在线观看| 日韩美一区二区三区| 亚洲午夜电影在线| 成人av网站免费观看| 久久综合久久99| 毛片不卡一区二区| 91精品国产综合久久久久| 亚洲精选视频在线| 99视频精品在线| 国产片一区二区| 国产在线国偷精品产拍免费yy| 欧美日韩免费电影| 一区二区三区免费观看| 成人亚洲精品久久久久软件| 精品奇米国产一区二区三区| 蜜桃久久久久久久| 欧美一区二区久久久| 图片区日韩欧美亚洲| 欧美日韩情趣电影| 亚洲一级二级在线| 欧美午夜视频网站| 亚洲高清中文字幕| 538在线一区二区精品国产| 亚洲制服丝袜av| 色成人在线视频| 一区二区三区四区不卡在线| 91浏览器打开| 亚洲最新在线观看| 欧美色图12p| 性做久久久久久免费观看欧美| 欧洲精品一区二区三区在线观看| 亚洲自拍偷拍综合| 91麻豆精品国产91久久久使用方法 | 337p日本欧洲亚洲大胆精品| 麻豆精品国产91久久久久久 | 99精品一区二区| 国产精品女同一区二区三区| 成人高清av在线| 亚洲黄色性网站| 欧美精品久久天天躁| 麻豆国产精品一区二区三区| 26uuu久久综合| 成人理论电影网| 亚洲综合免费观看高清完整版| 欧美日韩第一区日日骚| 久久精品免费看| 欧美国产在线观看| 色先锋aa成人| 久久精品理论片| 国产精品短视频| 欧美欧美欧美欧美| 国产乱码字幕精品高清av| 国产精品久久影院| 欧美高清激情brazzers| 国产一区视频网站| 亚洲人成网站精品片在线观看| 欧美猛男超大videosgay| 麻豆成人在线观看| 亚洲四区在线观看| 日韩午夜激情免费电影| 成人avav影音| 日韩国产欧美视频| 亚洲婷婷综合久久一本伊一区| 欧美三区在线观看| 国内精品伊人久久久久av一坑| 日韩一区中文字幕| 欧美一级二级三级蜜桃| 成人免费福利片| 麻豆精品蜜桃视频网站| 综合欧美一区二区三区| 欧美成人午夜电影| 欧美午夜免费电影| www.欧美亚洲| 久久99九九99精品| 一区二区三区国产精华| 久久免费视频一区| 欧美一区二区在线观看| 91蜜桃网址入口| 国产精品综合一区二区三区| 亚洲成人精品影院| 国产精品乱码一区二区三区软件| 9191国产精品| 91福利小视频| 99re这里只有精品首页| 激情六月婷婷久久| 日本欧美肥老太交大片| 亚洲综合免费观看高清在线观看| 中文字幕二三区不卡| 日韩欧美国产wwwww| 欧美视频在线一区二区三区| jizzjizzjizz欧美| 国产不卡在线一区| 国产精品18久久久久久久久 | 午夜欧美2019年伦理| 亚洲视频在线观看三级| 国产精品久久久久精k8| 久久久影视传媒| 久久婷婷久久一区二区三区| 91精品国产美女浴室洗澡无遮挡| 色先锋资源久久综合| 一道本成人在线| 一本色道综合亚洲| 色综合久久久网| 99久久精品一区二区| 99久久99久久久精品齐齐| 高清久久久久久| 成人性生交大片免费看中文 | 亚洲乱码精品一二三四区日韩在线 | 国产美女娇喘av呻吟久久| 美美哒免费高清在线观看视频一区二区| 亚洲一区二区三区四区五区黄| 亚洲柠檬福利资源导航| 夜夜嗨av一区二区三区网页| 亚洲一区二区精品3399| 三级影片在线观看欧美日韩一区二区| 怡红院av一区二区三区| 亚洲国产精品一区二区www| 亚洲综合图片区| 日韩av一二三| 经典三级在线一区| 成人久久视频在线观看| 一本一本久久a久久精品综合麻豆 一本一道波多野结衣一区二区 | av电影在线观看一区| 色婷婷亚洲婷婷| 欧美日韩成人高清| 欧美变态tickling挠脚心| 精品日韩99亚洲| 中文字幕在线不卡视频| 亚洲卡通欧美制服中文| 日韩高清在线一区| 国产一二三精品| 99国产精品99久久久久久| 欧美三级资源在线| 亚洲精品一线二线三线无人区| 国产欧美视频在线观看| 亚洲精品大片www| 日本sm残虐另类| 国产成a人亚洲精| 欧美视频中文字幕| 久久久久久久久久美女| 一区二区三区四区激情| 老司机免费视频一区二区| 成人在线一区二区三区| 欧美色男人天堂| 国产三级欧美三级日产三级99| 亚洲免费在线电影| 国内精品国产成人国产三级粉色 | 欧美一区二区三区啪啪| 国产亚洲欧美日韩在线一区| 亚洲色欲色欲www| 日韩国产欧美一区二区三区| 成人午夜激情片| 日韩欧美国产综合在线一区二区三区| 国产欧美日韩综合| 美女任你摸久久| 色又黄又爽网站www久久| 欧美刺激脚交jootjob| 亚洲精品写真福利| 国产激情一区二区三区四区| 欧洲一区在线电影| 国产亚洲一二三区| 日韩电影在线观看一区| 色婷婷久久久亚洲一区二区三区| 久久这里只有精品首页| 午夜一区二区三区视频| www.成人网.com| 久久精品视频免费观看| 日本vs亚洲vs韩国一区三区二区| 91同城在线观看| 欧美国产成人精品| 国产在线视频精品一区| 欧美浪妇xxxx高跟鞋交| 国产精品国产自产拍高清av| 国产美女精品人人做人人爽| 91麻豆精品91久久久久同性| 亚洲精品视频免费观看| 成人久久视频在线观看| 国产亚洲一区二区三区在线观看| 理论电影国产精品| 日韩一区二区免费高清| 亚洲国产成人av好男人在线观看| 色综合久久久久综合| 国产精品嫩草99a| 国产精品18久久久久久久久 | 91久久线看在观草草青青| 久久精品人人做人人综合 | 欧美一级爆毛片| 日日夜夜精品视频天天综合网| 欧美影院一区二区三区| 一区二区三区四区高清精品免费观看| av在线播放不卡| 亚洲乱码日产精品bd|