本文整理汇总了C++中qemu_get_buffer函数的典型用法代码示例。如果您正苦于以下问题:C++ qemu_get_buffer函数的具体用法?C++ qemu_get_buffer怎么用?C++ qemu_get_buffer使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了qemu_get_buffer函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。
示例1: tcx_load
static int tcx_load(QEMUFile *f, void *opaque, int version_id)
{
TCXState *s = opaque;
uint32_t dummy;
if (version_id != 3 && version_id != 4)
return -EINVAL;
if (version_id == 3) {
qemu_get_be32s(f, &dummy);
qemu_get_be32s(f, &dummy);
qemu_get_be32s(f, &dummy);
}
qemu_get_be16s(f, &s->height);
qemu_get_be16s(f, &s->width);
qemu_get_be16s(f, &s->depth);
qemu_get_buffer(f, s->r, 256);
qemu_get_buffer(f, s->g, 256);
qemu_get_buffer(f, s->b, 256);
qemu_get_8s(f, &s->dac_index);
qemu_get_8s(f, &s->dac_state);
update_palette_entries(s, 0, 256);
if (s->depth == 24)
tcx24_invalidate_display(s);
else
tcx_invalidate_display(s);
return 0;
}
开发者ID:BackupTheBerlios,项目名称:ar7-firmware-svn,代码行数:29,代码来源:tcx.c
示例2: smc91c111_load
static int smc91c111_load(QEMUFile *f, void *opaque, int version_id)
{
smc91c111_state *s = opaque;
if (version_id != SMC91C111_SAVE_VERSION) {
return -1;
}
s->tcr = qemu_get_be16(f);
s->rcr = qemu_get_be16(f);
s->cr = qemu_get_be16(f);
s->ctr = qemu_get_be16(f);
s->gpr = qemu_get_be16(f);
s->ptr = qemu_get_be16(f);
s->ercv = qemu_get_be16(f);
s->bank = qemu_get_be32(f);
s->packet_num = qemu_get_be32(f);
s->tx_alloc = qemu_get_be32(f);
s->allocated = qemu_get_be32(f);
s->tx_fifo_len = qemu_get_be32(f);
qemu_get_buffer(f, (uint8_t*) s->tx_fifo, sizeof(s->tx_fifo));
s->rx_fifo_len = qemu_get_be32(f);
qemu_get_buffer(f, (uint8_t*) s->rx_fifo, sizeof(s->rx_fifo));
s->tx_fifo_done_len = qemu_get_be32(f);
qemu_get_buffer(f, (uint8_t*) s->tx_fifo_done, sizeof(s->tx_fifo_done));
/* Packet buffer memory. */
qemu_get_buffer(f, (uint8_t*) s->data, sizeof(s->data));
s->int_level = qemu_get_byte(f);
s->int_mask = qemu_get_byte(f);
return 0;
}
开发者ID:ecit241,项目名称:qemu-android,代码行数:35,代码来源:smc91c111.c
示例3: msix_load
/* Should be called after restoring the config space. */
void msix_load(PCIDevice *dev, QEMUFile *f)
{
unsigned n = dev->msix_entries_nr;
if (!(dev->cap_present & QEMU_PCI_CAP_MSIX)) {
return;
}
msix_free_irq_entries(dev);
qemu_get_buffer(f, dev->msix_table_page, n * MSIX_ENTRY_SIZE);
qemu_get_buffer(f, dev->msix_table_page + MSIX_PAGE_PENDING, (n + 7) / 8);
}
开发者ID:dariaphoebe,项目名称:qemu,代码行数:13,代码来源:msix.c
示例4: get_buffer
static int get_buffer(QEMUFile *f, void *pv, size_t size,
VMStateField *field)
{
uint8_t *v = pv;
qemu_get_buffer(f, v, size);
return 0;
}
开发者ID:mmuman,项目名称:qemu,代码行数:7,代码来源:vmstate.c
示例5: qemu_mallocz
/* Initialisation routine */
void *ds1225y_init(target_phys_addr_t mem_base, const char *filename)
{
ds1225y_t *s;
int mem_indexRW, mem_indexRP;
QEMUFile *file;
s = qemu_mallocz(sizeof(ds1225y_t));
s->chip_size = 0x2000; /* Fixed for ds1225y chip: 8 KiB */
s->contents = qemu_mallocz(s->chip_size);
s->protection = 7;
/* Read current file */
file = qemu_fopen(filename, "rb");
if (file) {
/* Read nvram contents */
qemu_get_buffer(file, s->contents, s->chip_size);
qemu_fclose(file);
}
s->file = qemu_fopen(filename, "wb");
if (s->file) {
/* Write back contents, as 'wb' mode cleaned the file */
qemu_put_buffer(s->file, s->contents, s->chip_size);
qemu_fflush(s->file);
}
/* Read/write memory */
mem_indexRW = cpu_register_io_memory(nvram_read, nvram_write, s);
cpu_register_physical_memory(mem_base, s->chip_size, mem_indexRW);
/* Read/write protected memory */
mem_indexRP = cpu_register_io_memory(nvram_read, nvram_write_protected, s);
cpu_register_physical_memory(mem_base + s->chip_size, s->chip_size, mem_indexRP);
return s;
}
开发者ID:ESOS-Lab,项目名称:VSSIM,代码行数:34,代码来源:ds1225y.c
示例6: rtc_load
static int rtc_load(QEMUFile *f, void *opaque, int version_id)
{
RTCState *s = opaque;
if (version_id != 1)
return -EINVAL;
qemu_get_buffer(f, s->cmos_data, 128);
qemu_get_8s(f, &s->cmos_index);
s->current_tm.tm_sec=qemu_get_be32(f);
s->current_tm.tm_min=qemu_get_be32(f);
s->current_tm.tm_hour=qemu_get_be32(f);
s->current_tm.tm_wday=qemu_get_be32(f);
s->current_tm.tm_mday=qemu_get_be32(f);
s->current_tm.tm_mon=qemu_get_be32(f);
s->current_tm.tm_year=qemu_get_be32(f);
qemu_get_timer(f, s->periodic_timer);
s->next_periodic_time=qemu_get_be64(f);
s->next_second_time=qemu_get_be64(f);
qemu_get_timer(f, s->second_timer);
qemu_get_timer(f, s->second_timer2);
return 0;
}
开发者ID:ddk50,项目名称:ibkvm,代码行数:26,代码来源:mc146818rtc.c
示例7: virtio_blk_load
static int virtio_blk_load(QEMUFile *f, void *opaque, int version_id)
{
VirtIOBlock *s = opaque;
int ret;
if (version_id != 2)
return -EINVAL;
ret = virtio_load(&s->vdev, f);
if (ret) {
return ret;
}
while (qemu_get_sbyte(f)) {
VirtIOBlockReq *req = virtio_blk_alloc_request(s);
qemu_get_buffer(f, (unsigned char*)&req->elem, sizeof(req->elem));
req->next = s->rq;
s->rq = req;
virtqueue_map_sg(req->elem.in_sg, req->elem.in_addr,
req->elem.in_num, 1);
virtqueue_map_sg(req->elem.out_sg, req->elem.out_addr,
req->elem.out_num, 0);
}
return 0;
}
开发者ID:MrPavel3243,项目名称:limbo-android,代码行数:27,代码来源:virtio-blk.c
示例8: s390_storage_keys_load
static int s390_storage_keys_load(QEMUFile *f, void *opaque, int version_id)
{
S390SKeysState *ss = S390_SKEYS(opaque);
S390SKeysClass *skeyclass = S390_SKEYS_GET_CLASS(ss);
int ret = 0;
while (!ret) {
ram_addr_t addr;
int flags;
addr = qemu_get_be64(f);
flags = addr & ~TARGET_PAGE_MASK;
addr &= TARGET_PAGE_MASK;
switch (flags) {
case S390_SKEYS_SAVE_FLAG_SKEYS: {
const uint64_t total_count = qemu_get_be64(f);
uint64_t handled_count = 0, cur_count;
uint64_t cur_gfn = addr / TARGET_PAGE_SIZE;
uint8_t *buf = g_try_malloc(S390_SKEYS_BUFFER_SIZE);
if (!buf) {
error_report("storage key load could not allocate memory\n");
ret = -ENOMEM;
break;
}
while (handled_count < total_count) {
cur_count = MIN(total_count - handled_count,
S390_SKEYS_BUFFER_SIZE);
qemu_get_buffer(f, buf, cur_count);
ret = skeyclass->set_skeys(ss, cur_gfn, cur_count, buf);
if (ret < 0) {
error_report("S390_SET_KEYS error %d\n", ret);
break;
}
handled_count += cur_count;
cur_gfn += cur_count;
}
g_free(buf);
break;
}
case S390_SKEYS_SAVE_FLAG_ERROR: {
error_report("Storage key data is incomplete");
ret = -EINVAL;
break;
}
case S390_SKEYS_SAVE_FLAG_EOS:
/* normal exit */
return 0;
default:
error_report("Unexpected storage key flag data: %#x", flags);
ret = -EINVAL;
}
}
return ret;
}
开发者ID:32bitmicro,项目名称:riscv-qemu,代码行数:59,代码来源:s390-skeys.c
示例9: ps2_common_load
static void ps2_common_load (QEMUFile *f, PS2State *s)
{
qemu_get_be32s (f, &s->write_cmd);
qemu_get_be32s (f, &s->queue.rptr);
qemu_get_be32s (f, &s->queue.wptr);
qemu_get_be32s (f, &s->queue.count);
qemu_get_buffer (f, s->queue.data, sizeof (s->queue.data));
}
开发者ID:hackndev,项目名称:qemu,代码行数:8,代码来源:ps2.c
示例10: ps2_common_load
static void ps2_common_load (QEMUFile *f, PS2State *s)
{
s->write_cmd=qemu_get_be32 (f);
s->queue.rptr=qemu_get_be32 (f);
s->queue.wptr=qemu_get_be32 (f);
s->queue.count=qemu_get_be32 (f);
qemu_get_buffer (f, s->queue.data, sizeof (s->queue.data));
}
开发者ID:SymbianSource,项目名称:oss.FCL.interim.QEMU,代码行数:8,代码来源:ps2.c
示例11: cmma_load
static int cmma_load(QEMUFile *f, void *opaque, int version_id)
{
S390StAttribState *sas = S390_STATTRIB(opaque);
S390StAttribClass *sac = S390_STATTRIB_GET_CLASS(sas);
uint64_t count, cur_gfn;
int flags, ret = 0;
ram_addr_t addr;
uint8_t *buf;
while (!ret) {
addr = qemu_get_be64(f);
flags = addr & ~TARGET_PAGE_MASK;
addr &= TARGET_PAGE_MASK;
switch (flags) {
case STATTR_FLAG_MORE: {
cur_gfn = addr / TARGET_PAGE_SIZE;
count = qemu_get_be64(f);
buf = g_try_malloc(count);
if (!buf) {
error_report("cmma_load could not allocate memory");
ret = -ENOMEM;
break;
}
qemu_get_buffer(f, buf, count);
ret = sac->set_stattr(sas, cur_gfn, count, buf);
if (ret < 0) {
error_report("Error %d while setting storage attributes", ret);
}
g_free(buf);
break;
}
case STATTR_FLAG_ERROR: {
error_report("Storage attributes data is incomplete");
ret = -EINVAL;
break;
}
case STATTR_FLAG_DONE:
/* This is after the last pre-copied value has been sent, nothing
* more will be sent after this. Pre-copy has finished, and we
* are done flushing all the remaining values. Now the target
* system is about to take over. We synchronize the buffer to
* apply the actual correct values where needed.
*/
sac->synchronize(sas);
break;
case STATTR_FLAG_EOS:
/* Normal exit */
return 0;
default:
error_report("Unexpected storage attribute flag data: %#x", flags);
ret = -EINVAL;
}
}
return ret;
}
开发者ID:Biamp-Systems,项目名称:mb-qemu,代码行数:58,代码来源:s390-stattrib.c
示例12: msix_load
/* Should be called after restoring the config space. */
void msix_load(PCIDevice *dev, QEMUFile *f)
{
unsigned n = dev->msix_entries_nr;
unsigned int vector;
if (!msix_present(dev)) {
return;
}
msix_clear_all_vectors(dev);
qemu_get_buffer(f, dev->msix_table, n * PCI_MSIX_ENTRY_SIZE);
qemu_get_buffer(f, dev->msix_pba, (n + 7) / 8);
msix_update_function_masked(dev);
for (vector = 0; vector < n; vector++) {
msix_handle_mask_update(dev, vector, true);
}
}
开发者ID:anshulmakkar,项目名称:vhost_user,代码行数:19,代码来源:msix.c
示例13: goldfish_audio_buff_get
static void
goldfish_audio_buff_get( struct goldfish_audio_buff* b, QEMUFile* f )
{
b->address = qemu_get_be32(f);
b->length = qemu_get_be32(f);
b->offset = qemu_get_be32(f);
goldfish_audio_buff_ensure(b, b->length);
qemu_get_buffer(f, b->data, b->length);
}
开发者ID:0-14N,项目名称:NDroid,代码行数:9,代码来源:goldfish_audio.c
示例14: mipsnet_load
static int mipsnet_load(QEMUFile *f, void *opaque, int version_id)
{
MIPSnetState *s = opaque;
if (version_id > 0)
return -EINVAL;
qemu_get_be32s(f, &s->busy);
qemu_get_be32s(f, &s->rx_count);
qemu_get_be32s(f, &s->rx_read);
qemu_get_be32s(f, &s->tx_count);
qemu_get_be32s(f, &s->tx_written);
qemu_get_be32s(f, &s->intctl);
qemu_get_buffer(f, s->rx_buffer, MAX_ETH_FRAME_SIZE);
qemu_get_buffer(f, s->tx_buffer, MAX_ETH_FRAME_SIZE);
return 0;
}
开发者ID:SymbianSource,项目名称:oss.FCL.interim.QEMU,代码行数:18,代码来源:mipsnet.c
示例15: scsi_generic_load_request
static void scsi_generic_load_request(QEMUFile *f, SCSIRequest *req)
{
SCSIGenericReq *r = DO_UPCAST(SCSIGenericReq, req, req);
qemu_get_sbe32s(f, &r->buflen);
if (r->buflen && r->req.cmd.mode == SCSI_XFER_TO_DEV) {
assert(!r->req.sg);
qemu_get_buffer(f, r->buf, r->req.cmd.xfer);
}
}
开发者ID:AdrianHuang,项目名称:qemu,代码行数:10,代码来源:scsi-generic.c
示例16: slavio_serial_load_chn
static int slavio_serial_load_chn(QEMUFile *f, ChannelState *s, int version_id)
{
if (version_id > 2)
return -EINVAL;
qemu_get_be32s(f, &s->irq);
qemu_get_be32s(f, &s->reg);
qemu_get_be32s(f, &s->rxint);
qemu_get_be32s(f, &s->txint);
if (version_id >= 2) {
qemu_get_be32s(f, &s->rxint_under_svc);
qemu_get_be32s(f, &s->txint_under_svc);
}
qemu_get_8s(f, &s->rx);
qemu_get_8s(f, &s->tx);
qemu_get_buffer(f, s->wregs, 16);
qemu_get_buffer(f, s->rregs, 16);
return 0;
}
开发者ID:AmesianX,项目名称:winkvm,代码行数:19,代码来源:slavio_serial.c
示例17: boot_property_load_property
/* Loads a single boot property from a snapshot file
*/
static int
boot_property_load_property( QEMUFile *f )
{
int ret;
/* load key */
uint32_t key_buf_len = qemu_get_be32(f);
char* key = android_alloc(key_buf_len);
if ((ret = qemu_get_buffer(f, (uint8_t*)key, key_buf_len) != (int)key_buf_len)) {
D("%s: key load failed: expected %d bytes, got %d\n",
__FUNCTION__, key_buf_len, ret);
goto fail_key;
}
/* load value */
uint32_t value_buf_len = qemu_get_be32(f);
char* value = android_alloc(value_buf_len);
if ((ret = qemu_get_buffer(f, (uint8_t*)value, value_buf_len) != (int)value_buf_len)) {
D("%s: value load failed: expected %d bytes, got %d\n",
__FUNCTION__, value_buf_len, ret);
goto fail_value;
}
/* add the property */
ret = boot_property_add2(key, key_buf_len - 1, value, value_buf_len - 1);
if (ret < 0) {
D("%s: load failed: cannot add boot property (details follow)\n",
__FUNCTION__);
boot_property_raise_warning(ret, key, key_buf_len - 1, value, value_buf_len - 1);
goto fail_value;
}
return 0;
/* in case of errors, clean up before return */
fail_value:
AFREE(value);
fail_key:
AFREE(key);
return -EIO;
}
开发者ID:Dorahe,项目名称:platform_external_qemu,代码行数:43,代码来源:boot-properties.c
示例18: rtc_load
static int rtc_load(QEMUFile *f, void *opaque, int version_id)
{
RTCState *s = opaque;
if (version_id != 1)
return -EINVAL;
qemu_get_buffer(f, s->cmos_data, 128);
qemu_get_8s(f, &s->cmos_index);
return 0;
}
开发者ID:CPFL,项目名称:gxen,代码行数:12,代码来源:rtc-dm.c
示例19: generic_usb_load
int generic_usb_load(QEMUFile* f, void *opaque, int version_id)
{
USBDevice *s = (USBDevice*)opaque;
if (version_id != 1)
return -EINVAL;
qemu_get_be32s(f, &s->speed);
qemu_get_8s(f, &s->addr);
qemu_get_be32s(f, &s->state);
qemu_get_buffer(f, s->setup_buf, 8);
qemu_get_buffer(f, s->data_buf, 1024);
qemu_get_be32s(f, &s->remote_wakeup);
qemu_get_be32s(f, &s->setup_state);
qemu_get_be32s(f, &s->setup_len);
qemu_get_be32s(f, &s->setup_index);
return 0;
}
开发者ID:B-Rich,项目名称:afterburner,代码行数:21,代码来源:usb.c
示例20: nand_dev_load_disk_state
/**
* Overwrites the contents of the disk image managed by this device with the
* contents as they were at the point the snapshot was made.
*/
static int nand_dev_load_disk_state(QEMUFile *f, nand_dev *dev)
{
#ifndef ANDROID_QCOW
int buf_size = NAND_DEV_SAVE_DISK_BUF_SIZE;
uint8_t buffer[NAND_DEV_SAVE_DISK_BUF_SIZE] = {0};
int ret;
/* File size for restore and truncate */
uint64_t total_size = qemu_get_be64(f);
if (total_size > dev->max_size) {
XLOG("%s, restore failed: size required (%lld) exceeds device limit (%lld)\n",
__FUNCTION__, total_size, dev->max_size);
return -EIO;
}
/* overwrite disk contents with snapshot contents */
uint64_t next_offset = 0;
ret = do_lseek(dev->fd, 0, SEEK_SET);
if (ret < 0) {
XLOG("%s seek failed: %s\n", __FUNCTION__, strerror(errno));
return -EIO;
}
while (next_offset < total_size) {
/* snapshot buffer may not be an exact multiple of buf_size
* if necessary, adjust buffer size for last copy operation */
if (total_size - next_offset < buf_size) {
buf_size = total_size - next_offset;
}
ret = qemu_get_buffer(f, buffer, buf_size);
if (ret != buf_size) {
XLOG("%s read failed: expected %d bytes but got %d\n",
__FUNCTION__, buf_size, ret);
return -EIO;
}
ret = do_write(dev->fd, buffer, buf_size);
if (ret != buf_size) {
XLOG("%s, write failed: %s\n", __FUNCTION__, strerror(errno));
return -EIO;
}
next_offset += buf_size;
}
ret = do_ftruncate(dev->fd, total_size);
if (ret < 0) {
XLOG("%s ftruncate failed: %s\n", __FUNCTION__, strerror(errno));
return -EIO;
}
#endif
return 0;
}
开发者ID:KurSh,项目名称:panda,代码行数:57,代码来源:goldfish_nand.c
注:本文中的qemu_get_buffer函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论