hi
i created a programme who use a library.
the library talk to a driver.
the library need to write in shared memory between the application and kernel.
i try to use mmap.
in my application, i do:
Code:
static const int _MAXMSGSIZE = 256;
static const int _MAXMSGNB = 256;
int fd;
static char *mapdev (const char *, int, int);
int main (int argc, char **argv)
{
unsigned int offset, size, i;
char *addr, *addr1, *maddr;
if (argc != 4)
{
fprintf (stderr, "Usage: mapcmp dev1 offset pages\n");
exit (1);
}
size = _MAXMSGSIZE * _MAXMSGNB;
maddr = malloc(size);
offset = 0;
addr = mapdev (argv[1], offset, size);
addr1 = addr;
for (i = 0; i < size; i++){
*addr1 = "a";
addr1++;
}
addr1 = addr;
for (i = 0; i < size; i++){
printf("%c",*addr1);
addr1++;
}
munmap(addr,size);
close(fd);
exit (0);
}
static char *mapdev (const char *dev, int offset, int size)
{
char *addr;
fd = open (dev, O_RDWR);
printf("Va utiliser mmap1\n");
if (fd < 0)
{
perror (dev);
return (1);
}
printf("Va utiliser mmap2\n");
addr = mmap (0, size, PROT_READ, MAP_PRIVATE, fd, offset);
if (addr == MAP_FAILED)
{
perror (dev);
return (1);
}
printf ("Mapped %s (%d @ %d) at 0x%p\n", dev, size, offset, addr);
return (addr);
}
they are a problem when i do:
the machine freeze
any idea?