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

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

?? usb-msd.c

?? QEMU 0.91 source code, supports ARM processor including S3C24xx series
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
            case 0:                /* language ids */                data[0] = 4;                data[1] = 3;                data[2] = 0x09;                data[3] = 0x04;                ret = 4;                break;            case 1:                /* vendor description */                ret = set_usb_string(data, "QEMU " QEMU_VERSION);                break;            case 2:                /* product description */                ret = set_usb_string(data, "QEMU USB HARDDRIVE");                break;            case 3:                /* serial number */                ret = set_usb_string(data, "1");                break;            default:                goto fail;            }            break;        default:            goto fail;        }        break;    case DeviceRequest | USB_REQ_GET_CONFIGURATION:        data[0] = 1;        ret = 1;        break;    case DeviceOutRequest | USB_REQ_SET_CONFIGURATION:        ret = 0;        break;    case DeviceRequest | USB_REQ_GET_INTERFACE:        data[0] = 0;        ret = 1;        break;    case DeviceOutRequest | USB_REQ_SET_INTERFACE:        ret = 0;        break;    case EndpointOutRequest | USB_REQ_CLEAR_FEATURE:        if (value == 0 && index != 0x81) { /* clear ep halt */            goto fail;        }        ret = 0;        break;        /* Class specific requests.  */    case MassStorageReset:        /* Reset state ready for the next CBW.  */        s->mode = USB_MSDM_CBW;        ret = 0;        break;    case GetMaxLun:        data[0] = 0;        ret = 1;        break;    default:    fail:        ret = USB_RET_STALL;        break;    }    return ret;}static void usb_msd_cancel_io(USBPacket *p, void *opaque){    MSDState *s = opaque;    s->scsi_dev->cancel_io(s->scsi_dev, s->tag);    s->packet = NULL;    s->scsi_len = 0;}static int usb_msd_handle_data(USBDevice *dev, USBPacket *p){    MSDState *s = (MSDState *)dev;    int ret = 0;    struct usb_msd_cbw cbw;    uint8_t devep = p->devep;    uint8_t *data = p->data;    int len = p->len;    switch (p->pid) {    case USB_TOKEN_OUT:        if (devep != 2)            goto fail;        switch (s->mode) {        case USB_MSDM_CBW:            if (len != 31) {                fprintf(stderr, "usb-msd: Bad CBW size");                goto fail;            }            memcpy(&cbw, data, 31);            if (le32_to_cpu(cbw.sig) != 0x43425355) {                fprintf(stderr, "usb-msd: Bad signature %08x\n",                        le32_to_cpu(cbw.sig));                goto fail;            }            DPRINTF("Command on LUN %d\n", cbw.lun);            if (cbw.lun != 0) {                fprintf(stderr, "usb-msd: Bad LUN %d\n", cbw.lun);                goto fail;            }            s->tag = le32_to_cpu(cbw.tag);            s->data_len = le32_to_cpu(cbw.data_len);            if (s->data_len == 0) {                s->mode = USB_MSDM_CSW;            } else if (cbw.flags & 0x80) {                s->mode = USB_MSDM_DATAIN;            } else {                s->mode = USB_MSDM_DATAOUT;            }            DPRINTF("Command tag 0x%x flags %08x len %d data %d\n",                    s->tag, cbw.flags, cbw.cmd_len, s->data_len);            s->residue = 0;            s->scsi_dev->send_command(s->scsi_dev, s->tag, cbw.cmd, 0);            /* ??? Should check that USB and SCSI data transfer               directions match.  */            if (s->residue == 0) {                if (s->mode == USB_MSDM_DATAIN) {                    s->scsi_dev->read_data(s->scsi_dev, s->tag);                } else if (s->mode == USB_MSDM_DATAOUT) {                    s->scsi_dev->write_data(s->scsi_dev, s->tag);                }            }            ret = len;            break;        case USB_MSDM_DATAOUT:            DPRINTF("Data out %d/%d\n", len, s->data_len);            if (len > s->data_len)                goto fail;            s->usb_buf = data;            s->usb_len = len;            if (s->scsi_len) {                usb_msd_copy_data(s);            }            if (s->residue && s->usb_len) {                s->data_len -= s->usb_len;                if (s->data_len == 0)                    s->mode = USB_MSDM_CSW;                s->usb_len = 0;            }            if (s->usb_len) {                DPRINTF("Deferring packet %p\n", p);                usb_defer_packet(p, usb_msd_cancel_io, s);                s->packet = p;                ret = USB_RET_ASYNC;            } else {                ret = len;            }            break;        default:            DPRINTF("Unexpected write (len %d)\n", len);            goto fail;        }        break;    case USB_TOKEN_IN:        if (devep != 1)            goto fail;        switch (s->mode) {        case USB_MSDM_DATAOUT:            if (s->data_len != 0 || len < 13)                goto fail;            /* Waiting for SCSI write to complete.  */            usb_defer_packet(p, usb_msd_cancel_io, s);            s->packet = p;            ret = USB_RET_ASYNC;            break;        case USB_MSDM_CSW:            DPRINTF("Command status %d tag 0x%x, len %d\n",                    s->result, s->tag, len);            if (len < 13)                goto fail;            s->usb_len = len;            s->usb_buf = data;            usb_msd_send_status(s);            s->mode = USB_MSDM_CBW;            ret = 13;            break;        case USB_MSDM_DATAIN:            DPRINTF("Data in %d/%d\n", len, s->data_len);            if (len > s->data_len)                len = s->data_len;            s->usb_buf = data;            s->usb_len = len;            if (s->scsi_len) {                usb_msd_copy_data(s);            }            if (s->residue && s->usb_len) {                s->data_len -= s->usb_len;                memset(s->usb_buf, 0, s->usb_len);                if (s->data_len == 0)                    s->mode = USB_MSDM_CSW;                s->usb_len = 0;            }            if (s->usb_len) {                DPRINTF("Deferring packet %p\n", p);                usb_defer_packet(p, usb_msd_cancel_io, s);                s->packet = p;                ret = USB_RET_ASYNC;            } else {                ret = len;            }            break;        default:            DPRINTF("Unexpected read (len %d)\n", len);            goto fail;        }        break;    default:        DPRINTF("Bad token\n");    fail:        ret = USB_RET_STALL;        break;    }    return ret;}static void usb_msd_handle_destroy(USBDevice *dev){    MSDState *s = (MSDState *)dev;    s->scsi_dev->destroy(s->scsi_dev);    bdrv_delete(s->bs);    qemu_free(s);}USBDevice *usb_msd_init(const char *filename){    MSDState *s;    BlockDriverState *bdrv;    s = qemu_mallocz(sizeof(MSDState));    if (!s)        return NULL;    bdrv = bdrv_new("usb");    if (bdrv_open(bdrv, filename, 0) < 0)        goto fail;    if (qemu_key_check(bdrv, filename))        goto fail;    s->bs = bdrv;    s->dev.speed = USB_SPEED_FULL;    s->dev.handle_packet = usb_generic_handle_packet;    s->dev.handle_reset = usb_msd_handle_reset;    s->dev.handle_control = usb_msd_handle_control;    s->dev.handle_data = usb_msd_handle_data;    s->dev.handle_destroy = usb_msd_handle_destroy;    snprintf(s->dev.devname, sizeof(s->dev.devname), "QEMU USB MSD(%.16s)",             filename);    s->scsi_dev = scsi_disk_init(bdrv, 0, usb_msd_command_complete, s);    usb_msd_handle_reset((USBDevice *)s);    return (USBDevice *)s; fail:    qemu_free(s);    return NULL;}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一区二区三区在线不卡| 成人短视频下载| 91精品国产aⅴ一区二区| 丝袜美腿亚洲综合| 日韩三级视频中文字幕| 国产精品1区二区.| 成人欧美一区二区三区在线播放| 不卡的电影网站| 国产成人av影院| 亚洲国产裸拍裸体视频在线观看乱了 | 欧美另类久久久品| 另类专区欧美蜜桃臀第一页| 中文字幕精品一区二区精品绿巨人| 99精品国产91久久久久久 | 91麻豆免费观看| 日韩av网站免费在线| 国产精品亲子伦对白| 欧美丰满少妇xxxxx高潮对白| 欧美性大战久久| 国产一区二区在线电影| 亚洲蜜臀av乱码久久精品蜜桃| 日韩三级视频在线看| 精品国产免费人成电影在线观看四季 | 亚洲电影视频在线| 中文字幕免费不卡| 亚洲欧美福利一区二区| 亚洲一区二区三区四区的| 国产精品久久久久久久久免费丝袜 | 欧美日韩美少妇 | 久久久久久一级片| 欧美午夜精品一区二区蜜桃| 欧美日韩不卡一区| 欧美不卡一二三| 欧美猛男超大videosgay| 欧美日韩高清影院| 精品少妇一区二区三区免费观看| 久久久久国色av免费看影院| 国产精品久久久久久久久果冻传媒 | 美美哒免费高清在线观看视频一区二区| 一区二区三区在线观看欧美| 日韩不卡免费视频| 国产成人精品免费视频网站| 色美美综合视频| 99久久综合精品| 成人综合在线观看| 国产成人精品一区二区三区四区| 91在线精品一区二区三区| 欧美日韩成人综合在线一区二区| 2欧美一区二区三区在线观看视频| 欧美精品 日韩| 国产欧美精品一区| 国产欧美日韩另类一区| 亚洲影视在线播放| 久久国产尿小便嘘嘘| 91香蕉视频在线| 精品蜜桃在线看| 亚洲欧美偷拍卡通变态| 蜜臀久久99精品久久久久宅男 | 久久精品亚洲一区二区三区浴池| 欧美xingq一区二区| 1区2区3区欧美| 久久疯狂做爰流白浆xx| 色综合 综合色| 色综合久久久久网| 久久午夜色播影院免费高清| 亚洲一区二区视频在线| 国产成a人亚洲精| 成人黄色在线看| 日韩一区二区三区三四区视频在线观看 | www.欧美色图| 日韩写真欧美这视频| 亚洲卡通欧美制服中文| 亚洲高清在线视频| 成人黄色免费短视频| 精品国产区一区| 日本女人一区二区三区| 色香蕉久久蜜桃| 国产精品色在线观看| 久久电影网电视剧免费观看| 欧美日韩免费高清一区色橹橹| 欧美三日本三级三级在线播放| 欧美国产一区二区| 激情成人午夜视频| 91丨国产丨九色丨pron| 久久精品综合网| 国产在线视频一区二区三区| 欧美一区二区福利视频| 亚洲成人中文在线| 在线精品视频免费观看| 日韩欧美国产精品| 国产精品美女久久久久久| 精品一区二区在线视频| 99re66热这里只有精品3直播| 久久女同精品一区二区| 久久精品国产99国产| 欧美精品久久一区| 亚洲影视在线观看| 欧美视频在线一区| 亚洲福利一区二区三区| 在线观看亚洲成人| 一区二区在线观看不卡| 91麻豆精品秘密| 亚洲免费观看高清完整版在线观看熊| 成人aaaa免费全部观看| 国产精品嫩草久久久久| 国产91精品入口| 中文幕一区二区三区久久蜜桃| 国产一区二区三区av电影| 26uuu久久天堂性欧美| 狠狠色狠狠色综合系列| 精品卡一卡二卡三卡四在线| 久久精品国产77777蜜臀| 日韩视频国产视频| 久久99日本精品| 精品国产乱码久久| 国产精品亚洲а∨天堂免在线| 欧美zozozo| 国产成人免费av在线| 国产精品久久久久久久久果冻传媒| www.日本不卡| 亚洲电影激情视频网站| 91精品国产综合久久精品| 另类中文字幕网| 国产亚洲精品aa| 99久久综合狠狠综合久久| 亚洲欧美日韩国产综合| 欧美日韩一区二区电影| 蜜臀av国产精品久久久久| 久久久国产精华| 亚洲线精品一区二区三区八戒| 欧洲av一区二区嗯嗯嗯啊| 亚洲美女免费在线| 欧美日韩在线综合| 免费人成在线不卡| 99免费精品在线观看| 一区二区三区国产精品| 91麻豆精品国产无毒不卡在线观看| 亚洲欧美日韩中文字幕一区二区三区| 91视频国产观看| 日本伊人精品一区二区三区观看方式| 欧美大片拔萝卜| www.久久精品| 午夜电影一区二区三区| 在线观看网站黄不卡| 全国精品久久少妇| 国产精品天美传媒沈樵| 欧美在线你懂的| 毛片av中文字幕一区二区| 国产精品女上位| 欧美日韩欧美一区二区| 国产精品一二三四五| 亚洲黄色免费电影| 日韩精品中午字幕| 91丨porny丨蝌蚪视频| 蜜桃视频一区二区三区| 亚洲欧洲三级电影| 日韩天堂在线观看| 99re免费视频精品全部| 色综合久久88色综合天天6| 亚洲国产精品ⅴa在线观看| 国产一区二区三区免费在线观看 | 日本一区二区在线不卡| 欧美性大战久久久| 高清beeg欧美| 日韩成人伦理电影在线观看| 国产精品色婷婷久久58| 91精品婷婷国产综合久久竹菊| 成人91在线观看| 久久99精品久久久| 亚洲国产欧美另类丝袜| 国产精品高潮呻吟久久| 精品剧情在线观看| 欧美一a一片一级一片| 成人亚洲一区二区一| 麻豆一区二区99久久久久| 一区二区在线电影| 国产精品女上位| 国产亚洲福利社区一区| 91精品国产入口| 欧美亚洲动漫另类| 波多野结衣中文字幕一区二区三区| 玖玖九九国产精品| 天天综合网天天综合色| 伊人一区二区三区| 最新国产精品久久精品| 国产91对白在线观看九色| 日本亚洲欧美天堂免费| 玉米视频成人免费看| 欧美国产成人精品| 久久婷婷色综合| 欧美大胆人体bbbb| 欧美一区二区三区的| 欧美电影一区二区三区| 91福利国产成人精品照片| av中文字幕不卡| 成人性色生活片| 成人一区在线看| 国产成a人亚洲精品| 国产精品综合网| 国产呦精品一区二区三区网站|