X-Git-Url: http://git.harvie.cz/?a=blobdiff_plain;f=c%2Fmmap%2Fmmap.c;fp=c%2Fmmap%2Fmmap.c;h=69d566699550aa2df3c71b147e987316dc95262e;hb=b4d0545c57daf9761f3466c503153480d730180d;hp=b2b19209693adcb955bb53bebd1d1ce3135be2c6;hpb=cb8003e63ff12aa8416c907395ee5a64db7704dc;p=mirrors%2FPrograms.git diff --git a/c/mmap/mmap.c b/c/mmap/mmap.c index b2b1920..69d5666 100644 --- a/c/mmap/mmap.c +++ b/c/mmap/mmap.c @@ -1,28 +1,26 @@ +//#define _GNU_SOURCE + #include -#include -#include -#include #include +#include +#include +#include +#include +#include -unsigned char *fmmap(FILE *fd) { - struct stat sb; - - if(!fd) perror(""); - fd = fileno(fd); - fstat((int)fd, &sb); - return mmap(0, sb.st_size, PROT_READ, MAP_PRIVATE, (int)fd, 0); -} +#define MEM_PATH "hello.bin" +#define MEM_SIZE 1048576 int main() { - FILE *fd; - unsigned char *mm; - - fd = fopen("mmap.c", "r"); - mm = fmmap(fd); + int fd; + fd = open(MEM_PATH, O_RDWR | O_SYNC | O_CREAT | O_CLOEXEC, S_IRUSR | S_IWUSR); + ftruncate(fd, MEM_SIZE); - perror("Status"); - puts(mm); + void *mem; + mem = mmap(NULL, MEM_SIZE, PROT_READ | PROT_WRITE, MAP_SHARED , fd, 0); + close(fd); - //munmap(mm, 10); - fclose(fd); + char hello[] = "Hello!"; + memcpy(mem, hello, sizeof(hello)); + msync(mem, sizeof(hello), MS_SYNC); }