ipc: Use generic shmem functions now.

This commit is contained in:
Ryan Pavlik 2020-07-16 11:22:40 -05:00
parent 20c65e74e3
commit 82395b23bb
5 changed files with 12 additions and 25 deletions

View file

@ -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;

View file

@ -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);

View file

@ -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;

View file

@ -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;
}

View file

@ -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;
/*