1 .\"
   2 .\" This file and its contents are supplied under the terms of the
   3 .\" Common Development and Distribution License ("CDDL"), version 1.0.
   4 .\" You may only use this file in accordance with the terms of version
   5 .\" 1.0 of the CDDL.
   6 .\"
   7 .\" A full copy of the text of the CDDL should have accompanied this
   8 .\" source.  A copy of the CDDL is also available via the Internet at
   9 .\" http://www.illumos.org/license/CDDL.
  10 .\"
  11 .\"
  12 .\" Copyright 2015 Joyent, Inc.
  13 .\"
  14 .Dd May 11, 2016
  15 .Dt PREAD 3PROC
  16 .Os
  17 .Sh NAME
  18 .Nm Pread ,
  19 .Nm Pread_string
  20 .Nd read data from a process
  21 .Sh LIBRARY
  22 .Lb libproc
  23 .Sh SYNOPSIS
  24 .In libproc.h
  25 .Ft ssize_t
  26 .Fo Pread
  27 .Fa "struct ps_prochandle *P"
  28 .Fa "void *buf"
  29 .Fa "size_t nbytes"
  30 .Fa "uintptr_t address"
  31 .Fc
  32 .Ft ssize_t
  33 .Fo Pread_string
  34 .Fa "struct ps_prochandle *P"
  35 .Fa "char *buf"
  36 .Fa "size_t nbytes"
  37 .Fa "uintptr_t address"
  38 .Fc
  39 .Sh DESCRIPTION
  40 The
  41 .Fn Pread
  42 function reads data from the process handle
  43 .Fa P
  44 starting at
  45 .Fa address
  46 in the address space of the process and reads at most
  47 .Fa nbytes
  48 of data into
  49 .Fa buf
  50 and is logically analogous to the
  51 .Xr pread 2
  52 function.
  53 .Pp
  54 For live processes, this function is equivalent to reading from the /proc file
  55 system
  56 .Sy as
  57 file for the process.
  58 For core files and file handles, it reads and writes from the logical address
  59 space and not the corresponding offset of the file itself.
  60 For example, a core file contains a sparse representation of the address space
  61 of a crashed process and unmapped regions are not present in the file.
  62 However,
  63 .Fa address
  64 still refers to the virtual addresses that were present at run-time and
  65 not those in the core file.
  66 .Pp
  67 The
  68 .Fn Pread_string
  69 function is similar to the
  70 .Fn Pread
  71 function, except that it attempts to interpret
  72 .Fa address
  73 as a null terminated character string and will stop reading characters
  74 into
  75 .Fa buf
  76 if either
  77 .Fa nbytes
  78 has been read or a null terminator is encountered.
  79 The resulting data in
  80 .Fa buf
  81 will always be null terminated, even if no null terminator was found in
  82 the first
  83 .Fa nbytes
  84 of data.
  85 .Sh RETURN VALUES
  86 Upon successful completion, the
  87 .Fn Pread
  88 and
  89 .Fn Pread_string
  90 functions return a non-negative integer indicating the number of bytes
  91 actually read.
  92 Otherwise, the functions return
  93 .Sy -1
  94 and set
  95 .Sy errno
  96 to indicate the error.
  97 .Sh ERRORS
  98 For a full list of possible errors also see the
  99 .Sy DIAGNOSTICS
 100 section in
 101 .Xr proc 4
 102 and
 103 the
 104 .Sy ERRORS
 105 section in
 106 .Xr pread 2 .
 107 .Sh INTERFACE STABILITY
 108 .Sy Uncommitted
 109 .Sh MT-LEVEL
 110 See
 111 .Sy LOCKING
 112 in
 113 .Xr libproc 3LIB .
 114 .Sh SEE ALSO
 115 .Xr pread 2 ,
 116 .Xr libproc 3LIB ,
 117 .Xr proc 4