mirror of
https://gitlab.freedesktop.org/monado/monado.git
synced 2025-03-03 05:06:31 +00:00
ipc: Use generic shmem functions now.
This commit is contained in:
parent
20c65e74e3
commit
82395b23bb
|
@ -78,7 +78,7 @@ struct ipc_connection
|
|||
struct ipc_message_channel imc;
|
||||
|
||||
struct ipc_shared_memory *ism;
|
||||
int ism_fd;
|
||||
xrt_shmem_handle_t ism_handle;
|
||||
|
||||
struct os_mutex mutex;
|
||||
|
||||
|
|
|
@ -196,7 +196,7 @@ ipc_instance_create(struct xrt_instance_info *i_info,
|
|||
|
||||
// FDs needs to be set to something negative.
|
||||
ii->ipc_c.imc.socket_fd = -1;
|
||||
ii->ipc_c.ism_fd = -1;
|
||||
ii->ipc_c.ism_handle = XRT_SHMEM_HANDLE_INVALID;
|
||||
|
||||
if (!ipc_connect(&ii->ipc_c)) {
|
||||
IPC_ERROR(
|
||||
|
@ -217,7 +217,7 @@ ipc_instance_create(struct xrt_instance_info *i_info,
|
|||
|
||||
// get our xdev shm from the server and mmap it
|
||||
xrt_result_t r =
|
||||
ipc_call_instance_get_shm_fd(&ii->ipc_c, &ii->ipc_c.ism_fd, 1);
|
||||
ipc_call_instance_get_shm_fd(&ii->ipc_c, &ii->ipc_c.ism_handle, 1);
|
||||
if (r != XRT_SUCCESS) {
|
||||
IPC_ERROR(&ii->ipc_c, "Failed to retrieve shm fd");
|
||||
free(ii);
|
||||
|
@ -239,7 +239,8 @@ ipc_instance_create(struct xrt_instance_info *i_info,
|
|||
const int access = PROT_READ | PROT_WRITE;
|
||||
const size_t size = sizeof(struct ipc_shared_memory);
|
||||
|
||||
ii->ipc_c.ism = mmap(NULL, size, access, flags, ii->ipc_c.ism_fd, 0);
|
||||
ii->ipc_c.ism =
|
||||
mmap(NULL, size, access, flags, ii->ipc_c.ism_handle, 0);
|
||||
if (ii->ipc_c.ism == NULL) {
|
||||
IPC_ERROR(&ii->ipc_c, "Failed to mmap shm ");
|
||||
free(ii);
|
||||
|
|
|
@ -166,7 +166,7 @@ struct ipc_server
|
|||
struct xrt_tracking_origin *xtracks[IPC_SERVER_NUM_XDEVS];
|
||||
|
||||
struct ipc_shared_memory *ism;
|
||||
int ism_fd;
|
||||
xrt_shmem_handle_t ism_handle;
|
||||
|
||||
//! Socket that we accept connections on.
|
||||
int listen_socket;
|
||||
|
|
|
@ -43,7 +43,7 @@ ipc_handle_instance_get_shm_fd(volatile struct ipc_client_state *ics,
|
|||
{
|
||||
assert(max_num_handles >= 1);
|
||||
|
||||
out_handles[0] = ics->server->ism_fd;
|
||||
out_handles[0] = ics->server->ism_handle;
|
||||
*out_num_handles = 1;
|
||||
return XRT_SUCCESS;
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
#include "util/u_debug.h"
|
||||
|
||||
#include "ipc_server.h"
|
||||
#include "ipc_shmem.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
|
@ -120,30 +121,15 @@ static int
|
|||
init_shm(struct ipc_server *s)
|
||||
{
|
||||
const size_t size = sizeof(struct ipc_shared_memory);
|
||||
|
||||
int fd = shm_open("/monado_shm", O_CREAT | O_RDWR, S_IRUSR | S_IWUSR);
|
||||
if (fd < 0) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
if (ftruncate(fd, size) < 0) {
|
||||
close(fd);
|
||||
return -1;
|
||||
}
|
||||
|
||||
const int access = PROT_READ | PROT_WRITE;
|
||||
const int flags = MAP_SHARED;
|
||||
s->ism = mmap(NULL, size, access, flags, fd, 0);
|
||||
if (s->ism == NULL) {
|
||||
close(fd);
|
||||
xrt_shmem_handle_t handle;
|
||||
xrt_result_t result = ipc_shmem_create(size, &handle, (void **)&s->ism);
|
||||
if (result != XRT_SUCCESS) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
// we have a filehandle, we will pass this to
|
||||
// our client rather than access via filesystem
|
||||
shm_unlink("/monado_shm");
|
||||
|
||||
s->ism_fd = fd;
|
||||
s->ism_handle = handle;
|
||||
|
||||
|
||||
/*
|
||||
|
|
Loading…
Reference in a new issue