2016-12-07 17:21 GMT+01:00 Vlastimil Babka <vbabka@xxxxxxx>:
On 12/07/2016 04:39 PM, Federico Reghenzani wrote:
> Hello,
>
> I'm working on Real-Time applications in Linux. `mlockall()` is a
> typical syscall used in RT processes in order to avoid page faults.
> However, the use of this syscall is strongly limited by ulimits, so
> basically all RT processes that want to call `mlockall()` have to be
> executed with root privileges.
Is it not possible to change the ulimits with e.g. prlimit?
Yes, but it requires a synchronization between non-root process and root process.
Because the root process has to change the limits before the non-root process executes the mlockall().
Just to provide an example, another syscall used in RT tasks is the sched_setscheduler() that also suffers
the limitation of ulimits, but it accepts the pid so the scheduling policy can be enforced by a root process to
any other process.
> What I would like to have is a syscall that accept a "pid", so a process
> spawned by root would be able to enforce the memory locking to other
> non-root processes. The prototypes would be:
>
> int mlockall(int flags, pid_t pid);
> int munlockall(pid_t pid);
>
> I checked the source code and it seems to me quite easy to add this
> syscall variant.
>
> I'm writing here to have a feedback before starting to edit the code. Do
> you think that this is a good approach?
>
>
> Thank you,
> Federico
>
> --
> *Federico Reghenzani*
> PhD Candidate
> Politecnico di Milano
> Dipartimento di Elettronica, Informazione e Bioingegneria
>
Federico Reghenzani
PhD Candidate
Politecnico di Milano
Dipartimento di Elettronica, Informazione e Bioingegneria