mithras
27-06-2003, 22:55
Unten seht ihr eine Funktion namens mapping, was mapping macht weiß ich denk ich derjenige der mir vielleicht helfen koennte.
Das komische ich kann untensehenden Code auf einem SuSE Linux 8.0 (Kernel 2.4) Rechner ausführen (da funktioniert alles einwandfrei!), auf einem Debian woody (Kernel 2.2) Rechner aber nicht!
Da kommt folgende Fehlermeldung:
"Invalid Argument"
bzw.
"Segmentation fault"
Glaube nicht dass es am Unterschied Kernel 2.2 / 2.4 liegt.
Habe den Code jeweils auf beiden Systemen fehlerfrei kompeliert.
int *mapping1()
{
int fd_sm;
int *zeiger;
if ( (fd_sm=open("/dev/zero", O_RDWR)) < 0)
printf("kann /dev/zero nicht öffeln!\n");
if ( (zeiger = mmap(0, sizeof(zeiger), PROT_READ | PROT_WRITE, MAP_SHARED, fd_sm, 0)) ==(caddr_t)-1){
printf("mmap fehler!\n");
perror("Rueckmeldung1: \n");
}
close(fd_sm);
return zeiger;
}
Das komische ich kann untensehenden Code auf einem SuSE Linux 8.0 (Kernel 2.4) Rechner ausführen (da funktioniert alles einwandfrei!), auf einem Debian woody (Kernel 2.2) Rechner aber nicht!
Da kommt folgende Fehlermeldung:
"Invalid Argument"
bzw.
"Segmentation fault"
Glaube nicht dass es am Unterschied Kernel 2.2 / 2.4 liegt.
Habe den Code jeweils auf beiden Systemen fehlerfrei kompeliert.
int *mapping1()
{
int fd_sm;
int *zeiger;
if ( (fd_sm=open("/dev/zero", O_RDWR)) < 0)
printf("kann /dev/zero nicht öffeln!\n");
if ( (zeiger = mmap(0, sizeof(zeiger), PROT_READ | PROT_WRITE, MAP_SHARED, fd_sm, 0)) ==(caddr_t)-1){
printf("mmap fehler!\n");
perror("Rueckmeldung1: \n");
}
close(fd_sm);
return zeiger;
}