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 November 27, 2023
15.Dt PR_OPEN 3PROC
16.Os
17.Sh NAME
18.Nm pr_open
19.Nd inject open system call into victim process
20.Sh LIBRARY
21.Lb libproc
22.Sh SYNOPSIS
23.In libproc.h
24.Ft int
25.Fo pr_open
26.Fa "struct ps_prochandle *P"
27.Fa "const char *filename"
28.Fa "int flags"
29.Fa "mode_t mode"
30.Fc
31.Sh DESCRIPTION
32The
33.Fn pr_open
34function injects the
35.Xr open 2
36system call into the target process
37.Fa P
38by means of the agent LWP.
39If the process handle
40.Fa P
41is the value
42.Dv NULL
43then this will be equivalent to calling
44.Xr open 2
45on the currently running process.
46.Pp
47The arguments
48.Fa filename ,
49.Fa flags ,
50and
51.Fa mode
52have the same meaning as in
53.Xr open 2 .
54See
55.Xr open 2
56for the full description and purpose of the
57.Sy open
58system call and its arguments.
59.Pp
60The
61.Fn pr_open
62function only works on active processes.
63Process handles that correspond to core files, zombie processes, or ELF objects
64do not support system call injection.
65.Sh RETURN VALUES
66Upon successful completion, the
67.Fn pr_open
68function's return value is that described in
69.Xr open 2 .
70Otherwise,
71.Sy -1
72is returned and
73.Sy errno
74is set to
75.Er ENOSYS
76to indicate that the system call could not be injected.
77.Sh ERRORS
78For the full list of errors see the
79.Sy ERRORS
80section in
81.Xr open 2 .
82.Pp
83The
84.Fn pr_open
85function will fail if:
86.Bl -tag -width Er
87.It Er ENOSYS
88An error occurred while trying to invoke the agent LWP and inject a
89system call in the process handle
90.Fa P
91or the process handle
92.Fa P
93does not support system call injection.
94.El
95.Sh INTERFACE STABILITY
96.Sy Uncommitted
97.Sh MT-LEVEL
98See
99.Sy LOCKING
100in
101.Xr libproc 3LIB .
102.Sh SEE ALSO
103.Xr open 2 ,
104.Xr libproc 3LIB ,
105.Xr proc 5
106