mirror of https://github.com/xqemu/xqemu.git
ivshmem: use ram_from_fd()
Instead of having its own mmap handling code, reuse the code from exec.c. Note: memory_region_init_ram_from_fd() adds some restrictions (check for xen, kvm sync-mmu, etc) and changes (such as size alignment). This may actually be more correct. Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> Message-Id: <20170602141229.15326-6-marcandre.lureau@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
fea617c58b
commit
8381d89bec
|
@ -491,9 +491,9 @@ static void setup_interrupt(IVShmemState *s, int vector, Error **errp)
|
||||||
|
|
||||||
static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
||||||
{
|
{
|
||||||
|
Error *local_err = NULL;
|
||||||
struct stat buf;
|
struct stat buf;
|
||||||
size_t size;
|
size_t size;
|
||||||
void *ptr;
|
|
||||||
|
|
||||||
if (s->ivshmem_bar2) {
|
if (s->ivshmem_bar2) {
|
||||||
error_setg(errp, "server sent unexpected shared memory message");
|
error_setg(errp, "server sent unexpected shared memory message");
|
||||||
|
@ -522,15 +522,13 @@ static void process_msg_shmem(IVShmemState *s, int fd, Error **errp)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* mmap the region and map into the BAR2 */
|
/* mmap the region and map into the BAR2 */
|
||||||
ptr = mmap(0, size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
|
memory_region_init_ram_from_fd(&s->server_bar2, OBJECT(s),
|
||||||
if (ptr == MAP_FAILED) {
|
"ivshmem.bar2", size, true, fd, &local_err);
|
||||||
error_setg_errno(errp, errno, "Failed to mmap shared memory");
|
if (local_err) {
|
||||||
close(fd);
|
error_propagate(errp, local_err);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
memory_region_init_ram_ptr(&s->server_bar2, OBJECT(s),
|
|
||||||
"ivshmem.bar2", size, ptr);
|
|
||||||
memory_region_set_fd(&s->server_bar2, fd);
|
|
||||||
s->ivshmem_bar2 = &s->server_bar2;
|
s->ivshmem_bar2 = &s->server_bar2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue