Hi,
are you looking for something process_vm_readv?
http://man7.org/linux/man-pages/man2/process_vm_writev.2.html
Could you give an example what do you actually need?
On 02/17/2017 10:47 AM, Daniel Krefft wrote:
Hi,
we are well aware that memory access takes place all over the operating system. But, comparable to a standard like POSIX, we are searching for a standardized function (read/write, load/store, ...) to access virtual memory.
You use read and write for accessing objects behind file descriptors (mostly files). You do not use read and write to access your own virtual memory, mainly because you can access your memory directly without need for additional API.
A simple example in pseudo code could be:
`void access_memory(virtual_adress_pointer, payload);`
Let's say we ask for a functionality comparable to the mentioned privileged read/write (see third thread message). Maybe this is all done in assembly code and there is no specific C/C++ high level function?
Thanks Daniel
On 16.02.2017 23:54, Adam Lackorzynski wrote:
Hi,
On Thu Feb 16, 2017 at 13:14:07 +0100, Daniel Krefft wrote:
We want to know, at which place within the operating system/kernel (l4re/fiasco.oc) memory access takes place. This means, which concrete functions address the MMU (load/store) or handle the read/write virtual memory operations?
I'm sorry I still have a hard time to make sense out of your question. I'll try to explain where my difficulties come from. In code like "c = a + b;" we have 2 loads and 1 store. Those happen in virtual memory and are generated by the compiler. Thus load and store instructions are everywhere, both in the kernel and in any user-level application and thus the answer to you question could be: memory accesses are all over the place.
Adam
On 16.02.2017 00:18, Adam Lackorzynski wrote:
Hi,
On Wed Feb 15, 2017 at 09:55:19 +0100, Daniel Krefft wrote:
Hi,
we came across two functions (read/write) that are defined in the l4 base API documentation:
https://os.inf.tu-dresden.de/L4Re/doc/group__l4__mem__op__api.html
- What does the description "functionality to access user task memory
from the kernel" mean? This could be interpreted as accessing user-space memory from within the kernel?!
As the description says through this functions is it possible to read/write from/to device memory in the case the device only allows access from privileged processor more. There are some of those devices out there where even the switch to allow access from user-mode is broken. I guess nobody ever noticed. Those functions are only required for those specific devices where it's necessary, i.e. not in any normal operation. But yes, they fall under the category you describe.
- Are there any equivalent memory read/write functions inside the l4re
that also take a virtual address as a parameter?
Yes, there are, for example, utility functions for accessing device memory. However I'm not sure you're looking for something like this as this is all within the same address space and any code in there can read/write anywhere in that address space (given paging permits). There's no functionality to read/write memory in other address spaces directly.
Adam
To clarify, all intended operations (read/write) should not modify user-space memory from inside the kernel or vice versa. User-space defined read/write functions should operate in user-space exclusively.
Best Daniel
On 14.02.2017 23:29, Adam Lackorzynski wrote:
Hi,
On Tue Feb 14, 2017 at 10:38:26 +0100, Daniel Krefft wrote: > while working on a checkpoint/restore mechanism for fiasco.oc, we want > to trace read and write (kernel) calls to (virtual) memory. > > 1) Where are these calls defined? We're just able to find ARM specific > calls inside the kernel, which allow writing and reading to/from a > virtual address > > 2) Are these calls (if existent) platform agnostic (user-space)? Is > there any kind of interface?
I do not quite get the question. The kernel (Fiasco) is running in virtual memory, also when running in the kernel, i.e. any load/store operation that is in the code is through virtual memory. Do you want to trace any read/write issued by the kernel to user-level memory? I'm afraid, the kernel does not do that, i.e. it never touches user-level memory (except the specially treated UTCB memory). Could you please describe your question more verbosely?
Adam
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
-- Daniel Krefft MSc. Wissenschaftlicher Mitarbeiter
Technische Universitaet Muenchen Fakultaet fuer Informatik Lehrstuhl fuer Betriebssysteme
Arcisstrasse 21 80333 Muenchen
Tel. +49 89 289 18791
daniel.krefft@tum.de www.os.in.tum.de/personen/krefft
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
Adam
-- Daniel Krefft MSc. Wissenschaftlicher Mitarbeiter
Technische Universitaet Muenchen Fakultaet fuer Informatik Lehrstuhl fuer Betriebssysteme
Arcisstrasse 21 80333 Muenchen
Tel. +49 89 289 18791
daniel.krefft@tum.de www.os.in.tum.de/personen/krefft
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers
l4-hackers mailing list l4-hackers@os.inf.tu-dresden.de http://os.inf.tu-dresden.de/mailman/listinfo/l4-hackers