Skip to content
Snippets Groups Projects

Cleaning up findSharedMemory usage, fixing error checks on the returned...

Merged Ezekiel Dohmen requested to merge ezekiel.dohmen/advligorts:rfm-global-cleanup into master
5 files
+ 54
84
Compare changes
  • Side-by-side
  • Inline
Files
5
+ 34
60
@@ -18,8 +18,8 @@
#include "mbuf/mbuf.h"
/// Pointer to start of shared memory segment for a selected system.
volatile unsigned char *addr = 0;
#include "findSharedMemory.h"
/// Search shared memory device file names in /rtl_mem_*
/// @param[in] *sys_name Name of system, required to attach shared memory.
@@ -27,71 +27,45 @@ volatile unsigned char *addr = 0;
volatile void *
findSharedMemory(char *sys_name)
{
char *s;
int fd;
char sys[128];
char fname[128];
strcpy(sys, sys_name);
for(s = sys; *s; s++) *s=tolower(*s);
sprintf(fname, "/rtl_mem_%s", sys);
int ss = 64*1024*1024;
if (!strcmp(sys_name, "ipc")) ss = 32*1024*1024;
if (!strcmp(sys_name, "shmipc")) ss = 16*1024*1024;
int ss_mb = 64;
if (!strcmp(sys_name, "ipc")) ss_mb = 32;
if (!strcmp(sys_name, "shmipc")) ss_mb = 16;
if ((fd = open ("/dev/mbuf", O_RDWR | O_SYNC)) < 0) {
fprintf(stderr, "Couldn't open /dev/mbuf read/write\n");
return 0;
}
struct mbuf_request_struct req;
req.size = ss;
strcpy(req.name, sys);
ioctl (fd, IOCTL_MBUF_ALLOCATE, &req);
ioctl (fd, IOCTL_MBUF_INFO, &req);
addr = (volatile unsigned char *)mmap(0, ss, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (addr == MAP_FAILED) {
printf("return was %d\n",errno);
perror("mmap");
_exit(-1);
}
printf(" %s mmapped address is 0x%lx\n", sys,(long)addr);
return addr;
return findSharedMemorySize(sys_name, ss_mb);
}
volatile void *
findSharedMemorySize(char *sys_name, int size)
findSharedMemorySize(char *sys_name, int size_mb)
{
char *s;
int fd;
char sys[128];
char fname[128];
strcpy(sys, sys_name);
for(s = sys; *s; s++) *s=tolower(*s);
volatile unsigned char *addr = 0;
char *s;
int fd;
char sys[128];
strcpy(sys, sys_name);
for(s = sys; *s; s++) *s=tolower(*s);
int size_bytes = size_mb*1024*1024;
printf("Making mbuff area %s with size %d\n", sys, size_bytes);
sprintf(fname, "/rtl_mem_%s", sys);
if ((fd = open ("/dev/mbuf", O_RDWR | O_SYNC)) < 0) {
fprintf(stderr, "Couldn't open /dev/mbuf read/write\n");
return 0;
}
int ss = size*1024*1024;
printf("Making mbuff area %s with size %d\n",sys,ss);
struct mbuf_request_struct req;
req.size = size_bytes;
strcpy(req.name, sys);
ioctl (fd, IOCTL_MBUF_ALLOCATE, &req);
ioctl (fd, IOCTL_MBUF_INFO, &req);
if ((fd = open ("/dev/mbuf", O_RDWR | O_SYNC)) < 0) {
fprintf(stderr, "Couldn't open /dev/mbuf read/write\n");
return 0;
}
struct mbuf_request_struct req;
req.size = ss;
strcpy(req.name, sys);
ioctl (fd, IOCTL_MBUF_ALLOCATE, &req);
ioctl (fd, IOCTL_MBUF_INFO, &req);
addr = (volatile unsigned char *)mmap(0, ss, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (addr == MAP_FAILED) {
printf("return was %d\n",errno);
perror("mmap");
_exit(-1);
}
printf(" %s mmapped address is 0x%lx\n", sys,(long)addr);
return addr;
addr = (volatile unsigned char *)mmap(0, size_bytes, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
if (addr == MAP_FAILED) {
printf("return was %d\n", errno);
perror("mmap");
_exit(-1);
}
printf(" %s mmapped address is 0x%lx\n", sys, (long)addr);
return addr;
}
Loading