2016-09-21 23:54:26 +03:00
|
|
|
#include <sys/mman.h>
|
|
|
|
|
2017-03-04 21:42:50 -08:00
|
|
|
#include <compel/plugins.h>
|
2017-03-04 21:42:51 -08:00
|
|
|
#include <compel/plugins/shmem.h>
|
2017-03-04 21:42:50 -08:00
|
|
|
#include <compel/plugins/std/syscall.h>
|
2016-09-21 23:54:26 +03:00
|
|
|
#include "shmem.h"
|
|
|
|
#include "std-priv.h"
|
|
|
|
|
|
|
|
void *shmem_create(unsigned long size)
|
|
|
|
{
|
|
|
|
int ret;
|
|
|
|
void *mem;
|
|
|
|
struct shmem_plugin_msg spi;
|
|
|
|
|
|
|
|
mem = (void *)sys_mmap(NULL, size, PROT_READ | PROT_WRITE,
|
|
|
|
MAP_SHARED | MAP_ANON, 0, 0);
|
|
|
|
if (mem == MAP_FAILED)
|
|
|
|
return NULL;
|
|
|
|
|
|
|
|
spi.start = (unsigned long)mem;
|
|
|
|
spi.len = size;
|
|
|
|
|
|
|
|
ret = sys_write(std_ctl_sock(), &spi, sizeof(spi));
|
|
|
|
if (ret != sizeof(spi)) {
|
|
|
|
sys_munmap(mem, size);
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
return mem;
|
|
|
|
}
|
|
|
|
|
|
|
|
void *shmem_receive(unsigned long *size)
|
|
|
|
{
|
|
|
|
/* master -> parasite not implemented yet */
|
|
|
|
return NULL;
|
|
|
|
}
|
|
|
|
|
|
|
|
PLUGIN_REGISTER_DUMMY(shmem)
|