logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

proc_rwmem, proc_readmem, proc_writemem — read from or write to a process address space

Authors

       This manual page was written by Mark Johnston <markj@FreeBSD.org>.

Debian                                          December 7, 2015                                   PROC_RWMEM(9)

Description

       These  functions  are used to read to or write from the address space of the process p.  The proc_rwmem()
       function requires the caller to specify the I/O parameters using a structuio, described in uio(9).   The
       proc_readmem()  and  proc_writemem() functions provide a simpler, less general interface which allows the
       caller to read into or write the kernel buffer buf of size len from or to the memory at offset va in  the
       address  space  of  p.   The  operation is performed on behalf of thread td, which will most often be the
       current thread.

       These functions may sleep and thus may not be called with any non-sleepable locks held.   The  process  p
       must be held by the caller using PHOLD(9).

Name

       proc_rwmem, proc_readmem, proc_writemem — read from or write to a process address space

Return Values

       The  proc_rwmem()  function  returns  0  on success.  EFAULT is returned if the specified user address is
       invalid, and ENOMEM is returned if the target pages could not be faulted in due to a resource shortage.

       The  proc_readmem()  and  proc_writemem()  functions  return  the  number  of  bytes  read  or   written,
       respectively.   This  may be smaller than the number of bytes requested, for example if the request spans
       multiple pages in the process address space and one of them after the first is not mapped.  Otherwise, -1
       is returned.

See Also

copyin(9), locking(9), PHOLD(9), uio(9)

Synopsis

#include<sys/types.h>#include<sys/ptrace.h>intproc_rwmem(structproc*p, structuio*uio);

       ssize_tproc_readmem(structthread*td, structproc*p, vm_offset_tva, void*buf, size_tlen);

       ssize_tproc_writemem(structthread*td, structproc*p, vm_offset_tva, void*buf, size_tlen);

See Also