From b4d0545c57daf9761f3466c503153480d730180d Mon Sep 17 00:00:00 2001 From: Tomas Mudrunka Date: Tue, 21 Jul 2020 08:47:03 +0200 Subject: [PATCH] better mmap example --- c/mmap-old/mmap.c | 28 ++++++++++++++++++++++++++++ c/mmap/mmap | Bin 5543 -> 0 bytes c/mmap/mmap.c | 38 ++++++++++++++++++-------------------- 3 files changed, 46 insertions(+), 20 deletions(-) create mode 100644 c/mmap-old/mmap.c delete mode 100755 c/mmap/mmap diff --git a/c/mmap-old/mmap.c b/c/mmap-old/mmap.c new file mode 100644 index 0000000..b2b1920 --- /dev/null +++ b/c/mmap-old/mmap.c @@ -0,0 +1,28 @@ +#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); +} + +int main() { + FILE *fd; + unsigned char *mm; + + fd = fopen("mmap.c", "r"); + mm = fmmap(fd); + + perror("Status"); + puts(mm); + + //munmap(mm, 10); + fclose(fd); +} diff --git a/c/mmap/mmap b/c/mmap/mmap deleted file mode 100755 index 061c1cce4f5163e2b805e9312f46e1a73216a48e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5543 zcmcIoe{38_6`ng^8W)^myQVe8v`2BksmR549V-bcIQ|jasT-5nDG6@6Ip6L14(^w3 z_liwbHRf;?V_Av_0{#e6A`q&CDn%e6LoDQQQBA5MS&>y)q96kax+q3+Q3#PJIlgaZ z$6lWs36Pl6yEos=H}l^7c(b$nYFFO@kH;f)@`^G+)b>qZc?buFjBfh;3W*#hxF${;o9q-NY#PI(xZ!aDX%kqK=DWCaLgZuaJtGNTOm5Z6`9BT20Z(kubgA55+4!5 zFh&xoq+!{?jBOYKQySt_whE)SAEn_~(#Tq7SVU53Gbz$$CX>pDbk?>+A`wiBNGP7N zOc9C2&14FlvAxq-A{a}eBr=M=ZPDG=+umU`2b$J$jdaZ`XO#bC_)&ZC^K$!0A*U)9 z+r|}%Ic1d+dxgbHq}lKJ${)ajy$!t;6S_c+g<7OW`4Tk-{4O;XZJ8PidYu{@pg@hy zutJTEadh&=KyJlXVBbUI`JNgfrp~@!EEXrO*;@*qM`__1m?Y2OfN@Txq;eF^!*Ad0zx0dmL`Jdk0EzjO1>+$KIv;W+j=ZB;eYbIDN>3f$l zg*Ugb15fUXZ|FpR+Wxedp8X8@=s&kod!YdC#GG9{!!l$ZocGnUthjJBe+HcKmD8xm zy#g01P&J30TloFGVsWagd=kuWBRknu4m5rA{N!N0kA*xXr;eiV?fK4ntep_3sYJel z!3$juf|%^A_n}8t7lzQy)jVCgzM5O{|MD`-%;fQ>yZjdIbk^5SL1yj!jdF`@ePAobv9sie}A1L(0{CNIG6~?$ySIGUVSe(98i_WKW{NFKux#*oJ z+VxF$rn)L&5QD0q<7)WD@BECc+?$@g_cDLTU8x&-(KwNxs;kdSd)UJj;1_OzGoBxZ z4Y`al_U7YIZQLptR6fk z{(i5RIt|V9_t-ZO`_Qig^IU!f!t(}PJI69Mn8qEUqh}z{sj3O#Ea*6HRMT1GemPmcSpxQ ze*+$6JNzwymO!Jwxv_C?W9!q6{)TkM%$RXAXqk8l{Exh*O)WQ<{Qqs<*FwM=OW46- z5wPrx(ovm@C2cd47J+2SHUs2&UYk<}wRZo)P7rsn=gDKdop$cm+4suV~#w=+dIfSg1olNa>_9XW0ZNu=?XG@D7x(eiV+AN z>#_~wybewj@|d{Dns*MobKsq4 zg_Fpmyb94g-sjs;_yPyzB+ebv1Vr*`c9EEyLE6k_7iaUjQ^5A}e_)?gWD&%{y!n{4G`-8%mEF{K-!gvQl;{I2dGpF{s z!dw-+GdR!hGWiyU3(gu=C$WCMm&x0O+J~yWx`lARDa?}$cZoI3TZq~})MbLN0qdy@ zk?US3pLnk*J8~$*?q>n<;$(7fAoWr@EIz2M@P+J6o8@4D=t1=jQH!Opw@?6&^~aN3!F+Aken9`!nLd~X5h z`Sf@n5zD}Oyuw>0-YdaAOrTyLkGDo_b4@7kd`|%D_3-0X_*6;#K488xaVJ;9zk|R$ zrvW8C?Be@TcCrN9z}#<~KfZIn49xQz5bYll)sPKkY|G9@BFGv>$6)^vqpx>h5Z^ZpqjLi~*x{-Qr;L$!YB(4-umn@EglJ6(r5rI`aq_CMEUXhbtQzivfd zAf*+4OQEmbef{nG`;7hr2L`$ZjluoxeO>gKBQt`TOmNIFli`g8^2?1dI*%XP|6Ff} z^ChOOO@D7`6uf+@Pcrfq%w6StuL)UMLtb(nTFEyd}|hRaj+U1^=&q&`5o3&6KhMl_fV$4$5(*HzE4 z{0zlmapq8otG6B-Cy?K-*1KvH+I{t{YD10u%4L}H29Jek-P0NvF>NCqGVEwJ`PIPi Ls8Aoeq@{lYj6OE} 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); } -- 2.30.2