This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

smart memcpy


Hi all,
is it possible to map a region on memory copy on write using this idea? I have an invalid argument in the mmap call.
Why?
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <sys/mman.h>
#include <unistd.h>


#define MAXPATH 255

int main (int argc, char **argv)
{
char *s,*x;
int i;
int addr;
int fd; int size=40960; char file_memory[MAXPATH];
pid_t p=getpid();
s=malloc(size);
sprintf(file_memory,"/proc/%d/mem",(int)p);
fd = open(file_memory,O_RDONLY);
if (fd < 0) {
perror(file_memory);
exit(-1);
}
printf ("start %s\n",file_memory);
printf("s = %p\n",s);
memset(s, 'X', size);
//lseek(fd,(int)s,SEEK_SET);
//read(fd,&addr,1);
//printf("%c", addr);
x = mmap(0,size,PROT_READ|PROT_WRITE,MAP_PRIVATE,fd,(int)s);
if ((int)(x)>0) {
printf("x = %p\n",x);
*x='P';
for (i=0;i<40; i++)
printf("sval=%c;xval=%c;",*(x+i),*(s+i)); } else {
printf("%s\n",strerror(errno));
} return 0;
}




Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]