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

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

?? block.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁 / 共 3 頁
字號:
    }}int bdrv_write_compressed(BlockDriverState *bs, int64_t sector_num,                          const uint8_t *buf, int nb_sectors){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_write_compressed)        return -ENOTSUP;    return drv->bdrv_write_compressed(bs, sector_num, buf, nb_sectors);}int bdrv_get_info(BlockDriverState *bs, BlockDriverInfo *bdi){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_get_info)        return -ENOTSUP;    memset(bdi, 0, sizeof(*bdi));    return drv->bdrv_get_info(bs, bdi);}/**************************************************************//* handling of snapshots */int bdrv_snapshot_create(BlockDriverState *bs,                         QEMUSnapshotInfo *sn_info){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_snapshot_create)        return -ENOTSUP;    return drv->bdrv_snapshot_create(bs, sn_info);}int bdrv_snapshot_goto(BlockDriverState *bs,                       const char *snapshot_id){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_snapshot_goto)        return -ENOTSUP;    return drv->bdrv_snapshot_goto(bs, snapshot_id);}int bdrv_snapshot_delete(BlockDriverState *bs, const char *snapshot_id){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_snapshot_delete)        return -ENOTSUP;    return drv->bdrv_snapshot_delete(bs, snapshot_id);}int bdrv_snapshot_list(BlockDriverState *bs,                       QEMUSnapshotInfo **psn_info){    BlockDriver *drv = bs->drv;    if (!drv)        return -ENOMEDIUM;    if (!drv->bdrv_snapshot_list)        return -ENOTSUP;    return drv->bdrv_snapshot_list(bs, psn_info);}#define NB_SUFFIXES 4char *get_human_readable_size(char *buf, int buf_size, int64_t size){    static const char suffixes[NB_SUFFIXES] = "KMGT";    int64_t base;    int i;    if (size <= 999) {        snprintf(buf, buf_size, "%" PRId64, size);    } else {        base = 1024;        for(i = 0; i < NB_SUFFIXES; i++) {            if (size < (10 * base)) {                snprintf(buf, buf_size, "%0.1f%c",                         (double)size / base,                         suffixes[i]);                break;            } else if (size < (1000 * base) || i == (NB_SUFFIXES - 1)) {                snprintf(buf, buf_size, "%" PRId64 "%c",                         ((size + (base >> 1)) / base),                         suffixes[i]);                break;            }            base = base * 1024;        }    }    return buf;}char *bdrv_snapshot_dump(char *buf, int buf_size, QEMUSnapshotInfo *sn){    char buf1[128], date_buf[128], clock_buf[128];#ifdef _WIN32    struct tm *ptm;#else    struct tm tm;#endif    time_t ti;    int64_t secs;    if (!sn) {        snprintf(buf, buf_size,                 "%-10s%-20s%7s%20s%15s",                 "ID", "TAG", "VM SIZE", "DATE", "VM CLOCK");    } else {        ti = sn->date_sec;#ifdef _WIN32        ptm = localtime(&ti);        strftime(date_buf, sizeof(date_buf),                 "%Y-%m-%d %H:%M:%S", ptm);#else        localtime_r(&ti, &tm);        strftime(date_buf, sizeof(date_buf),                 "%Y-%m-%d %H:%M:%S", &tm);#endif        secs = sn->vm_clock_nsec / 1000000000;        snprintf(clock_buf, sizeof(clock_buf),                 "%02d:%02d:%02d.%03d",                 (int)(secs / 3600),                 (int)((secs / 60) % 60),                 (int)(secs % 60),                 (int)((sn->vm_clock_nsec / 1000000) % 1000));        snprintf(buf, buf_size,                 "%-10s%-20s%7s%20s%15s",                 sn->id_str, sn->name,                 get_human_readable_size(buf1, sizeof(buf1), sn->vm_state_size),                 date_buf,                 clock_buf);    }    return buf;}/**************************************************************//* async I/Os */BlockDriverAIOCB *bdrv_aio_read(BlockDriverState *bs, int64_t sector_num,                                uint8_t *buf, int nb_sectors,                                BlockDriverCompletionFunc *cb, void *opaque){    BlockDriver *drv = bs->drv;    BlockDriverAIOCB *ret;    if (!drv)        return NULL;    /* XXX: we assume that nb_sectors == 0 is suppored by the async read */    if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) {        memcpy(buf, bs->boot_sector_data, 512);        sector_num++;        nb_sectors--;        buf += 512;    }    ret = drv->bdrv_aio_read(bs, sector_num, buf, nb_sectors, cb, opaque);    if (ret) {	/* Update stats even though technically transfer has not happened. */	bs->rd_bytes += (unsigned) nb_sectors * SECTOR_SIZE;	bs->rd_ops ++;    }    return ret;}BlockDriverAIOCB *bdrv_aio_write(BlockDriverState *bs, int64_t sector_num,                                 const uint8_t *buf, int nb_sectors,                                 BlockDriverCompletionFunc *cb, void *opaque){    BlockDriver *drv = bs->drv;    BlockDriverAIOCB *ret;    if (!drv)        return NULL;    if (bs->read_only)        return NULL;    if (sector_num == 0 && bs->boot_sector_enabled && nb_sectors > 0) {        memcpy(bs->boot_sector_data, buf, 512);    }    ret = drv->bdrv_aio_write(bs, sector_num, buf, nb_sectors, cb, opaque);    if (ret) {	/* Update stats even though technically transfer has not happened. */	bs->wr_bytes += (unsigned) nb_sectors * SECTOR_SIZE;	bs->wr_ops ++;    }    return ret;}void bdrv_aio_cancel(BlockDriverAIOCB *acb){    BlockDriver *drv = acb->bs->drv;    drv->bdrv_aio_cancel(acb);}/**************************************************************//* async block device emulation */#ifdef QEMU_IMGstatic BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs,        int64_t sector_num, uint8_t *buf, int nb_sectors,        BlockDriverCompletionFunc *cb, void *opaque){    int ret;    ret = bdrv_read(bs, sector_num, buf, nb_sectors);    cb(opaque, ret);    return NULL;}static BlockDriverAIOCB *bdrv_aio_write_em(BlockDriverState *bs,        int64_t sector_num, const uint8_t *buf, int nb_sectors,        BlockDriverCompletionFunc *cb, void *opaque){    int ret;    ret = bdrv_write(bs, sector_num, buf, nb_sectors);    cb(opaque, ret);    return NULL;}static void bdrv_aio_cancel_em(BlockDriverAIOCB *acb){}#elsestatic void bdrv_aio_bh_cb(void *opaque){    BlockDriverAIOCBSync *acb = opaque;    acb->common.cb(acb->common.opaque, acb->ret);    qemu_aio_release(acb);}static BlockDriverAIOCB *bdrv_aio_read_em(BlockDriverState *bs,        int64_t sector_num, uint8_t *buf, int nb_sectors,        BlockDriverCompletionFunc *cb, void *opaque){    BlockDriverAIOCBSync *acb;    int ret;    acb = qemu_aio_get(bs, cb, opaque);    if (!acb->bh)        acb->bh = qemu_bh_new(bdrv_aio_bh_cb, acb);    ret = bdrv_read(bs, sector_num, buf, nb_sectors);    acb->ret = ret;    qemu_bh_schedule(acb->bh);    return &acb->common;}static BlockDriverAIOCB *bdrv_aio_write_em(BlockDriverState *bs,        int64_t sector_num, const uint8_t *buf, int nb_sectors,        BlockDriverCompletionFunc *cb, void *opaque){    BlockDriverAIOCBSync *acb;    int ret;    acb = qemu_aio_get(bs, cb, opaque);    if (!acb->bh)        acb->bh = qemu_bh_new(bdrv_aio_bh_cb, acb);    ret = bdrv_write(bs, sector_num, buf, nb_sectors);    acb->ret = ret;    qemu_bh_schedule(acb->bh);    return &acb->common;}static void bdrv_aio_cancel_em(BlockDriverAIOCB *blockacb){    BlockDriverAIOCBSync *acb = (BlockDriverAIOCBSync *)blockacb;    qemu_bh_cancel(acb->bh);    qemu_aio_release(acb);}#endif /* !QEMU_IMG *//**************************************************************//* sync block device emulation */static void bdrv_rw_em_cb(void *opaque, int ret){    *(int *)opaque = ret;}#define NOT_DONE 0x7fffffffstatic int bdrv_read_em(BlockDriverState *bs, int64_t sector_num,                        uint8_t *buf, int nb_sectors){    int async_ret;    BlockDriverAIOCB *acb;    async_ret = NOT_DONE;    qemu_aio_wait_start();    acb = bdrv_aio_read(bs, sector_num, buf, nb_sectors,                        bdrv_rw_em_cb, &async_ret);    if (acb == NULL) {        qemu_aio_wait_end();        return -1;    }    while (async_ret == NOT_DONE) {        qemu_aio_wait();    }    qemu_aio_wait_end();    return async_ret;}static int bdrv_write_em(BlockDriverState *bs, int64_t sector_num,                         const uint8_t *buf, int nb_sectors){    int async_ret;    BlockDriverAIOCB *acb;    async_ret = NOT_DONE;    qemu_aio_wait_start();    acb = bdrv_aio_write(bs, sector_num, buf, nb_sectors,                         bdrv_rw_em_cb, &async_ret);    if (acb == NULL) {        qemu_aio_wait_end();        return -1;    }    while (async_ret == NOT_DONE) {        qemu_aio_wait();    }    qemu_aio_wait_end();    return async_ret;}void bdrv_init(void){    bdrv_register(&bdrv_raw);    bdrv_register(&bdrv_host_device);#ifndef _WIN32    bdrv_register(&bdrv_cow);#endif    bdrv_register(&bdrv_qcow);    bdrv_register(&bdrv_vmdk);    bdrv_register(&bdrv_cloop);    bdrv_register(&bdrv_dmg);    bdrv_register(&bdrv_bochs);    bdrv_register(&bdrv_vpc);    bdrv_register(&bdrv_vvfat);    bdrv_register(&bdrv_qcow2);    bdrv_register(&bdrv_parallels);}void *qemu_aio_get(BlockDriverState *bs, BlockDriverCompletionFunc *cb,                   void *opaque){    BlockDriver *drv;    BlockDriverAIOCB *acb;    drv = bs->drv;    if (drv->free_aiocb) {        acb = drv->free_aiocb;        drv->free_aiocb = acb->next;    } else {        acb = qemu_mallocz(drv->aiocb_size);        if (!acb)            return NULL;    }    acb->bs = bs;    acb->cb = cb;    acb->opaque = opaque;    return acb;}void qemu_aio_release(void *p){    BlockDriverAIOCB *acb = p;    BlockDriver *drv = acb->bs->drv;    acb->next = drv->free_aiocb;    drv->free_aiocb = acb;}/**************************************************************//* removable device support *//** * Return TRUE if the media is present */int bdrv_is_inserted(BlockDriverState *bs){    BlockDriver *drv = bs->drv;    int ret;    if (!drv)        return 0;    if (!drv->bdrv_is_inserted)        return 1;    ret = drv->bdrv_is_inserted(bs);    return ret;}/** * Return TRUE if the media changed since the last call to this * function. It is currently only used for floppy disks */int bdrv_media_changed(BlockDriverState *bs){    BlockDriver *drv = bs->drv;    int ret;    if (!drv || !drv->bdrv_media_changed)        ret = -ENOTSUP;    else        ret = drv->bdrv_media_changed(bs);    if (ret == -ENOTSUP)        ret = bs->media_changed;    bs->media_changed = 0;    return ret;}/** * If eject_flag is TRUE, eject the media. Otherwise, close the tray */void bdrv_eject(BlockDriverState *bs, int eject_flag){    BlockDriver *drv = bs->drv;    int ret;    if (!drv || !drv->bdrv_eject) {        ret = -ENOTSUP;    } else {        ret = drv->bdrv_eject(bs, eject_flag);    }    if (ret == -ENOTSUP) {        if (eject_flag)            bdrv_close(bs);    }}int bdrv_is_locked(BlockDriverState *bs){    return bs->locked;}/** * Lock or unlock the media (if it is locked, the user won't be able * to eject it manually). */void bdrv_set_locked(BlockDriverState *bs, int locked){    BlockDriver *drv = bs->drv;    bs->locked = locked;    if (drv && drv->bdrv_set_locked) {        drv->bdrv_set_locked(bs, locked);    }}/* needed for generic scsi interface */int bdrv_ioctl(BlockDriverState *bs, unsigned long int req, void *buf){    BlockDriver *drv = bs->drv;    if (drv && drv->bdrv_ioctl)        return drv->bdrv_ioctl(bs, req, buf);    return -ENOTSUP;}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女脱光内衣内裤视频久久网站| 亚洲少妇屁股交4| 色狠狠av一区二区三区| 国产精品一二三四| 国产中文一区二区三区| 久久97超碰国产精品超碰| 久久精品999| 黄页网站大全一区二区| 国产美女精品在线| 国产精品小仙女| 成人精品视频一区| 一本高清dvd不卡在线观看| 一本在线高清不卡dvd| 欧美午夜精品理论片a级按摩| 色老汉av一区二区三区| 欧美午夜不卡在线观看免费| 欧美精品一级二级| 精品久久国产97色综合| 国产日韩av一区| 亚洲色图欧美在线| 午夜国产精品一区| 捆绑调教一区二区三区| 国产suv精品一区二区6| 99精品视频在线观看免费| 在线观看区一区二| 欧美成人一区二区三区在线观看 | 成人美女视频在线观看| 风间由美一区二区av101| 99视频精品免费视频| 欧美日韩亚洲丝袜制服| 久久综合九色综合97婷婷 | 一本高清dvd不卡在线观看| 欧美三级视频在线观看| 久久视频一区二区| 亚洲在线视频一区| 成人免费视频免费观看| 欧美日韩国产首页| 欧美激情一区二区三区不卡| 亚洲mv在线观看| 粉嫩绯色av一区二区在线观看| 色一情一乱一乱一91av| 精品成人a区在线观看| 一区二区视频在线| 国产精品一区二区久久精品爱涩| 91猫先生在线| 久久久精品国产免大香伊| 亚洲一级二级三级| 9色porny自拍视频一区二区| 日韩三级免费观看| 亚洲第一精品在线| 91蜜桃传媒精品久久久一区二区| 欧美精品一区二区三区高清aⅴ | 中文字幕日韩av资源站| 久久电影网电视剧免费观看| 一本大道久久a久久精品综合| 久久综合九色综合97婷婷女人| 亚洲国产成人va在线观看天堂| 国产精品一级二级三级| 精品国产凹凸成av人网站| 五月婷婷久久丁香| 在线观看中文字幕不卡| 中文字幕一区在线观看视频| 国产真实乱偷精品视频免| 91麻豆精品国产91久久久资源速度 | 欧洲av在线精品| 国产精品视频九色porn| 国产剧情一区在线| 欧美岛国在线观看| 日韩电影在线一区二区三区| 91久久精品一区二区二区| 1024精品合集| 99久久精品国产一区二区三区| 国产情人综合久久777777| 韩国成人在线视频| 精品国产乱码久久久久久闺蜜| 麻豆91小视频| 精品国产91洋老外米糕| 狠狠色狠狠色综合系列| 久久久噜噜噜久久人人看| 国产综合成人久久大片91| 精品国产露脸精彩对白| 国产真实乱对白精彩久久| 国产日韩欧美综合一区| 不卡av在线免费观看| 亚洲人妖av一区二区| 一本大道av一区二区在线播放| 亚洲乱码中文字幕综合| 欧美日韩极品在线观看一区| 日韩精品欧美精品| 久久综合色8888| zzijzzij亚洲日本少妇熟睡| 亚洲乱码精品一二三四区日韩在线| 91黄色在线观看| 日韩中文字幕区一区有砖一区 | 成人性生交大片免费看中文| 国产精品福利一区| 欧美日韩美女一区二区| 麻豆久久一区二区| 最新不卡av在线| 91麻豆精品国产91久久久久久久久 | 免费高清在线一区| 国产视频视频一区| 色999日韩国产欧美一区二区| 日韩中文字幕亚洲一区二区va在线 | 日韩欧美你懂的| 成人国产精品免费观看视频| 亚洲一级二级三级在线免费观看| 欧美电影免费提供在线观看| 99re这里只有精品视频首页| 午夜天堂影视香蕉久久| 国产三级精品在线| 欧美三区在线视频| 成人性视频免费网站| 秋霞av亚洲一区二区三| 国产精品久久久久婷婷二区次| 7777女厕盗摄久久久| caoporm超碰国产精品| 日韩av中文在线观看| 亚洲欧洲国产专区| 久久综合五月天婷婷伊人| 欧美性欧美巨大黑白大战| 丁香激情综合五月| 日本视频一区二区| 亚洲欧美另类在线| 国产精品欧美综合在线| 欧美va亚洲va香蕉在线| 欧美日韩一级黄| 99精品桃花视频在线观看| 国产精品系列在线观看| 亚洲人被黑人高潮完整版| 久久久精品一品道一区| 日韩一级片在线播放| 欧美在线不卡视频| 99久久精品国产毛片| 国产经典欧美精品| 激情小说亚洲一区| 日本特黄久久久高潮| 亚洲va韩国va欧美va| 亚洲午夜电影在线观看| 成人免费一区二区三区视频 | 在线看国产一区二区| 成人免费视频一区| 国产宾馆实践打屁股91| 国内一区二区在线| 激情六月婷婷久久| 精品午夜久久福利影院 | 丁香婷婷综合激情五月色| 经典一区二区三区| 精品一区二区在线播放| 久久精品免费观看| 久久国产精品99久久人人澡| 青青草国产成人99久久| 日本不卡123| 另类小说色综合网站| 麻豆精品新av中文字幕| 久久精品国产色蜜蜜麻豆| 精品一区二区日韩| 国产精品白丝jk黑袜喷水| 国产成人av电影免费在线观看| 国产高清在线观看免费不卡| 高清在线观看日韩| 97se狠狠狠综合亚洲狠狠| 97久久精品人人爽人人爽蜜臀| 色综合久久中文字幕综合网 | 精品国产亚洲一区二区三区在线观看| 欧美一级免费观看| 精品国产99国产精品| 中文字幕免费观看一区| 亚洲欧洲日韩一区二区三区| 亚洲综合在线免费观看| 日日夜夜精品视频免费| 国产精品资源在线| 色综合中文综合网| 欧美色爱综合网| 日韩美女视频在线| 国产精品水嫩水嫩| 亚洲午夜电影在线| 国产麻豆日韩欧美久久| 91网站在线观看视频| 6080国产精品一区二区| 久久精品夜色噜噜亚洲a∨| 自拍av一区二区三区| 五月天久久比比资源色| 国产一区二区在线视频| 色婷婷国产精品久久包臀| 3atv一区二区三区| 国产精品久久久久久久第一福利 | 日产精品久久久久久久性色| 国产一区在线精品| 在线亚洲免费视频| 精品国产一区二区三区不卡 | 国内精品伊人久久久久影院对白| 大桥未久av一区二区三区中文| 欧美伊人久久久久久久久影院 | 欧美最新大片在线看 | 69堂亚洲精品首页| 综合自拍亚洲综合图不卡区| 美女视频一区二区三区| 99热在这里有精品免费| 日韩免费福利电影在线观看|