Sujet : Re: Memory mapping: MAP_PRIVATE and msync()
De : bc (at) *nospam* freeuk.com (bart)
Groupes : comp.lang.cDate : 08. Apr 2024, 12:14:30
Autres entêtes
Organisation : A noiseless patient Spider
Message-ID : <uv0jik$3f285$1@dont-email.me>
References : 1 2 3
User-Agent : Mozilla Thunderbird
On 08/04/2024 02:50, Lawrence D'Oliveiro wrote:
On Sun, 07 Apr 24 15:18:47 +0000, pehache wrote:
void* p2 = mmap( NULL
, n
, PROT_READ | PROT_WRITE
, MAP_SHARED | MAP_NORESERVE
, fd
, 0 );
Not easy to remember what the arguments mean. Try this:
void * p2 = mmap
(
/*addr =*/ NULL,
/*length =*/ n,
/*prot =*/ PROT_READ | PROT_WRITE,
/*flags =*/ MAP_SHARED | MAP_NORESERVE,
/*fd =*/ fd,
/*offset =*/ 0
);
That's great but, how did you manage to figure out the meanings and order of the parameters in order to be able to write those comments?
If you have 1000s of calls to such functions, will you have those comments plastered everwhere?
In a language with proper named/keyword arguments, you don't need to remember the order. You don't need to supply all the arguments (eg. addr and offset in your example can have defaults, possibly those sets of flags too).
If you get an argument name wrong, it will tell you. I suspect that if you wrote this by mistake:
/*prot =*/ MAP_SHARED | MAP_NORESERVE,
/*flags =*/ PROT_READ | PROT_WRITE,
it would not be detected.