Warning: mysqli::__construct(): (HY000/1203): User howardkn already has more than 'max_user_connections' active connections in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\includes\artfuncs.php on line 21
Failed to connect to MySQL: (1203) User howardkn already has more than 'max_user_connections' active connections
Warning: mysqli::query(): Couldn't fetch mysqli in D:\Inetpub\vhosts\howardknight.net\al.howardknight.net\index.php on line 66
Article <zg5bFPBPOWrwfU5oe0Ftvee3OqQ@jntp>
Deutsch   English   Français   Italiano  
<zg5bFPBPOWrwfU5oe0Ftvee3OqQ@jntp>

View for Bookmarking (what is this?)
Look up another Usenet article

Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!usenet-fr.net!pasdenom.info!from-devjntp
Message-ID: <zg5bFPBPOWrwfU5oe0Ftvee3OqQ@jntp>
JNTP-Route: news2.nemoweb.net
JNTP-DataType: Article
Subject: Re: Memory mapping: =?UTF-8?Q?MAP=5FPRIVATE=20and=20msync=28=29?=
References: <osGzrqwQ8DBTJ8mCFoPEiv6Pn0M@jntp> <qmtiixDX3flrgimP-RUFSW_hf7o@jntp>
Newsgroups: comp.lang.c,comp.unix.programmer
Followup-To: comp.unix.programmer
JNTP-HashClient: DhiH4rCtsa2DqAZvwt6pm0akAyw
JNTP-ThreadID: Xt4PvXwVS7RUVBYIv4ru98146Os
JNTP-ReferenceUserID: 44@news2.nemoweb.net
JNTP-Uri: http://news2.nemoweb.net/?DataID=zg5bFPBPOWrwfU5oe0Ftvee3OqQ@jntp
User-Agent: Nemo/0.999a
JNTP-OriginServer: news2.nemoweb.net
Date: Sun, 07 Apr 24 19:04:27 +0000
Organization: Nemoweb
JNTP-Browser: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:109.0) Gecko/20100101 Firefox/115.0
Injection-Info: news2.nemoweb.net; posting-host="516ee13c1e79fa65aedf115a32aee346f9289ca9"; logging-data="2024-04-07T19:04:27Z/8809090"; posting-account="44@news2.nemoweb.net"; mail-complaints-to="julien.arlandis@gmail.com"
JNTP-ProtocolVersion: 0.21.1
JNTP-Server: PhpNemoServer/0.94.5
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 8bit
X-JNTP-JsonNewsGateway: 0.96
From: pehache <pehache.7@gmail.com>
Bytes: 4001
Lines: 68

As advised, I'm copying this post here

Le 07/04/2024 à 17:18, pehache a écrit :
> Le 07/04/2024 à 15:34, pehache a écrit :
>> Hello,
>> 
>> When memory mapping a file with the MAP_PRIVATE flag, the modifications (writes) 
>> only exist in memory and are not written back to the file.
>> 
>> According to the man pages, calling msync (3) on a such a mapping does NOT 
>> writes the changes back:
>> 
>> "When the msync() function is called on MAP_PRIVATE mappings, any modified data 
>> shall not be written to the underlying object and shall not cause such data to be 
>> made visible to other processes"
>> https://linux.die.net/man/3/msync
>> 
>> So: is there a way to write the changes back to the file? 
>> 
>> An obvious application is:
>> - mapping the file with MAP_PRIVATE
>> - make some modifications in memory only (fast) while keeping the original 
>> version on disk (safe)
>> - at some point (when the user decides, and once the consistency of the changes 
>> have been verified) writing the modifications to the disk
>> 
>> I'm pretty sure it exists some way or another, but I don't know how.
> 
> At the moment what I'm doing is something like:
> 
> ========================================
>     fd = open("aaa",O_RDWR); 
>     p =       mmap ( NULL                        
>                    , n                  
>                    , PROT_READ | PROT_WRITE      
>                    , MAP_PRIVATE | MAP_NORESERVE  
>                    , fd                         
>                    , 0 );
> 
>     // writing to p; the changes exist only in memory
> 
>     void* p2 = mmap( NULL                        
>                    , n                  
>                    , PROT_READ | PROT_WRITE      
>                    , MAP_SHARED | MAP_NORESERVE  
>                    , fd                         
>                    , 0 );
> 
>     memcpy(p2,p,n);  // copying everything from p to p2
>     msync(p2,n);
> 
>     // unmap/remap p so it's ready for new changes
>     munmap(p,n);
>     p =       mmap ( NULL                        
>                    , n                  
>                    , PROT_READ | PROT_WRITE      
>                    , MAP_PRIVATE | MAP_NORESERVE  
>                    , fd                         
>                    , 0 );
>     
> ========================================
> 
> This works, but:
> 
> - the whole content is copied, not only the changed content
> - is this code legal? Is there any potential conflict between the 2 mapping, 
> with an undefined behavior?