[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
No Subject
Hi, everyone:
I have a question about the share memory use mmap. (in rtlinux-2.2)
I use the example in mmap, but what i want to know is is there is a
limit of the size of share memory, for when i try to map a region
about 1000 int, in the kernel module the computer always dead.
Following is the program i use.
===================================
#include <rtl.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/mman.h>
//DATA * start;
int *start;
size_t length = 1000;
#define BASE_ADDRESS (96*0x100000)
//96Mb I have reserve the left 32Mb in lilo.conf
int init_module(void )
{
int i;
int fd = open("/dev/mem", O_RDWR);
if (fd < 0) {
rtl_printf("failed to open /dev/mem\n");
return -1;
}
start = (int *)mmap(0,length*sizeof(int),PROT_READ|PROT_WRITE,
MAP_SHARED,fd,BASE_ADDRESS);
if (start == (int *) -1) {
rtl_printf("failed to map /dev/mem\n");
return -1;
}
rtl_printf("%p\n",start);
for (i = 0; i < 1000; i++) {
rtl_printf ("%d\t",i);
start[i]=i;
rtl_printf ("%d\n", start[i]);
}
return 0;
}
void cleanup_module(void )
{
munmap(start, length);
}
#ifndef MODULE
int main(void)
{
if (init_module() == 0) {
cleanup_module();
}
return 0;
}
#endif
===========================
If i run this program in module, then the computer is dead.
If i run in user program, it's ok.
Anyone have some some suggestion about this?
Thanks in anvance.
Zhixu Liu
- Follow-Ups:
- Re: your mail
- From: Tomasz Motylewski <motyl@stan.chemie.unibas.ch>