What permissions are needed to use mmap and MAP_LOCKED
I have an application that uses mmap and MAP_LOCKED, MAP_LOCKED is defined in bits/mman.h
The application works fine as root, but, fails when started as a normal user. I believed this may be due to permissions. ulimit shows the same values for root as the normal user.
I prefer to not use sudo for this application.
/code
int mapflags = MAP_SHARED;
#if defined(MAP_LOCKED)
if( locked) mapflags |= MAP_LOCKED;
#endif
char *mem = mmap( NULL, bufsize, PROT_READ | PROT_WRITE, mapflags, fh, 0);
if( mem == MAP_FAILED)
{
sprintf( VT_error, "cannot mmap posix %s, %s\n",
filename, strerror( errno));
free( filename);
return 0;
}
\code
errno is EAGAIN and strerror(errno) returns 'Resource temporarily unavailable'
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127786
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 127786
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
> sudo bash
> ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 127786
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 127786
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
Tom Dean
Question information
- Language:
- English Edit question
- Status:
- Expired
- For:
- Ubuntu Edit question
- Assignee:
- No assignee Edit question
- Last query:
- Last reply: