diff options
Diffstat (limited to 'usr/src')
165 files changed, 15760 insertions, 169 deletions
diff --git a/usr/src/cmd/newtask/newtask.c b/usr/src/cmd/newtask/newtask.c index f4f0c2fe2d..1e8e0c9350 100644 --- a/usr/src/cmd/newtask/newtask.c +++ b/usr/src/cmd/newtask/newtask.c @@ -21,6 +21,7 @@ */ /* * Copyright (c) 2013 Gary Mills + * Copyright 2015, Joyent, Inc. * * Copyright 2005 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. @@ -535,7 +536,7 @@ set_ids(struct ps_prochandle *p, struct project *project, new_prpriv = malloc(prsz); if (new_prpriv == NULL) { preserve_error(gettext("can't allocate memory")); - free(old_prpriv); + proc_free_priv(old_prpriv); return (1); } @@ -564,7 +565,7 @@ set_ids(struct ps_prochandle *p, struct project *project, "privileges")); (void) Punsetflags(p, PR_KLC); free(new_prpriv); - free(old_prpriv); + proc_free_priv(old_prpriv); return (1); } (void) __priv_bracket(PRIV_ON); @@ -574,7 +575,7 @@ set_ids(struct ps_prochandle *p, struct project *project, "privileges")); (void) Punsetflags(p, PR_KLC); free(new_prpriv); - free(old_prpriv); + proc_free_priv(old_prpriv); return (1); } (void) __priv_bracket(PRIV_OFF); @@ -614,7 +615,7 @@ set_ids(struct ps_prochandle *p, struct project *project, Pstatus(p)->pr_pid); } free(new_prpriv); - free(old_prpriv); + proc_free_priv(old_prpriv); return (error); } diff --git a/usr/src/cmd/plimit/plimit.c b/usr/src/cmd/plimit/plimit.c index b0a7fcfb03..a2af633680 100644 --- a/usr/src/cmd/plimit/plimit.c +++ b/usr/src/cmd/plimit/plimit.c @@ -23,8 +23,9 @@ * Copyright 2004 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - -#pragma ident "%Z%%M% %I% %E% SMI" /* SVr4.0 1.5 */ +/* + * Copyright 2015, Joyent, Inc. + */ #define __EXTENSIONS__ /* For strtok_r */ @@ -65,22 +66,22 @@ static void usage() { (void) fprintf(stderr, - "usage:\n" - " For each process, report all resource limits:\n" - "\t%s [-km] pid ...\n" - "\t-k\treport file sizes in kilobytes\n" - "\t-m\treport file/memory sizes in megabytes\n" - " For each process, set specified resource limits:\n" - "\t%s -{cdfnstv} soft,hard ... pid ...\n" - "\t-c soft,hard\tset core file size limits\n" - "\t-d soft,hard\tset data segment (heap) size limits\n" - "\t-f soft,hard\tset file size limits\n" - "\t-n soft,hard\tset file descriptor limits\n" - "\t-s soft,hard\tset stack segment size limits\n" - "\t-t soft,hard\tset CPU time limits\n" - "\t-v soft,hard\tset virtual memory size limits\n" - "\t(default units are as shown by the output of '%s pid')\n", - command, command, command); + "usage:\n" + " For each process, report all resource limits:\n" + "\t%s [-km] pid ...\n" + "\t-k\treport file sizes in kilobytes\n" + "\t-m\treport file/memory sizes in megabytes\n" + " For each process, set specified resource limits:\n" + "\t%s -{cdfnstv} soft,hard ... pid ...\n" + "\t-c soft,hard\tset core file size limits\n" + "\t-d soft,hard\tset data segment (heap) size limits\n" + "\t-f soft,hard\tset file size limits\n" + "\t-n soft,hard\tset file descriptor limits\n" + "\t-s soft,hard\tset stack segment size limits\n" + "\t-t soft,hard\tset CPU time limits\n" + "\t-v soft,hard\tset virtual memory size limits\n" + "\t(default units are as shown by the output of '%s pid')\n", + command, command, command); exit(2); } @@ -173,7 +174,7 @@ main(int argc, char **argv) if ((pid = proc_arg_psinfo(arg = *argv++, PR_ARG_PIDS, &psinfo, &gret)) == -1) { (void) fprintf(stderr, "%s: cannot examine %s: %s\n", - command, arg, Pgrab_error(gret)); + command, arg, Pgrab_error(gret)); retc = 1; } else if ((Pr = Pgrab(pid, Fflag, &gret)) != NULL) { if (Pcreate_agent(Pr) == 0) { @@ -183,14 +184,14 @@ main(int argc, char **argv) } else { proc_unctrl_psinfo(&psinfo); (void) printf("%d:\t%.70s\n", - (int)pid, psinfo.pr_psargs); + (int)pid, psinfo.pr_psargs); show_limits(Pr); } Pdestroy_agent(Pr); } else { (void) fprintf(stderr, - "%s: cannot control process %d\n", - command, (int)pid); + "%s: cannot control process %d\n", + command, (int)pid); retc = 1; } Prelease(Pr, 0); @@ -198,15 +199,15 @@ main(int argc, char **argv) if ((gret == G_SYS || gret == G_SELF) && !set) { proc_unctrl_psinfo(&psinfo); (void) printf("%d:\t%.70s\n", (int)pid, - psinfo.pr_psargs); + psinfo.pr_psargs); if (gret == G_SYS) (void) printf(" [system process]\n"); else show_limits(NULL); } else { (void) fprintf(stderr, - "%s: %s: %d\n", - command, Pgrab_error(gret), (int)pid); + "%s: %s: %d\n", + command, Pgrab_error(gret), (int)pid); retc = 1; } } @@ -521,7 +522,7 @@ set_one_limit(struct ps_prochandle *Pr, int which, rlim64_t cur, rlim64_t max) /* Keep track of original privileges */ old_prpriv = proc_get_priv(Pstatus(Pr)->pr_pid); if (old_prpriv == NULL) { - free(new_prpriv); + proc_free_priv(new_prpriv); (void) fprintf(stderr, "%s: unable to get process privileges " "for pid %d: %s\n", command, @@ -539,8 +540,8 @@ set_one_limit(struct ps_prochandle *Pr, int which, rlim64_t cur, rlim64_t max) " pid %d: %s\n", command, Pstatus(Pr)->pr_pid, strerror(errno)); (void) Punsetflags(Pr, PR_KLC); - free(new_prpriv); - free(old_prpriv); + proc_free_priv(new_prpriv); + proc_free_priv(old_prpriv); return (1); } } @@ -576,11 +577,11 @@ set_one_limit(struct ps_prochandle *Pr, int which, rlim64_t cur, rlim64_t max) ret = 1; } - free(old_prpriv); + proc_free_priv(old_prpriv); } if (new_prpriv != NULL) - free(new_prpriv); + proc_free_priv(new_prpriv); return (ret); } diff --git a/usr/src/cmd/prctl/prctl.c b/usr/src/cmd/prctl/prctl.c index 3b405d2aa7..1dfbe41926 100644 --- a/usr/src/cmd/prctl/prctl.c +++ b/usr/src/cmd/prctl/prctl.c @@ -21,6 +21,7 @@ /* * Copyright (c) 2001, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2015, Joyent, Inc. */ #include <unistd.h> @@ -1777,7 +1778,7 @@ prctl_setrctl(struct ps_prochandle *Pr, const char *name, preserve_error(gettext("cannot get process " "privileges for pid %d: %s"), Pstatus(Pr)->pr_pid, strerror(errno)); - free(new_prpriv); + proc_free_priv(new_prpriv); return (1); } (void) priv_addset(eset, PRIV_SYS_RESOURCE); @@ -1788,8 +1789,8 @@ prctl_setrctl(struct ps_prochandle *Pr, const char *name, "privileges for pid %d: %s"), Pstatus(Pr)->pr_pid, strerror(errno)); (void) Punsetflags(Pr, PR_KLC); - free(new_prpriv); - free(old_prpriv); + proc_free_priv(new_prpriv); + proc_free_priv(old_prpriv); return (1); } } @@ -1880,7 +1881,7 @@ bail: if (old_prpriv != NULL) { if (Psetpriv(Pr, old_prpriv) != 0) relinquish_failed = B_TRUE; - free(old_prpriv); + proc_free_priv(old_prpriv); } if (relinquish_failed) { /* @@ -1900,7 +1901,7 @@ bail: Pstatus(Pr)->pr_pid); } if (new_prpriv != NULL) - free(new_prpriv); + proc_free_priv(new_prpriv); return (ret); } @@ -2171,9 +2172,11 @@ grab_process_by_id(char *idname, rctl_entity_t type, pr_info_handle_t *p, &prpriv->pr_sets[prpriv->pr_setsize * priv_getsetbyname(PRIV_LIMIT)]; if (!priv_ismember(prset, PRIV_SYS_RESOURCE)) { + proc_free_priv(prpriv); release_process(p->pr); continue; } + proc_free_priv(prpriv); } found = 1; diff --git a/usr/src/cmd/ptools/ppriv/ppriv.c b/usr/src/cmd/ptools/ppriv/ppriv.c index b696c63eb7..beefc0ad35 100644 --- a/usr/src/cmd/ptools/ppriv/ppriv.c +++ b/usr/src/cmd/ptools/ppriv/ppriv.c @@ -23,6 +23,7 @@ */ /* * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright 2015, Joyent, Inc. */ /* * Program to examine or set process privileges. @@ -200,7 +201,7 @@ look(char *arg) "%s: %s: bad PRNOTES section, size = %lx\n", command, arg, (long)sz); Prelease(Pr, 0); - free(ppriv); + Ppriv_free(Pr, ppriv); return (1); } @@ -209,11 +210,11 @@ look(char *arg) if (Psetpriv(Pr, ppriv) != 0) { perr(command); Prelease(Pr, 0); - free(ppriv); + Ppriv_free(Pr, ppriv); return (1); } Prelease(Pr, 0); - free(ppriv); + Ppriv_free(Pr, ppriv); return (0); } @@ -288,7 +289,7 @@ look(char *arg) } } Prelease(Pr, 0); - free(ppriv); + Ppriv_free(Pr, ppriv); return (0); } diff --git a/usr/src/cmd/truss/main.c b/usr/src/cmd/truss/main.c index 151c7492ad..23c2056314 100644 --- a/usr/src/cmd/truss/main.c +++ b/usr/src/cmd/truss/main.c @@ -21,6 +21,7 @@ /* * Copyright (c) 1989, 2010, Oracle and/or its affiliates. All rights reserved. + * Copyright 2015, Joyent, Inc. */ /* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */ @@ -2373,7 +2374,7 @@ show_cred(private_t *pri, int new, int loadonly) } if (privdata != NULL) - free(privdata); + proc_free_priv(privdata); credentials = cred; privdata = privs; } diff --git a/usr/src/lib/libproc/amd64/Makefile b/usr/src/lib/libproc/amd64/Makefile index 01b08012b0..84965cdd48 100644 --- a/usr/src/lib/libproc/amd64/Makefile +++ b/usr/src/lib/libproc/amd64/Makefile @@ -32,4 +32,4 @@ include ../../Makefile.lib.64 CPPFLAGS += -D_SYSCALL32 LDLIBS += -lsaveargs -install: all $(ROOTLIBS64) $(ROOTLINKS64) +install: all $(ROOTLIBS64) $(ROOTLINKS64) $(ROOTLINT64) diff --git a/usr/src/lib/libproc/common/Pcontrol.c b/usr/src/lib/libproc/common/Pcontrol.c index 751c0c3f8a..3b6ef35709 100644 --- a/usr/src/lib/libproc/common/Pcontrol.c +++ b/usr/src/lib/libproc/common/Pcontrol.c @@ -26,6 +26,7 @@ * Portions Copyright 2007 Chad Mynhier * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. * Copyright (c) 2013 by Delphix. All rights reserved. + * Copyright 2015, Joyent, Inc. */ #include <assert.h> @@ -1320,6 +1321,13 @@ Pldt(struct ps_prochandle *P, struct ssd *pldt, int nldt) } #endif /* __i386 */ +/* ARGSUSED */ +void +Ppriv_free(struct ps_prochandle *P, prpriv_t *prv) +{ + free(prv); +} + /* * Return a malloced process privilege structure in *pprv. */ diff --git a/usr/src/lib/libproc/common/Pgcore.c b/usr/src/lib/libproc/common/Pgcore.c index 58cc308a17..b20ce2d12a 100644 --- a/usr/src/lib/libproc/common/Pgcore.c +++ b/usr/src/lib/libproc/common/Pgcore.c @@ -25,7 +25,7 @@ */ /* * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. - * Copyright (c) 2014, Joyent, Inc. All rights reserved. + * Copyright 2015 Joyent, Inc. * Copyright (c) 2013 by Delphix. All rights reserved. */ @@ -1392,10 +1392,10 @@ Pfgcore(struct ps_prochandle *P, int fd, core_content_t content) pprivsz = PRIV_PRPRIV_SIZE(ppriv); if (write_note(fd, NT_PRPRIV, ppriv, pprivsz, &doff) != 0) { - free(ppriv); + Ppriv_free(P, ppriv); goto err; } - free(ppriv); + Ppriv_free(P, ppriv); if ((pinfo = getprivimplinfo()) == NULL) goto err; diff --git a/usr/src/lib/libproc/common/libproc.h b/usr/src/lib/libproc/common/libproc.h index 01970f439e..de01309025 100644 --- a/usr/src/lib/libproc/common/libproc.h +++ b/usr/src/lib/libproc/common/libproc.h @@ -25,23 +25,12 @@ * * Portions Copyright 2007 Chad Mynhier * Copyright 2012 DEY Storage Systems, Inc. All rights reserved. - * Copyright (c) 2013, Joyent, Inc. All rights reserved. + * Copyright 2015, Joyent, Inc. * Copyright (c) 2013 by Delphix. All rights reserved. */ /* * Interfaces available from the process control library, libproc. - * - * libproc provides process control functions for the /proc tools - * (commands in /usr/proc/bin), /usr/bin/truss, and /usr/bin/gcore. - * libproc is a private support library for these commands only. - * It is _not_ a public interface, although it might become one - * in the fullness of time, when the interfaces settle down. - * - * In the meantime, be aware that any program linked with libproc in this - * release of Solaris is almost guaranteed to break in the next release. - * - * In short, do not use this header file or libproc for any purpose. */ #ifndef _LIBPROC_H @@ -274,6 +263,7 @@ extern const pstatus_t *Pstatus(struct ps_prochandle *); extern int Pcred(struct ps_prochandle *, prcred_t *, int); extern int Psetcred(struct ps_prochandle *, const prcred_t *); extern int Ppriv(struct ps_prochandle *, prpriv_t **); +extern void Ppriv_free(struct ps_prochandle *, prpriv_t *); extern int Psetpriv(struct ps_prochandle *, prpriv_t *); extern void *Pprivinfo(struct ps_prochandle *); extern int Psetzoneid(struct ps_prochandle *, zoneid_t); @@ -703,6 +693,7 @@ extern pid_t proc_arg_xpsinfo(const char *, int, psinfo_t *, int *, extern int proc_get_auxv(pid_t, auxv_t *, int); extern int proc_get_cred(pid_t, prcred_t *, int); extern prpriv_t *proc_get_priv(pid_t); +extern void proc_free_priv(prpriv_t *); extern int proc_get_psinfo(pid_t, psinfo_t *); extern int proc_get_status(pid_t, pstatus_t *); diff --git a/usr/src/lib/libproc/common/llib-lproc b/usr/src/lib/libproc/common/llib-lproc index 35907f04d0..a5fb8a19a2 100644 --- a/usr/src/lib/libproc/common/llib-lproc +++ b/usr/src/lib/libproc/common/llib-lproc @@ -50,6 +50,7 @@ const psinfo_t *Ppsinfo(struct ps_prochandle *Pr); const pstatus_t *Pstatus(struct ps_prochandle *Pr); int Pcred(struct ps_prochandle *Pr, prcred_t *pcrp, int ngroups); int Ppriv(struct ps_prochandle *Pr, prpriv_t **pprivp); +void Ppriv_free(struct ps_prochandle *Pr, prpriv_t *privp); void Psync(struct ps_prochandle *Pr); int Pcreate_agent(struct ps_prochandle *Pr); void Pdestroy_agent(struct ps_prochandle *Pr); @@ -343,6 +344,7 @@ int pr_waitid(struct ps_prochandle *Pr, /* proc_get_info.c */ int proc_get_cred(pid_t pid, prcred_t *credp, int ngroups); prpriv_t *proc_get_priv(pid_t pid); +void proc_free_priv(prpriv_t *); int proc_get_psinfo(pid_t pid, psinfo_t *psp); int proc_get_status(pid_t pid, pstatus_t *psp); int proc_get_auxv(pid_t pid, auxv_t *pauxv, int naux); diff --git a/usr/src/lib/libproc/common/mapfile-vers b/usr/src/lib/libproc/common/mapfile-vers index 666d63fbf0..a79e9d74a2 100644 --- a/usr/src/lib/libproc/common/mapfile-vers +++ b/usr/src/lib/libproc/common/mapfile-vers @@ -126,8 +126,10 @@ SYMBOL_VERSION SUNWprivate_1.1 { Pgrab_file; Pgrab_ops; Pisprocdir; + Pissyscall; Pissyscall_prev; Plmid; + Plmid_to_ctf; Plmid_to_loadobj; Plmid_to_map; Plookup_by_addr; @@ -156,6 +158,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { Ppltdest; Ppriv; Pprivinfo; + Ppriv_free; Ppsinfo; Pputareg; pr_access; @@ -204,6 +207,7 @@ SYMBOL_VERSION SUNWprivate_1.1 { proc_fltname; proc_fltset2str; proc_flushstdio; + proc_free_priv; proc_get_auxv; proc_get_cred; proc_get_priv; diff --git a/usr/src/lib/libproc/common/proc_get_info.c b/usr/src/lib/libproc/common/proc_get_info.c index 7fb88c4212..e0817c543f 100644 --- a/usr/src/lib/libproc/common/proc_get_info.c +++ b/usr/src/lib/libproc/common/proc_get_info.c @@ -22,8 +22,9 @@ * Copyright 2006 Sun Microsystems, Inc. All rights reserved. * Use is subject to license terms. */ - -#pragma ident "%Z%%M% %I% %E% SMI" +/* + * Copyright 2015, Joyent, Inc. + */ #include <stdio.h> #include <stdlib.h> @@ -67,6 +68,12 @@ proc_get_cred(pid_t pid, prcred_t *credp, int ngroups) return (rv); } +void +proc_free_priv(prpriv_t *prv) +{ + free(prv); +} + /* * Malloc and return a properly sized structure. */ diff --git a/usr/src/lib/libproc/sparcv9/Makefile b/usr/src/lib/libproc/sparcv9/Makefile index 1e20da114e..1d1381a640 100644 --- a/usr/src/lib/libproc/sparcv9/Makefile +++ b/usr/src/lib/libproc/sparcv9/Makefile @@ -22,8 +22,6 @@ # Copyright 2007 Sun Microsystems, Inc. All rights reserved. # Use is subject to license terms. # -# ident "%Z%%M% %I% %E% SMI" -# # This is a 64-bit build, and as such needs 64-bit ELF support CMNOBJS64 = Psymtab_machelf64.o @@ -33,4 +31,4 @@ include ../../Makefile.lib.64 CPPFLAGS += -D_SYSCALL32 -install: all $(ROOTLIBS64) $(ROOTLINKS64) +install: all $(ROOTLIBS64) $(ROOTLINKS64) $(ROOTLINT64) diff --git a/usr/src/man/man3/Intro.3 b/usr/src/man/man3/Intro.3 index 66b30997cb..6bbef47d4c 100644 --- a/usr/src/man/man3/Intro.3 +++ b/usr/src/man/man3/Intro.3 @@ -1,13 +1,13 @@ '\" te +.\" Copyright 2015 Joyent, Inc. .\" Copyright (c) 2009, Sun Microsystems, Inc. All Rights Reserved. .\" The contents of this file are subject to the terms of the Common Development and Distribution License (the "License"). You may not use this file except in compliance with the License. You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE or http://www.opensolaris.org/os/licensing. .\" See the License for the specific language governing permissions and limitations under the License. When distributing Covered Code, include this CDDL HEADER in each file and include the License file at usr/src/OPENSOLARIS.LICENSE. If applicable, add the following below this CDDL HEADER, with .\" the fields enclosed by brackets "[]" replaced with your own identifying information: Portions Copyright [yyyy] [name of copyright owner] -.TH INTRO 3 "Apr 1, 2009" +.TH INTRO 3 "Jul 19, 2015" .SH NAME Intro, intro \- introduction to functions and libraries .SH DESCRIPTION -.sp .LP This section describes functions found in various Solaris libraries, other than those functions described in Section 2 of this manual that directly invoke UNIX @@ -19,7 +19,6 @@ volumes as described below. The first volume contains pages describing the contents of each shared library and each header used by the functions, macros, and external variables described in the remaining volumes. .SS "Library Interfaces and Headers" -.sp .LP This volume describes the contents of each shared library and each header used by functions, macros, and external variables described in the remaining @@ -69,7 +68,6 @@ development system; they do have to be present on the target execution system. .RE .SS "Basic Library Functions" -.sp .LP The functions described in this volume are the core C library functions that are basic to application development. @@ -144,7 +142,6 @@ automatically linked by the C compilation system. Specify \fB-lucb\fR on the .RE .SS "Networking Library Functions" -.sp .LP The functions described in this volume comprise the various networking libraries. @@ -341,7 +338,6 @@ portability is not required, the sockets interfaces in \fBlibsocket\fR and TLI APIs, the \fBXTI\fR interfaces (available with \fBlibxnet\fR) are recommended over the \fBTLI\fR interfaces (available with \fBlibnsl\fR). .SS "Curses Library Functions" -.sp .LP The functions described in this volume comprise the libraries that provide graphics and character screen updating capabilities. @@ -437,8 +433,7 @@ update activities. The X/Open Curses library conforms fully with Issue 4 of the X/Open Extended Curses specification. See \fBlibcurses\fR(3XCURSES). .RE -.SS "Extended Library Functions, Vol. 1" -.sp +.SS "Extended Library Functions" .LP The functions described in this volume comprise the following specialized libraries: @@ -596,11 +591,6 @@ automatically linked by the C compilation system. Specify \fB-lfstyp\fR on the \fBcc\fR command line to link with this library. See \fBlibfstyp\fR(3LIB). .RE -.SS "Extended Library Functions, Vol. 2" -.sp -.LP -The functions described in this volume comprise the following specialized -libraries: .sp .ne 2 .na @@ -760,11 +750,6 @@ automatically linked by the C compilation system. Specify \fB-lmvec\fR on the \fBcc\fR command line to link with this library. See \fBlibmvec\fR(3LIB). .RE -.SS "Extended Library Functions, Vol. 3" -.sp -.LP -The functions described in this volume comprise the following specialized -libraries: .sp .ne 2 .na @@ -851,6 +836,20 @@ See \fBlibpool\fR(3LIB). .sp .ne 2 .na +\fB(3PROC)\fR +.ad +.sp .6 +.RS 4n +These functions consittue the process mainpulation library, +\fBlibproc\fR. This library is implemented as a shared object, +\fBlibproc.so\fR, but it is not automatically linked by the C compilation +system. Specify \fB-lproc\fR on the \fBcc\fR command line to link with this +library. See \fBlibproc\fR(3LIB). +.RE + +.sp +.ne 2 +.na \fB(3PROJECT)\fR .ad .sp .6 @@ -875,11 +874,6 @@ automatically linked by the C compilation system. Specify \fB-lrsm\fR on the \fBcc\fR command line to link with this library. See \fBlibrsm\fR(3LIB). .RE -.SS "Extended Library Functions, Vol. 4" -.sp -.LP -The functions described in this volume comprise the following specialized -libraries: .sp .ne 2 .na @@ -1079,7 +1073,6 @@ with this library. See \fBlibXtsol\fR(3LIB). .RE .SS "Multimedia Library Functions" -.sp .ne 2 .na \fB(3MLIB)\fR @@ -1106,7 +1099,6 @@ automatically linked by the C compilation system. Specify \fB-lmms\fR on the .RE .SH DEFINITIONS -.sp .LP A character is any bit pattern able to fit into a byte on the machine. In some international languages, however, a "character" might require more than one @@ -1124,7 +1116,6 @@ return pointers return \fINULL\fR to indicate an error. The macro \fINULL\fR is defined in <\fBstdio.h\fR>. Types of the form \fBsize_t\fR are defined in the appropriate headers. .SH MULTITHREADED APPLICATIONS -.sp .LP Both POSIX threads and Solaris threads can be used within the same application. Their implementations are completely compatible with each other; however, only @@ -1189,13 +1180,11 @@ and libraries manual pages (see \fBattributes\fR(5)). If a manual page does not state explicitly that an interface is MT-Safe, the user should assume that the interface is unsafe. .SH REALTIME APPLICATIONS -.sp .LP The environment variable \fBLD_BIND_NOW\fR must be set to a non-null value to enable early binding. Refer to the "When Relocations are Processed" chapter in \fILinker and Libraries Guide\fR for additional information. .SH FILES -.sp .ne 2 .na \fB\fIINCDIR\fR\fR @@ -1224,7 +1213,6 @@ shared libraries .RE .SH ACKNOWLEDGMENTS -.sp .LP Sun Microsystems, Inc. gratefully acknowledges The Open Group for permission to reproduce portions of its copyrighted documentation. Original documentation @@ -1253,7 +1241,6 @@ http://www.opengroup.org/unix/online.html\&. .LP This notice shall appear on any product containing this material. .SH SEE ALSO -.sp .LP \fBar\fR(1), \fBld\fR(1), \fBfork\fR(2), \fBstdio\fR(3C), \fBattributes\fR(5), \fBstandards\fR(5) @@ -1267,7 +1254,6 @@ This notice shall appear on any product containing this material. .LP \fIANSI C Programmer's Guide\fR .SH DIAGNOSTICS -.sp .LP For functions that return floating-point values, error handling varies according to compilation mode. Under the \fB-Xt\fR (default) option to @@ -1278,7 +1264,6 @@ arguments or when the value is not representable. In the \fB-Xa\fR and \fB\(+-HUGE\fR\&. (\fBHUGE_VAL\fR and \fBHUGE\fR are defined in \fBmath.h\fR to be infinity and the largest-magnitude single-precision number, respectively.) .SH NOTES -.sp .LP None of the functions, external variables, or macros should be redefined in the user's programs. Any other name can be redefined without affecting the behavior diff --git a/usr/src/man/man3lib/Makefile b/usr/src/man/man3lib/Makefile index 48abd74fd8..220ed2ae3e 100644 --- a/usr/src/man/man3lib/Makefile +++ b/usr/src/man/man3lib/Makefile @@ -76,6 +76,7 @@ MANFILES= libMPAPI.3lib \ libpicltree.3lib \ libpkcs11.3lib \ libpool.3lib \ + libproc.3lib \ libproject.3lib \ libpthread.3lib \ libresolv.3lib \ diff --git a/usr/src/man/man3lib/libproc.3lib b/usr/src/man/man3lib/libproc.3lib new file mode 100644 index 0000000000..6803c1512d --- /dev/null +++ b/usr/src/man/man3lib/libproc.3lib @@ -0,0 +1,1212 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 08, 2016 +.Dt LIBPROC 3LIB +.Os +.Sh NAME +.Nm libproc +.Nd process control library +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Sh DESCRIPTION +The +.Nm +library provides consumers a general series of interfaces to inspect +and control both live processes and core files. It is intended for +introspection tools such as debuggers by providing a high-level +interface to the /proc file system +.Pf ( Xr proc 4 ) . +.Pp +The +.Nm +library provides interfaces that focus on: +.Bl -bullet -offset indent +.It +Creating and attaching to live process, core files, and arbitrary ELF +objects. +.It +Interrogating the state of a process or core file. +.It +Manipulating the current state of a process or thread. +.It +Interrogating the state of threads of a process or core file. +.It +Running system calls in the context of another process. +.It +Various utilities for iterating process and core file file descriptors, +mappings, symbols, and more. +.It +Various utilities to support debugging tools. +.El +.Ss Live Processes +The +.Nm +library can be used to manipulate running processes and to create new +ones. To manipulate an existing process first +.Em grab +it with the +.Em Pgrab +function. A process is generally stopped as a side effect of grabbing +it. Callers must exercise caution, as if they do not use the library +correctly, or they terminate unexpectedly, a process may remain +stopped. +.Pp +Unprivileged users may only grab their own processes. Users with the +privilege +.Sy PRIV_PROC_OWNER +may manipulate processes that they do not own; however, additional +restrictions as described in +.Xr privileges 5 +apply. +.Pp +In addition, the +.Fn Pcreate +and +.Fn Pxcreate +functions may be used to create processes which are always controlled by +the library. +.Ss Core Files +The +.Nm +library has the ability to open and interpret core files produced by +processes on the system. Process core dump generation is controlled by +the +.Xr coreadm 1M +command. In addition, the library has the ability to understand and +interpret core dumps generated by Linux kernel and can provide a subset +of its functionality on such core files, provided the original binary is +also present. +.Pp +Not all functions in the +.Nm +library are valid for core files. In general, none of the commands +which manipulate the current state of a process or thread or that try +to force system calls on a victim process will work. Furthermore +several of the information and iteration interfaces are limited based +on the data that is available in the core file. For example, if the +core file is of a process that omits the frame pointer, the ability to +iterate the stack will be limited. +.Pp +Use the +.Fn Pgrab_core +or +.Fn Pfgrab_core +function to open a core file. Use the +.Fn Pgrab_file +function to open an ELF object file. +This is useful for obtaining information stored in ELF headers and +sections. +.Ss Debug Information +Many of the operations in the library rely on debug information being +present in a process and its associated libraries. The library +leverages symbol table information, CTF data +.Pf ( Xr CTF 4 ) +sections, and frame unwinding information based on the use of an ABI +defined frame pointer, eg. +.Sy %ebp +and +.Sy %rbp +on x86 systems. +.Pp +Some software providers strip programs of this information or build +their executables such that the information will not be present in a +core dump. To deal with this fact, the library is able to consume +information that is not present in the core file or the running +process. It can both consume it from the underlying executable and it +also supports finding it from related ELF objects that are linked to +it via the +.Sy .gnu_debuglink +and the +.Sy .note.gnu.build-id +ELF sections. +.Ss Iteration Interfaces +The +.Nm +library provides the ability to iterate over the following aspects of a +process or core file: +.Bl -bullet -offset indent +.It +Active threads +.It +Active and zombie threads +.It +All non-system processes +.It +All process mappings +.It +All objects in a process +.It +The environment +.It +The symbol table +.It +Stack frames +.It +File Descriptors +.El +.Ss System Call Injection +The +.Nm +library allows the caller to force system calls to be executed in the +context of the running process. This can be used both as a tool for +introspection, allowing one to get information outside its current +context as well as performing modifications to a process. +.Pp +These functions run in the context of the calling process. This is +often an easier way of getting non-exported information about a +process from the system. For example, the +.Xr pfiles 1 +command uses this interface to get more detailed information about a +process's open file descriptors, which it would not have access to +otherwise. +.Sh INTERFACES +The shared object +.Sy libproc.so.1 +provides the public interfaces defined below. See +.Xr Intro 3 +for additional information on shared object interfaces. Functions are +organized into categories that describe their purpose. Individual +functions are documented in their own manual pages. +.Ss Creation, Grabbing, and Releasing +The following routines are related to creating library handles, +grabbing cores, processes, and threads, and releasing those resources. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Lfree Ta Sy Lgrab +.It Sy Lgrab_error Ta Sy Pcreate +.It Sy Pcreate_agent Ta Sy Pcreate_callback +.It Sy Pcreate_error Ta Sy Pdestroy_agent +.It Sy Pfgrab_core Ta Sy Pfree +.It Sy Pgrab Ta Sy Pgrab_core +.It Sy Pgrab_error Ta Sy Pgrab_file +.It Sy Pgrab_ops Ta Sy Prelease +.It Sy Preopen Ta Sy Pxcreate +.El +.Ss Process interrogation and manipulation +The following routines obtain information about a process and allow +manipulation of the process itself. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Paddr_to_ctf Ta Sy Paddr_to_loadobj +.It Sy Paddr_to_map Ta Sy Paddr_to_text_map +.It Sy Pasfd Ta Sy Pclearfault +.It Sy Pclearsig Ta Sy Pcontent +.It Sy Pcred Ta Sy Pctlfd +.It Sy Pdelbkpt Ta Sy Pdelwapt +.It Sy Pdstop Ta Sy Pexecname +.It Sy Pfault Ta Sy Pfgcore +.It Sy Pgcore Ta Sy Pgetareg +.It Sy Pgetauxval Ta Sy Pgetauxvec +.It Sy Pgetenv Ta Sy Pisprocdir +.It Sy Pissyscall_prev Ta Sy Plmid +.It Sy Plmid_to_loadobj Ta Sy Plmid_to_map +.It Sy Plookup_by_addr Ta Sy Plookup_by_name +.It Sy Plwp_alt_stack Ta Sy Plwp_getfpregs +.It Sy Plwp_getpsinfo Ta Sy Plwp_getregs +.It Sy Plwp_getspymaster Ta Sy Plwp_main_stack +.It Sy Plwp_setfpregs Ta Sy Plwp_setregs +.It Sy Plwp_stack Ta Sy Pname_to_ctf +.It Sy Pname_to_loadobj Ta Sy Pname_to_map +.It Sy Pobjname Ta Sy Pobjname_resolved +.It Sy Pplatform Ta Sy Ppltdest +.It Sy Ppriv Ta Sy Ppsinfo +.It Sy Pputareg Ta Sy Prd_agent +.It Sy Pread Ta Sy Pread_string +.It Sy Preset_maps Ta Sy Psetbkpt +.It Sy Psetcred Ta Sy Psetfault +.It Sy Psetflags Ta Sy Psetpriv +.It Sy Psetrun Ta Sy Psetsignal +.It Sy Psetsysentry Ta Sy Psetsysexit +.It Sy Psetwapt Ta Sy Psetzoneid +.It Sy Psignal Ta Sy Pstate +.It Sy Pstatus Ta Sy Pstop +.It Sy Pstopstatus Ta Sy Psync +.It Sy Psysentry Ta Sy Psysexit +.It Sy Puname Ta Sy Punsetflags +.It Sy Pupdate_maps Ta Sy Pupdate_syms +.It Sy Pwait Ta Sy Pwrite +.It Sy Pxecbkpt Ta Sy Pxecwapt +.It Sy Pxlookup_by_addr Ta Sy Pxlookup_by_addr_resolved +.It Sy Pxlookup_by_name Ta Sy Pzonename +.It Sy Pzonepath Ta Sy Pzoneroot +.El +.Ss Thread interrogation and manipulation +The following routines obtain information about a thread and allow +manipulation of the thread itself. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Lalt_stack Ta Sy Lclearfault +.It Sy Lclearsig Ta Sy Lctlfd +.It Sy Ldstop Ta Sy Lgetareg +.It Sy Lmain_stack Ta Sy Lprochandle +.It Sy Lpsinfo Ta Sy Lputareg +.It Sy Lsetrun Ta Sy Lstack +.It Sy Lstate Ta Sy Lstatus +.It Sy Lstop Ta Sy Lsync +.It Sy Lwait Ta Sy Lxecbkpt +.It Sy Lxecwapt Ta "" +.El +.Ss System Call Injection +The following routines are used to inject specific system calls and have +them run in the context of a process. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy pr_access Ta Sy pr_close +.It Sy pr_creat Ta Sy pr_door_info +.It Sy pr_exit Ta Sy pr_fcntl +.It Sy pr_fstat Ta Sy pr_fstat64 +.It Sy pr_fstatvfs Ta Sy pr_getitimer +.It Sy pr_getpeername Ta Sy pr_getpeerucred +.It Sy pr_getprojid Ta Sy pr_getrctl +.It Sy pr_getrlimit Ta Sy pr_getrlimit64 +.It Sy pr_getsockname Ta Sy pr_getsockopt +.It Sy pr_gettaskid Ta Sy pr_getzoneid +.It Sy pr_ioctl Ta Sy pr_link +.It Sy pr_llseek Ta Sy pr_lseek +.It Sy pr_lstat Ta Sy pr_lstat64 +.It Sy pr_memcntl Ta Sy pr_meminfo +.It Sy pr_mmap Ta Sy pr_munmap +.It Sy pr_open Ta Sy pr_processor_bind +.It Sy pr_rename Ta Sy pr_setitimer +.It Sy pr_setrctl Ta Sy pr_setrlimit +.It Sy pr_setrlimit64 Ta Sy pr_settaskid +.It Sy pr_sigaction Ta Sy pr_stat +.It Sy pr_stat64 Ta Sy pr_statvfs +.It Sy pr_unlink Ta Sy pr_waitid +.El +.Ss Iteration routines +These routines are used to iterate over the contents of a process. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Penv_iter Ta Sy Plwp_iter +.It Sy Plwp_iter_all Ta Sy Pmapping_iter +.It Sy Pmapping_iter_resolved Ta Sy Pobject_iter +.It Sy Pobject_iter_resolved Ta Sy Pstack_iter +.It Sy Psymbol_iter Ta Sy Psymbol_iter_by_addr +.It Sy Psymbol_iter_by_lmid Ta Sy Psymbol_iter_by_name +.It Sy Pxsymbol_iter Ta Sy Pfdinfo_iter +.El +.Ss Utility routines +The following routines are utilities that are useful to consumers of the +library. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Perror_printf Ta Sy proc_arg_grab +.It Sy proc_arg_psinfo Ta Sy proc_arg_xgrab +.It Sy proc_arg_xpsinfo Ta Sy proc_content2str +.It Sy proc_finistdio Ta Sy proc_fltname +.It Sy proc_fltset2str Ta Sy proc_flushstdio +.It Sy proc_get_auxv Ta Sy proc_get_cred +.It Sy proc_get_priv Ta Sy proc_get_psinfo +.It Sy proc_get_status Ta Sy proc_initstdio +.It Sy proc_lwp_in_set Ta Sy proc_lwp_range_valid +.It Sy proc_signame Ta Sy proc_sigset2str +.It Sy proc_str2content Ta Sy proc_str2flt +.It Sy proc_str2fltset Ta Sy proc_str2sig +.It Sy proc_str2sigset Ta Sy proc_str2sys +.It Sy proc_str2sysset Ta Sy proc_sysname +.It Sy proc_sysset2str Ta Sy proc_unctrl_psinfo +.It Sy proc_walk Ta "" +.El +.Ss x86 Specific Routines +The following routines are specific to the x86, 32-bit and 64-bit, +versions of the +.Nm +library. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Pldt Ta Sy proc_get_ldt +.El +.Ss SPARC specific Routines +The following functions are specific to the SPARC, 32-bit and 64-bit, +versions of the +.Nm +library. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Plwp_getgwindows Ta Sy Plwp_getxregs +.It Sy Plwp_setxregs Ta Sy "" +.El +.Pp +The following functions are specific to the 64-bit SPARC version of the +.Nm +library. +.Bl -column -offset indent ".Sy Pmapping_iter_resolved" ".Sy Psymbol_iter_by_addr" +.It Sy Plwp_getasrs Ta Sy Plwp_setasrs +.El +.Sh PROCESS STATES +Every process handle that exists in +.Nm +has a state. In some cases, such as for core files, these states are +static. In other cases, such as handles that correspond to a +running process or a created process, these states are dynamic and +change based on actions taken in the library. The state can be obtained +with the +.Xr Pstate 3PROC +function. +.Pp +The various states are: +.Bl -tag -width Dv -offset indent +.It Dv PS_RUN +An actively running process. This may be a process that was obtained +by creating it with functions such as +.Xr Pcreate 3PROC +or by grabbing an existing process such as +.Xr Pgrab 3PROC . +.It Dv PS_STOP +An active process that is no longer executing. A process may stop for +many reasons such as an explicit stop request (through +.Xr pstop 1 +for example) or if a tracing event is hit. +.Pp +The reason a process is stopped may be obtained through the thread's +.Sy lwpstatus_t +structure read directly from /proc or obtained through the +.Xr Lstatus 3PROC +function. +.It Dv PS_LOST +Control over the process has been lost. This may happen when the +process executes a new image requiring a different set of privileges. +To resume control call +.Xr Preopen 3PROC . For more information on losing control of a process, +see +.Xr proc 4 . +.It DV PS_UNDEAD +A zombie process. It has terminated, but it has not been cleaned up +yet by its parent. For more on the conditions of becoming a zombie, +see +.Xr exec 2 . +.It DV_PS_DEAD +Processes in this state are always core files. See the earlier section +.Sx Core Files +for more information on working with core files. +.It Dv PS_IDLE +A process that has never been run. This is always the case for handles +that refer to files as the files cannot be executed. Those process +handles are obtained through calling +.Xr Pgrab_file 3PROC . +.El +.Pp +Many functions relating to tracing processes, for example +.Xr Psignal 3PROC , +.Xr Psetsignal 3PROC , +.Xr Psetfault 3PROC , +.Xr Psetentry 3PROC , +and others, mention that they only act upon +.Em Active Processes . +This specifically refers to processes whose state are in +.Dv PS_RUN +and +.Dv PS_STOP . +Process handles in the other states have no notion of settable tracing +flags, though core files +.Pf ( type Dv PS_DEAD ) , +======= +may have a read-only snapshot of their tracing settings available. +.Sh TYPES +The +.Nm +library uses many types that come from the /proc file system +.Pf ( Xr proc 4 ) +and the ELF format +.Pf ( Xr elf 3ELF ) . +However, it also defines the following types: +.Pp +.Sy struct ps_prochandle +.Pp +The +.Sy struct ps_prochandle +is an opaque handle to the library and the core element of control for a +process. Consumers obtain pointers to a handle through the use of the +.Fn Pcreate , +.Fn Pgrab , +and related functions. When a caller is done with a handle, then it +should call one of the +.Fn Pfree +and +.Fn Prelease +functions to relinquish the handle, release associated resources, and +potentially set the process to run again. +.Pp +.Sy struct ps_lwphandle +.Pp +The +.Sy struct ps_lwphandle +is analogous to the +.Sy struct ps_prochandle , +but it represents the control of an individual thread, rather than a +process. Consumers obtain pointers to a handle through the +.Fn Lgrab +function and relinquish it with the +.Fn Lfree +function. +.Pp +.Sy core_content_t +.Pp +The +.Sy core_content_t +is a value which describes the various content types of core files. +These are used in functions such as +.Xr Pcontent 3PROC +and +.Xr Pgcore 3PROC +to describe and control the types of content that get included. Various +content types may be included together through a bitwise-inclusive-OR. +The default system core contents are controlled with the +.Xr coreadm 1M +tool. The following table lists the current set of core contents in the +system, though the set may increase over time. The string after the +macro is the human readable string that corresponds with the constant +and is used by +.Xr coreadm 1M , +.Xr proc_content2str 3PROC , +and +.Xr proc_str2content 3PROC . +.Bl -tag -offset indent -width indent +.It Dv CC_CONTENT_STACK ("stack") +The contents include the process stack. Note, this only covers the main +thread's stack. The stack of other threads is covered by +.Dv CC_CONTENT_ANON . +.It Dv CC_CONTENT_HEAP ("heap") +The contents include the process heap. +.It Dv CC_CONTENT_SHFILE ("shfile") +The contents include shared mappings that are backed by files (e.g. +mapped through +.Xr mmap 2 +with the +.Dv MAP_SHARED +flag). +.It Dv CC_CONTENT_SHANNON ("shannon") +The contents include shared mappings that are backed by anonymous memory +(e.g. mapped through +.Xr mmap 2 +with the +.Dv MAP_SHARED +and +.Dv MAP_ANON +flags). +.It Dv CC_CONTENT_RODATA ("rodata") +The contents include private read-only file mappings, such as shared +library text. +.It Dv CC_CONTENT_ANON ("anon") +The contents include private anonymous mappings. This includes the +stacks of threads which are not the main thread. +.It Dv CC_CONTENT_SHM ("shm") +The contents include system V shared memory. +.It Dv CC_CONTENT_ISM ("ism") +The contents include ISM (intimate shared memory) mappings. +.It Dv CC_CONTENT_DISM ("dism") +The contents include DISM (dynamic shared memory) mappings. +.It Dv CC_CONTENT_CTF ("ctf") +The contents include +.Xr ctf 4 +(Compact C Type Format) information. Note, not all objects in the +process may have CTF information available. +.It Dv CC_CONTENT_SYMTAB ("symtab") +The contents include the symbol table. Note, not all objects in the +process may have a symbol table available. +.It Dv CC_CONTENT_ALL ("all") +This value indicates that all of the above content values are present. +Note that additional values may be added in the future, in which case +the value of the symbol will be updated to include them. Comparisons +with +.Dv CC_CONTENT_ALL +should validate all the expected bits are set by an expression such as +.Li (c & CC_CONTENT_ALL) == CC_CONTENT_ALL . +.It Dv CC_CONTENT_NONE ("none") +This value indicates that there is no content present. +.It Dv CC_CONTENT_DEFAULT ("default") +The content includes the following set of default values: +.Dv CC_CONTENT_STACK , +.Dv CC_CONTENT_HEAP , +.Dv CC_CONTENT_ISM , +.Dv CC_CONTENT_DISM , +.Dv CC_CONTENT_SHM , +.Dv CC_CONTENT_SHANON , +.Dv CC_CONTENT_TEXT , +.Dv CC_CONTENT_DATA , +.Dv CC_CONTENT_RODATA , +.Dv CC_CONTENT_ANON , +.Dv CC_CONTENT_CTF , +and +.Dv CC_CONTENT_SYMTAB. +Note that the default may change. Comparisons with CC_CONTENT_DEFAULT +should validate that all of the expected bits are set with an expression +such as +.Li (c\ &\ CC_CONTENT_DEFAULT)\ ==\ CC_CONTENT_DEFAULT. +.It Dv CC_CONTENT_INVALID +This indicates that the contents are invalid. +.El +.Pp +.Sy prfdinfo_t +.Pp +The +.Sy prfdinfo_t +structure is used with the +.Fn Pfdinfo_iter +function which describes information about a file descriptor. The +structure is defined as follows: +.Bd -literal +typedef struct prfdinfo { + int pr_fd; + mode_t pr_mode; + uid_t pr_uid; + gid_t pr_gid; + major_t pr_major; /* think stat.st_dev */ + minor_t pr_minor; + major_t pr_rmajor; /* think stat.st_rdev */ + minor_t pr_rminor; + ino64_t pr_ino; + off64_t pr_offset; + off64_t pr_size; + int pr_fileflags; /* fcntl(F_GETXFL), etc */ + int pr_fdflags; /* fcntl(F_GETFD), etc. */ + char pr_path[MAXPATHLEN]; +} prfdinfo_t; +.Ed +.Pp +The structure has similar information to that found in the +.Sy stat +structure that's used as part of the stat family of system calls, +defined in +.Xr stat 2 . +The member +.Sy pr_fd +contains the number of the file descriptor of the file. The members +.Sy pr_mode , +.Sy pr_uid , +.Sy pr_gid , +.Sy pr_ino , +and +.Sy pr_size +are the same as the members +.Sy st_mode , +.Sy st_uid , +.Sy st_gid , +.Sy st_ino , +and +.Sy st_size +in the +.Sy stat +structure. +.Pp +The +.Sy pr_major +and +.Sy pr_minor +members contain the major and minor numbers of the device containing the +directory for this file. This is similar to the +.Sy st_dev +member of the +.Sy stat +structure, except that it is broken out into its major and minor components. +The +.Sy pr_rmajor +and +.Sy pr_rminor +members are similar in spirit to +.Sy pr_major +and +.Sy pr_minor ; +however, they are equivalent to the +.Sy st_rdev +member of the +.Sy stat +structure and thus have meaning for special character and block files. +.Pp +The +.Sy pr_offset +member contains the current seek offset of the file descriptor. The +.Sy pr_fileflags +and +.Sy pr_fdflags +members contain the flags that would have been returned by a call to +.Xr fcntl 2 +with the arguments +.Dv F_GETXFL +and +.Dv F_GETFD +respectively. +.Pp +.Sy prsyminfo_t +.Pp +The +.Sy prsyminfo_t +structure is used with the various symbol look up functions +.Fn Pxlookup_by_name , +.Fn Pxlookup_by_addr , +and +.Fn Pxlookup_by_addr_resolved +which describes additional information about a symbol. +The structure is defined as follows: +.Bd -literal +typedef struct prsyminfo { + const char *prs_object; /* object name */ + const char *prs_name; /* symbol name */ + Lmid_t prs_lmid; /* link map id */ + uint_t prs_id; /* symbol id */ + uint_t prs_table; /* symbol table id */ +} prsyminfo_t; +.Ed +.Pp +The member +.Sy prs_object +points to a string that contains the name of the object file, if known, +that the symbol comes from. The member +.Sy prs_name +points to the name of the symbol, if known. This may be unknown due to a +stripped binary that contains no symbol table. The member +.Sy prs_lmid +indicates the link map identifier that the symbol was found on. For more +information on link map identifiers refer to the +.Em Linker and Libraries Guide +and +.Xr dlopen 3C . +.Pp +The members +.Sy prs_id +and +.Sy prs_table +can be used to determine both the symbol table that the entry came from +and which entry in the table it corresponds to. If the value of +.Sy prs_table +is +.Dv PR_SYMTAB +then it came from the ELF standard symbol table. However, if it is instead +.Dv PR_DYNSYM , +then that indicates that it comes from the process's dynamic section. +.Pp +.Sy proc_lwp_f +.Pp +The +.Sy proc_lwp_f +is a function pointer type that is used with the +.Fn Plwp_iter +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_lwp_f +.Fa "void *" +.Fa "const lwpstatus_t *" +.Fc . +The first argument is a pointer to an argument that the user specifies, +while the second has the thread's status information and is defined in +.Xr proc 4 . +For additional information on using this type, see +.Xr Plwp_iter 3PROC . +.Pp +.Sy proc_lwp_all_f +.Pp +The +.Sy proc_lwp_all_f +is a function pointer type that is used with the +.Fn Plwp_iter_all +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_lwp_all_f +.Fa "void *" +.Fa "const lwpstatus_t *" +.Fa "const lwpsinfo_t *" +.Fc . +The first argument is a pointer to an argument that the user specifies. +The second and third arguments contain the thread's status and +thread-specific +.Xr ps 1 +information respectively. Both structures are defined in +.Xr proc 4 . +For additional information on using this type, see +.Xr Plwp_iter_all 3PROC . +.Pp +.Sy proc_walk_f +.Pp +The +.Sy proc_walk_f +is a function pointer type that is used with the +.Fn proc_walk +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_walk_f +.Fa "psinfo_t *" +.Fa "lwpsinfo_t *" +.Fa "void *" +.Fc . +The first argument contains the process +.Xr ps 1 +information and the second argument contains the representative thread's +.Xr ps 1 +information. Both structures are defined in +.Xr proc 4 . +The final argument is a pointer to an argument that the user specifies. +For more information on using this, see +.Xr proc_walk 3PROC . +.Pp +.Sy proc_map_f +.Pp +The +.Sy proc_map_f +is a function pointer type that is used with the +.Fn Pmapping_iter , +.Fn Pmapping_iter_resolved , +.Fn Pobject_iter , +and +.Fn Pobject_iter_resolved +functions. It is defined as +.Sy typedef +.Ft int +.Fo proc_map_f +.Fa "void *" +.Fa "const prmap_t *" +.Fa "const char *" +.Fc . +The first argument is a pointer to an argument that the user specifies. +The second argument is describes the mapping information and is defined +in +.Xr proc 4 . +The final argument contains the name of the mapping or object file in +question. For additional information on using this type, see +.Xr Pmapping_iter 3PROC . +.Pp +.Sy proc_env_f +.Pp +The +.Sy proc_env_f +is a function pointer type that is used with the +.Fn Penv_iter +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_env_f +.Fa "void *" +.Fa "struct ps_prochandle *" +.Fa "uintptr_t" +.Fa "const char *" +.Fc . +The first argument is a pointer to an argument that the user specifies. +The second argument is a pointer to the +.Sy struct ps_prochandle +that the callback was passed to. The third argument is the address of +the environment variable in the process. The fourth argument is the +environment variable. Values in the environment follow the convention of +the form +.Em variable=value . +For more information on environment variables see +.Xr exec 2 +and +.Xr environ 5 . +For additional information on using this type, see +.Xr Penv_iter 3PROC . +.Pp +.Sy proc_sym_f +.Pp +The +.Sy proc_sym_f +is a function pointer type that is used with the +.Fn Psmbol_iter , +.Fn Psymbol_iter_by_addr , +.Fn Psymbol_iter_by_name , +and +.Fn Psymbol_iter_by_lmid +functions. It is defined as +.Sy typedef +.Ft int +.Fo proc_sym_f +.Fa "void *" +.Fa "const GElf_Sym *" +.Fa "const char *" +.Fc . +The first argument is a pointer to an argument that the user supplies. +The second argument is a pointer to the ELF symbol information in a +32-bit and 64-bit neutral form. See +.Xr elf 3ELF +and +.Xr gelf 3ELF +for more information on it. The final argument points to a character +string that has the name of the symbol. For additional information on +using this type, see +.Xr Psymbol_iter 3PROC , +.Xr Psymbol_iter_by_addr 3PROC , +.Xr Psymbol_iter_by_name 3PROC , +and +.Xr Psymbol_iter_by_lmid 3PROC . +.Pp +.Sy proc_xsym_f +.Pp +The +.Sy proc_xsym_f +is a function pointer type that is used with the +.Fn Pxsymbol_iter +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_xsym_f +.Fa "void *" +.Fa "const GElf_Sym *" +.Fa "const char *" +.Fa "const prsyminfo_t *" +.Fc . +The first three arguments are identical to those of +.Sy proc_sym_f . +The final argument contains additional information about the symbol +itself. The members of the +.Sy prsyminfo_t +are defined earlier in this section. For additional information on using +this type, see +.Xr Pxsymbol_iter 3PROC . +.Pp +.Sy proc_stack_f +.Pp +The +.Sy proc_stack_f +is a function pointer type that is used with the +.Fn Pstack_iter +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_stack_f +.Fa "void *" +.Fa "prgregset_t" +.Fa "uint_t" +.Fa "const long *" +.Fc . +The first argument is a pointer to an argument that the user specifies. +The second argument's contents are platform specific. The registers that +contain stack information, usually the stack pointer and frame pointer, +will be filled in to point to an entry. The +.Sy prgregset_t +is defined in +.Xr proc 4 . +.Pp +The third argument contains the number of arguments to the current stack +frame and the fourth argument contains an array of addresses that +correspond to the arguments to that stack function. The value of the +third argument dictates the number of entries in the fourth argument. +For additional information on using this type, see +.Xr Pstack_iter 3PROC . +.Pp +.Sy proc_fdinfo_f +.Pp +The +.Sy proc_fdinfo_f +is a function pointer type that is used with the +.Fn Pfdinfo_iter +function. It is defined as +.Sy typedef +.Ft int +.Fo proc_fdinfo_f +.Fa "void *" +.Fa "prfdinfo_t *" +.Fc . +The first argument is a pointer to an argument that the user specifies. +The second argument contains information about an open file descriptor. +The members of the +.Sy prfdinfo_t +are defined earlier in this section. For additional information on using +this type, see +.Xr Pfdinfo_iter 3PROC . +.Sh PROGRAMMING NOTES +When working with live processes, whether from the +.Xr Pgrab +or +.Xr Pcreate +family of functions, there are some additional considerations. +Importantly, if a process calls any of the +.Xr exec 2 +suite of functions, much of the state information that is obtained, +particularly that about mappings in the process will be invalid. Callers +must ensure that they call +.Xr Preset_maps 3PROC +when they hold a process handle across an exec. In addition, users of +the library should familiarize themselves with the +.Sy PROGRAMMING NOTES +section of the +.Xr proc 4 +manual page, which discusses issues of privileges and security. +.Sh DEBUGGING +The library provides a means for obtaining additional debugging +information. The output itself is not part of the +.Nm +library's stable interface. Setting the environment variable +.Ev LIBPROC_DEBUG +to some value will print information to standard error. For example, +.Ev LIBPROC_DEUBG Ns = Ns Em please . +.Sh LOCKING +Most functions operate on a handle to a process in the form of a +.Vt "struct ps_prochandle *" . +Unless otherwise indicated, the library does not provide any +synchronization for different routines that are operating on the +.Sy same +.Nm +library handle. It is up to the caller to ensure that only a single +thread is using a handle at any given time. Multiple threads may call +.Nm +library routines at the same time as long as each thread is using a +different handle. +.Pp +Each individual function notes its +.Sy MT-Level +section. The MT-Level of a routine that matches the above description +will refer to this manual page. If it does not, then it refers to the +standard attributes in +.Xr attributes 5 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Pp +While the library is considered an uncommitted interface, and is still +evolving, changes that break compatibility have been uncommon and this +trend is expected to continue. It is documented to allow consumers, +whether part of illumos or outside of it, to understand the libarary and +make use of it with the understanding that changes may occur which break +both source and binary compatibility. +.Sh SEE ALSO +.Xr gcore 1 , +.Xr mdb 1 , +.Xr proc 1 , +.Xr ps 1 , +.Xr coreadm 1M , +.Xr exec 2 , +.Xr fcntl 2 , +.Xr stat 2 , +.Xr Intro 3 , +.Xr dlopen 3C , +.Xr elf 3ELF , +.Xr ctf 4 , +.Xr proc 4 , +.Xr attributes 5 , +.Xr environ 5 , +.Xr privileges 5 +.Pp +.Rs +.%T Linkers and Libraries Guide +.Re +.Pp +.Xr Lfree 3PROC , +.Xr Lgrab 3PROC , +.Xr Lgrab_error 3PROC , +.Xr Pcreate 3PROC , +.Xr Pcreate_agent 3PROC , +.Xr Pcreate_callback 3PROC , +.Xr Pcreate_error 3PROC , +.Xr Pdestroy_agent 3PROC , +.Xr Pfgrab_core 3PROC , +.Xr Pfree 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_error 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Pgrab_ops 3PROC , +.Xr Prelease 3PROC , +.Xr Preopen 3PROC , +.Xr Pxcreate 3PROC +.Pp +.Xr Paddr_to_ctf 3PROC , +.Xr Paddr_to_loadobj 3PROC , +.Xr Paddr_to_map 3PROC , +.Xr Paddr_to_text_map 3PROC , +.Xr Pasfd 3PROC , +.Xr Pclearfault 3PROC , +.Xr Pclearsig 3PROC , +.Xr Pcontent 3PROC , +.Xr Pcred 3PROC , +.Xr Pctlfd 3PROC , +.Xr Pdelbkpt 3PROC , +.Xr Pdelwapt 3PROC , +.Xr Pdstop 3PROC , +.Xr Pexecname 3PROC , +.Xr Pfault 3PROC , +.Xr Pfgcore 3PROC , +.Xr Pgcore 3PROC , +.Xr Pgetareg 3PROC , +.Xr Pgetauxval 3PROC , +.Xr Pgetauxvec 3PROC , +.Xr Pgetenv 3PROC , +.Xr Pisprocdir 3PROC , +.Xr Pissyscall_prev 3PROC , +.Xr Plmid 3PROC , +.Xr Plmid_to_loadobj 3PROC , +.Xr Plmid_to_map 3PROC , +.Xr Plookup_by_addr 3PROC , +.Xr Plookup_by_name 3PROC , +.Xr Plwp_alt_stack 3PROC , +.Xr Plwp_getfpregs 3PROC , +.Xr Plwp_getpsinfo 3PROC , +.Xr Plwp_getregs 3PROC , +.Xr Plwp_getspymaster 3PROC , +.Xr Plwp_main_stack 3PROC , +.Xr Plwp_setfpregs 3PROC , +.Xr Plwp_setregs 3PROC , +.Xr Plwp_stack 3PROC , +.Xr Pname_to_ctf 3PROC , +.Xr Pname_to_loadobj 3PROC , +.Xr Pname_to_map 3PROC , +.Xr Pobjname 3PROC , +.Xr Pobjname_resolved 3PROC , +.Xr Pplatform 3PROC , +.Xr Ppltdest 3PROC , +.Xr Ppriv 3PROC , +.Xr Ppsinfo 3PROC , +.Xr Pputareg 3PROC , +.Xr Prd_agent 3PROC , +.Xr Pread 3PROC , +.Xr Pread_string 3PROC , +.Xr Preset_maps 3PROC , +.Xr Psetbkpt 3PROC , +.Xr Psetcred 3PROC , +.Xr Psetfault 3PROC , +.Xr Psetflags 3PROC , +.Xr Psetpriv 3PROC , +.Xr Psetrun 3PROC , +.Xr Psetsignal 3PROC , +.Xr Psetsysentry 3PROC , +.Xr Psetsysexit 3PROC , +.Xr Psetwapt 3PROC , +.Xr Psetzoneid 3PROC , +.Xr Psignal 3PROC , +.Xr Pstate 3PROC , +.Xr Pstatus 3PROC , +.Xr Pstop 3PROC , +.Xr Pstopstatus 3PROC , +.Xr Psync 3PROC , +.Xr Psysentry 3PROC , +.Xr Psysexit 3PROC , +.Xr Puname 3PROC , +.Xr Punsetflags 3PROC , +.Xr Pupdate_maps 3PROC , +.Xr Pupdate_syms 3PROC , +.Xr Pwait 3PROC , +.Xr Pwrite 3PROC , +.Xr Pxecbkpt 3PROC , +.Xr Pxecwapt 3PROC , +.Xr Pxlookup_by_addr 3PROC , +.Xr Pxlookup_by_addr_resolved 3PROC , +.Xr Pxlookup_by_name 3PROC , +.Xr Pzonename 3PROC , +.Xr Pzonepath 3PROC , +.Xr Pzoneroot 3PROC +.Pp +.Xr Lalt_stack 3PROC , +.Xr Lclearfault 3PROC , +.Xr Lclearsig 3PROC , +.Xr Lctlfd 3PROC , +.Xr Ldstop 3PROC , +.Xr Lgetareg 3PROC , +.Xr Lmain_stack 3PROC , +.Xr Lprochandle 3PROC , +.Xr Lpsinfo 3PROC , +.Xr Lputareg 3PROC , +.Xr Lsetrun 3PROC , +.Xr Lstack 3PROC , +.Xr Lstate 3PROC , +.Xr Lstatus 3PROC , +.Xr Lstop 3PROC , +.Xr Lsync 3PROC , +.Xr Lwait 3PROC , +.Xr Lxecbkpt 3PROC , +.Xr Lxecwapt 3PROC +.Pp +.Xr pr_access 3PROC , +.Xr pr_close 3PROC , +.Xr pr_creat 3PROC , +.Xr pr_door_info 3PROC , +.Xr pr_exit 3PROC , +.Xr pr_fcntl 3PROC , +.Xr pr_fstat 3PROC , +.Xr pr_fstat64 3PROC , +.Xr pr_fstatvfs 3PROC , +.Xr pr_getitimer 3PROC , +.Xr pr_getpeername 3PROC , +.Xr pr_getpeerucred 3PROC , +.Xr pr_getprojid 3PROC , +.Xr pr_getrctl 3PROC , +.Xr pr_getrlimit 3PROC , +.Xr pr_getrlimit64 3PROC , +.Xr pr_getsockname 3PROC , +.Xr pr_getsockopt 3PROC , +.Xr pr_gettaskid 3PROC , +.Xr pr_getzoneid 3PROC , +.Xr pr_ioctl 3PROC , +.Xr pr_link 3PROC , +.Xr pr_llseek 3PROC , +.Xr pr_lseek 3PROC , +.Xr pr_lstat 3PROC , +.Xr pr_lstat64 3PROC , +.Xr pr_memcntl 3PROC , +.Xr pr_meminfo 3PROC , +.Xr pr_mmap 3PROC , +.Xr pr_munmap 3PROC , +.Xr pr_open 3PROC , +.Xr pr_processor_bind 3PROC , +.Xr pr_rename 3PROC , +.Xr pr_setitimer 3PROC , +.Xr pr_setrctl 3PROC , +.Xr pr_setrlimit 3PROC , +.Xr pr_setrlimit64 3PROC , +.Xr pr_settaskid 3PROC , +.Xr pr_sigaction 3PROC , +.Xr pr_stat 3PROC , +.Xr pr_stat64 3PROC , +.Xr pr_statvfs 3PROC , +.Xr pr_unlink 3PROC , +.Xr pr_waitid 3PROC , +.Pp +.Xr Penv_iter 3PROC , +.Xr Plwp_iter 3PROC , +.Xr Plwp_iter_all 3PROC , +.Xr Pmapping_iter 3PROC , +.Xr Pmapping_iter_resolved 3PROC , +.Xr Pobject_iter 3PROC , +.Xr Pobject_iter_resolved 3PROC , +.Xr Pstack_iter 3PROC , +.Xr Psymbol_iter 3PROC , +.Xr Psymbol_iter_by_addr 3PROC , +.Xr Psymbol_iter_by_lmid 3PROC , +.Xr Psymbol_iter_by_name 3PROC , +.Xr Pxsymbol_iter 3PROC , +.Xr Pfdinfo_iter 3PROC +.Pp +.Xr Perror_printf 3PROC , +.Xr proc_arg_grab 3PROC , +.Xr proc_arg_psinfo 3PROC , +.Xr proc_arg_xgrab 3PROC , +.Xr proc_arg_xpsinfo 3PROC , +.Xr proc_content2str 3PROC , +.Xr proc_finistdio 3PROC , +.Xr proc_fltname 3PROC , +.Xr proc_fltset2str 3PROC , +.Xr proc_flushstdio 3PROC , +.Xr proc_get_auxv 3PROC , +.Xr proc_get_cred 3PROC , +.Xr proc_get_priv 3PROC , +.Xr proc_get_psinfo 3PROC , +.Xr proc_get_status 3PROC , +.Xr proc_initstdio 3PROC , +.Xr proc_lwp_in_set 3PROC , +.Xr proc_lwp_range_valid 3PROC , +.Xr proc_signame 3PROC , +.Xr proc_sigset2str 3PROC , +.Xr proc_str2content 3PROC , +.Xr proc_str2flt 3PROC , +.Xr proc_str2fltset 3PROC , +.Xr proc_str2sig 3PROC , +.Xr proc_str2sigset 3PROC , +.Xr proc_str2sys 3PROC , +.Xr proc_str2sysset 3PROC , +.Xr proc_sysname 3PROC , +.Xr proc_sysset2str 3PROC , +.Xr proc_unctrl_psinfo 3PROC , +.Xr proc_walk 3PROC +.Pp +.Xr Pldt 3PROC , +.Xr proc_get_ldt 3PROC , +.Pp +.Xr Plwp_getgwindows 3PROC , +.Xr Plwp_getxregs 3PROC , +.Xr Plwp_setxregs 3PROC , +.Pp +.Xr Plwp_getasrs 3PROC , +.Xr Plwp_setasrs 3PROC diff --git a/usr/src/man/man3proc/Lctlfd.3proc b/usr/src/man/man3proc/Lctlfd.3proc new file mode 100644 index 0000000000..0c1537d871 --- /dev/null +++ b/usr/src/man/man3proc/Lctlfd.3proc @@ -0,0 +1,58 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LCTLFD 3PROC +.Os +.Sh NAME +.Nm Lctlfd +.Nd obtain the thread control file descriptor +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Lctlfd +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lctlfd +function returns a file descriptor to the underlying /proc file system +.Sy ctl +file for the thread identified by the handle +.Fa L . +This may be used for injecting control operations manually; however, +many interfaces for using it are provided by +.Xr libproc 3LIB +itself. +.Pp +The file descriptor is invalidated when the thread handle is released +through +.Xr Lfree 3PROC . +The caller +.Em must not +call +.Xr close 2 +on the returned file descriptor. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lfree 3PROC , +.Xr Lgrab 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Lfree.3proc b/usr/src/man/man3proc/Lfree.3proc new file mode 100644 index 0000000000..fcbb4cf0c0 --- /dev/null +++ b/usr/src/man/man3proc/Lfree.3proc @@ -0,0 +1,53 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LFREE 3PROC +.Os +.Sh NAME +.Nm Lfree +.Nd free a control handle to a thread +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "void" +.Fo Lfree +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lfree +function releases all control resources associated with the the handle +.Fa L . +After +.Fn Lfree +, calls to other +.Sy libproc +routines which leverage information from the handle +.Fa L +will no longer work as the handle has been invalidated. +.Pp +The state of the thread controlled by +.Fa L +is not affected by the call to +.Fn Lfree . +The thread's state will not transition from running to stopped or +vice-versa. It will retain its state prior to the call to +.Fn Lfree . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lgrab 3PROC diff --git a/usr/src/man/man3proc/Lgrab.3proc b/usr/src/man/man3proc/Lgrab.3proc new file mode 100644 index 0000000000..24ad4a44b5 --- /dev/null +++ b/usr/src/man/man3proc/Lgrab.3proc @@ -0,0 +1,113 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LGRAB 3PROC +.Os +.Sh NAME +.Nm Lgrab +.Nd obtain a handle to control a thread +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_lwphandle *" +.Fo Lgrab +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "int *perr" +.Fc +.Sh DESCRIPTION +The +.Fn Lgrab +function obtains a control handle to the thread identified by +.Fa lwpid +residing under the process +.Fa P . +This handle is then passed as argument to other +.Sy libproc +routines. The +.Fa lwpid +can be obtained from the +.Sy pr_lwpid +member of the +.Sy lwpstatus_t +structure. +.Pp +The +.Fa perr +argument must point to a valid pointer that will be used to store an +error code in the event that +.Fn Lgrab +is unable to successfully obtain a handle to the process. The possible +errors are defined below in the +.Sx ERRORS +section. The code may be transformed into a human readable string +through the use of +.Xr Lgrab_error 3PROC . +.Pp +The handle to the thread is valid until the +.Xr Lfree 3PROC +function is called, which also releases associated resources from the +handle. Only a single handle to a specific thread may exist at any +time. If the handle already exists and another caller attempts to grab +that thread, it will result in an error. The caller must call +.Fn Lfree +before releasing the handle associated with +.Fa P . +.Pp +Unlike grabbing a process, grabbing a thread does not change the current +state of the thread. If it is running, it will remain running. If it is +stopped, it will remain stopped. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Lgrab +function returns a pointer to the control handle for the specified +thread. Otherwise, the +.Dv NULL +pointer is returned and +.Fa perr +is set to indicate the error. +.Sh ERRORS +The +.Fn Lgrab +function will fail if: +.Bl -tag -width Er +.It Er G_BUSY +Another handle already exists for the thread identified by +.Fa lwpid . +The handle need not exist in the current process and may exist in +another process. +.It Er G_NOPROC +The thread identified by +.Fa lwpid +does not exist or has already become a zombie. +.It Er G_STRANGE +An unanticipated system error occurred while trying to create the +handle. When this occurs, then the value of +.Sy errno +is meaningful. See +.Xr errno 3C +for more information and +.Xr Intro 2 +for the list of possible errors. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr errno 3C , +.Xr libproc 3LIB , +.Xr Lfree 3PROC , +.Xr Lgrab_error 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Lgrab_error.3proc b/usr/src/man/man3proc/Lgrab_error.3proc new file mode 100644 index 0000000000..cb544f9398 --- /dev/null +++ b/usr/src/man/man3proc/Lgrab_error.3proc @@ -0,0 +1,49 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LGRAB_ERROR 3PROC +.Os +.Sh NAME +.Nm Lgrab_error +.Nd get Lgrab error message string +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const char *" +.Fo Lgrab_error +.Fa "int error" +.Fc +.Sh DESCRIPTION +The +.Fn Lgrab_error +function returns a pointer to a human-readable character string +describing the error that occurred. The +.Fn Lgrab_error +function only knows how to translate error codes that were stored in +the third argument +.Pf ( Fa perr Ns ) +of a call to +.Xr Lgrab 3PROC . +.Sh RETURN VALUES +The +.Fn Lgrab_error +function always returns a pointer to a character string describing the +error that occurred, even if it is an unknown error. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lgrab 3PROC diff --git a/usr/src/man/man3proc/Lprochandle.3proc b/usr/src/man/man3proc/Lprochandle.3proc new file mode 100644 index 0000000000..7472c74b9c --- /dev/null +++ b/usr/src/man/man3proc/Lprochandle.3proc @@ -0,0 +1,54 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LPROCHANDLE 3PROC +.Os +.Sh NAME +.Nm Lprochandle +.Nd get process control handle from thread control handle +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_prochandle *" +.Fo Lprochandle +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lprochandle +function returns the process handle to which the thread handle +.Fa L +belongs. This proccess handle may be used with other +.Xr libproc 3PROC +functions just as if +.Xr Pgrab 3PROC was called. The returned handle is valid even if +.Xr Lfree 3PROC +is called on +.Fa L . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Lprochandle +function returns a pointer to process handle. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lfree 3PROC , +.Xr Pgrab 3PROC , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/Lpsinfo.3proc b/usr/src/man/man3proc/Lpsinfo.3proc new file mode 100644 index 0000000000..d9ff12afb1 --- /dev/null +++ b/usr/src/man/man3proc/Lpsinfo.3proc @@ -0,0 +1,56 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LPSINFO 3PROC +.Os +.Sh NAME +.Nm Lpsinfo +.Nd get process ps information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const lwpsinfo_t *" +.Fo Lpsinfo +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lpsinfo +function returns the thread handle +.Fa L Ns 's +.Xr ps 1 +information. The +.Sy lwpsinfo_t +structure that is returned is defined in +.Xr proc 4 +and is valid until a subsequent call to +.Xr Lfree 3PROC . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Lpsinfo +function returns a pointer to the thread's ps information. Otherwise, +.Dv NULL +is returned to indicate that it could not be found. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr ps 1 , +.Xr libproc 3LIB , +.Xr Lfree 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Lstate.3proc b/usr/src/man/man3proc/Lstate.3proc new file mode 100644 index 0000000000..febec067a3 --- /dev/null +++ b/usr/src/man/man3proc/Lstate.3proc @@ -0,0 +1,44 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LSTATE 3PROC +.Os +.Sh NAME +.Nm Lstate +.Nd obtain thread handle state +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Lstate +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lstate +function returns the state of the thread handle +.Fa L . +The list of states is available in the +.Xr libproc 3PROC . +.Sh RETURN VALUES +Upon successful completion, the current state is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Lstatus.3proc b/usr/src/man/man3proc/Lstatus.3proc new file mode 100644 index 0000000000..b02b63f6db --- /dev/null +++ b/usr/src/man/man3proc/Lstatus.3proc @@ -0,0 +1,59 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt LSTATUS 3PROC +.Os +.Sh NAME +.Nm Lstatus +.Nd obtain thread status structure +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const lwpstatus_t *" +.Fo Pstatus +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Lstatus +function returns the status information about the thread handle +.Fa L . +The +.Sy lwpstatus_t +structure is defined in +.Xr proc 4 +and contains information about the thread including its flags, the size +of its stack, its user and system time, and more. +.Pp +The returned pointer is only valid as long as the thread handle +.Fa L +is valid. After a call to +.Xr Ltree 3PROC , +the returned data pointer is invalid. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Lstatus +function returns a pointer to the status information of the process. +It always succeeds. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lfree 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Makefile b/usr/src/man/man3proc/Makefile index 1d4cd7aaf5..cb9c1d7649 100644 --- a/usr/src/man/man3proc/Makefile +++ b/usr/src/man/man3proc/Makefile @@ -12,56 +12,408 @@ # # Copyright 2011, Richard Lowe # Copyright 2013 Nexenta Systems, Inc. All rights reserved. +# Copyright 2015 Joyent, Inc. # include $(SRC)/Makefile.master MANSECT= 3proc -MANFILES= proc_service.3proc \ +MANFILES= \ + Lctlfd.3proc \ + Lfree.3proc \ + Lgrab_error.3proc \ + Lgrab.3proc \ + Lprochandle.3proc \ + Lpsinfo.3proc \ + Lstate.3proc \ + Lstatus.3proc \ + Paddr_to_ctf.3proc \ + Paddr_to_loadobj.3proc \ + Paddr_to_map.3proc \ + Pasfd.3proc \ + Pclearfault.3proc \ + Pclearsig.3proc \ + Pcontent.3proc \ + Pcreate_agent.3proc \ + Pcreate_error.3proc \ + Pcreate.3proc \ + Pcred.3proc \ + Pctlfd.3proc \ + Pdelbkpt.3proc \ + Pdelwapt.3proc \ + Pdestroy_agent.3proc \ + Penv_iter.3proc \ + Perror_printf.3proc \ + Pexecname.3proc \ + Pfault.3proc \ + Pfdinfo_iter.3proc \ + Pgcore.3proc \ + Pgetareg.3proc \ + Pgetauxval.3proc \ + Pgetauxvec.3proc \ + Pgetenv.3proc \ + Pgrab_core.3proc \ + Pgrab_error.3proc \ + Pgrab_file.3proc \ + Pgrab.3proc \ + Pisprocdir.3proc \ + Pissyscall.3proc \ + Pldt.3proc \ + Plmid.3proc \ + Plookup_by_addr.3proc \ + Plwp_getasrs.3proc \ + Plwp_getgwindows.3proc \ + Plwp_getpsinfo.3proc \ + Plwp_getregs.3proc \ + Plwp_getspymaster.3proc \ + Plwp_getxregs.3proc \ + Plwp_iter.3proc \ + Plwp_stack.3proc \ + Pmapping_iter.3proc \ + Pobjname.3proc \ + Pplatform.3proc \ + Ppltdest.3proc \ + Ppriv.3proc \ + Ppsinfo.3proc \ + pr_access.3proc \ + pr_close.3proc \ + pr_creat.3proc \ + pr_door_info.3proc \ + pr_exit.3proc \ + pr_fcntl.3proc \ + pr_fstatvfs.3proc \ + pr_getitimer.3proc \ + pr_getpeername.3proc \ + pr_getpeerucred.3proc \ + pr_getprojid.3proc \ + pr_getrctl.3proc \ + pr_getrlimit.3proc \ + pr_getsockname.3proc \ + pr_getsockopt.3proc \ + pr_gettaskid.3proc \ + pr_getzoneid.3proc \ + pr_ioctl.3proc \ + pr_link.3proc \ + pr_llseek.3proc \ + pr_lseek.3proc \ + pr_memcntl.3proc \ + pr_meminfo.3proc \ + pr_mmap.3proc \ + pr_munmap.3proc \ + pr_open.3proc \ + pr_processor_bind.3proc \ + pr_rename.3proc \ + pr_setitimer.3proc \ + pr_setrctl.3proc \ + pr_setrlimit.3proc \ + pr_settaskid.3proc \ + pr_sigaction.3proc \ + pr_stat.3proc \ + pr_statvfs.3proc \ + pr_unlink.3proc \ + pr_waitid.3proc \ + Prd_agent.3proc \ + Pread.3proc \ + Prelease.3proc \ + Preopen.3proc \ + Preset_maps.3proc \ + proc_arg_grab.3proc \ + proc_arg_psinfo.3proc \ + proc_content2str.3proc \ + proc_fltname.3proc \ + proc_fltset2str.3proc \ + proc_get_auxv.3proc \ + proc_get_cred.3proc \ + proc_get_priv.3proc \ + proc_get_psinfo.3proc \ + proc_get_status.3proc \ + proc_initstdio.3proc \ + proc_lwp_in_set.3proc \ + proc_service.3proc \ + proc_str2flt.3proc \ + proc_str2fltset.3proc \ + proc_unctrl_psinfo.3proc \ + proc_walk.3proc \ + Psetbkpt.3proc \ + Psetcred.3proc \ + Psetfault.3proc \ + Psetflags.3proc \ + Psetpriv.3proc \ + Psetrun.3proc \ + Psetsignal.3proc \ + Psetsysentry.3proc \ + Psetwapt.3proc \ + Psetzoneid.3proc \ + Psignal.3proc \ + Pstack_iter.3proc \ + Pstate.3proc \ + Pstatus.3proc \ + Pstopstatus.3proc \ + Psymbol_iter.3proc \ + Psync.3proc \ + Psysentry.3proc \ + Puname.3proc \ + Pupdate_maps.3proc \ + Pupdate_syms.3proc \ + Pwrite.3proc \ + Pxecbkpt.3proc \ + Pzonename.3proc \ ps_lgetregs.3proc \ ps_pglobal_lookup.3proc \ ps_pread.3proc \ ps_pstop.3proc -MANLINKS= ps_kill.3proc \ - ps_lcontinue.3proc \ - ps_lgetfpregs.3proc \ - ps_lgetxregs.3proc \ - ps_lgetxregsize.3proc \ - ps_lrolltoaddr.3proc \ - ps_lsetfpregs.3proc \ - ps_lsetregs.3proc \ - ps_lsetxregs.3proc \ - ps_lstop.3proc \ - ps_pcontinue.3proc \ - ps_pdread.3proc \ - ps_pdwrite.3proc \ - ps_pglobal_sym.3proc \ - ps_ptread.3proc \ - ps_ptwrite.3proc \ - ps_pwrite.3proc - -ps_lgetfpregs.3proc := LINKSRC = ps_lgetregs.3proc -ps_lgetxregs.3proc := LINKSRC = ps_lgetregs.3proc -ps_lgetxregsize.3proc := LINKSRC = ps_lgetregs.3proc -ps_lsetfpregs.3proc := LINKSRC = ps_lgetregs.3proc -ps_lsetregs.3proc := LINKSRC = ps_lgetregs.3proc -ps_lsetxregs.3proc := LINKSRC = ps_lgetregs.3proc - -ps_pglobal_sym.3proc := LINKSRC = ps_pglobal_lookup.3proc - -ps_pdread.3proc := LINKSRC = ps_pread.3proc -ps_pdwrite.3proc := LINKSRC = ps_pread.3proc -ps_ptread.3proc := LINKSRC = ps_pread.3proc -ps_ptwrite.3proc := LINKSRC = ps_pread.3proc -ps_pwrite.3proc := LINKSRC = ps_pread.3proc - -ps_kill.3proc := LINKSRC = ps_pstop.3proc -ps_lcontinue.3proc := LINKSRC = ps_pstop.3proc -ps_lrolltoaddr.3proc := LINKSRC = ps_pstop.3proc -ps_lstop.3proc := LINKSRC = ps_pstop.3proc -ps_pcontinue.3proc := LINKSRC = ps_pstop.3proc + +MANLINKS= \ + Lalt_stack.3proc \ + Lclearfault.3proc \ + Lclearsig.3proc \ + Ldstop.3proc \ + Lgetareg.3proc \ + Lmain_stack.3proc \ + Lputareg.3proc \ + Lsetrun.3proc \ + Lstack.3proc \ + Lstop.3proc \ + Lsync.3proc \ + Lwait.3proc \ + Lxecbkpt.3proc \ + Lxecwapt.3proc \ + Paddr_to_text_map.3proc \ + Pcreate_callback.3proc \ + Pdstop.3proc \ + Pfgcore.3proc \ + Pfgrab_core.3proc \ + Pfree.3proc \ + Pissyscall_prev.3proc \ + Plmid_to_ctf.3proc \ + Plmid_to_loadobj.3proc \ + Plmid_to_map.3proc \ + Plookup_by_name.3proc \ + Plwp_alt_stack.3proc \ + Plwp_getfpregs.3proc \ + Plwp_iter_all.3proc \ + Plwp_main_stack.3proc \ + Plwp_setasrs.3proc \ + Plwp_setfpregs.3proc \ + Plwp_setregs.3proc \ + Plwp_setxregs.3proc \ + Pmapping_iter_resolved.3proc \ + Pname_to_ctf.3proc \ + Pname_to_loadobj.3proc \ + Pname_to_map.3proc \ + Pobject_iter_resolved.3proc \ + Pobject_iter.3proc \ + Pobjname_resolved.3proc \ + Ppriv_free.3proc \ + Pputareg.3proc \ + pr_fstat.3proc \ + pr_fstat64.3proc \ + pr_getrlimit64.3proc \ + pr_lstat.3proc \ + pr_lstat64.3proc \ + pr_setrlimit64.3proc \ + pr_stat64.3proc \ + Pread_string.3proc \ + proc_arg_xgrab.3proc \ + proc_arg_xpsinfo.3proc \ + proc_finistdio.3proc \ + proc_flushstdio.3proc \ + proc_free_priv.3proc \ + proc_get_ldt.3proc \ + proc_lwp_range_valid.3proc \ + proc_signame.3proc \ + proc_sigset2str.3proc \ + proc_str2content.3proc \ + proc_str2sig.3proc \ + proc_str2sigset.3proc \ + proc_str2sys.3proc \ + proc_str2sysset.3proc \ + proc_sysname.3proc \ + proc_sysset2str.3proc \ + ps_kill.3proc \ + ps_lcontinue.3proc \ + ps_lgetfpregs.3proc \ + ps_lgetxregs.3proc \ + ps_lgetxregsize.3proc \ + ps_lrolltoaddr.3proc \ + ps_lsetfpregs.3proc \ + ps_lsetregs.3proc \ + ps_lsetxregs.3proc \ + ps_lstop.3proc \ + ps_pcontinue.3proc \ + ps_pdread.3proc \ + ps_pdwrite.3proc \ + ps_pglobal_sym.3proc \ + ps_ptread.3proc \ + ps_ptwrite.3proc \ + ps_pwrite.3proc \ + Psetsysexit.3proc \ + Pstop.3proc \ + Psymbol_iter_by_addr.3proc \ + Psymbol_iter_by_lmid.3proc \ + Psymbol_iter_by_name.3proc \ + Psysexit.3proc \ + Punsetflags.3proc \ + Pwait.3proc \ + Pxcreate.3proc \ + Pxecwapt.3proc \ + Pxlookup_by_addr_resolved.3proc \ + Pxlookup_by_addr.3proc \ + Pxlookup_by_name.3proc \ + Pxsymbol_iter.3proc \ + Pzonepath.3proc \ + Pzoneroot.3proc + + +ps_lgetfpregs.3proc := LINKSRC = ps_lgetregs.3proc +ps_lgetxregs.3proc := LINKSRC = ps_lgetregs.3proc +ps_lgetxregsize.3proc := LINKSRC = ps_lgetregs.3proc +ps_lsetfpregs.3proc := LINKSRC = ps_lgetregs.3proc +ps_lsetregs.3proc := LINKSRC = ps_lgetregs.3proc +ps_lsetxregs.3proc := LINKSRC = ps_lgetregs.3proc + +ps_pglobal_sym.3proc := LINKSRC = ps_pglobal_lookup.3proc + +ps_pdread.3proc := LINKSRC = ps_pread.3proc +ps_pdwrite.3proc := LINKSRC = ps_pread.3proc +ps_ptread.3proc := LINKSRC = ps_pread.3proc +ps_ptwrite.3proc := LINKSRC = ps_pread.3proc +ps_pwrite.3proc := LINKSRC = ps_pread.3proc + +ps_kill.3proc := LINKSRC = ps_pstop.3proc +ps_lcontinue.3proc := LINKSRC = ps_pstop.3proc +ps_lrolltoaddr.3proc := LINKSRC = ps_pstop.3proc +ps_lstop.3proc := LINKSRC = ps_pstop.3proc +ps_pcontinue.3proc := LINKSRC = ps_pstop.3proc + + +Pxcreate.3proc := LINKSRC = Pcreate.3proc +Pcreate_callback.3proc := LINKSRC = Pcreate.3proc + +Pfgrab_core.3proc := LINKSRC = Pgrab_core.3proc + +Pfree.3proc := LINKSRC = Prelease.3proc + +Plwp_iter_all.3proc := LINKSRC = Plwp_iter.3proc + +Pmapping_iter_resolved.3proc := LINKSRC = Pmapping_iter.3proc +Pobject_iter.3proc := LINKSRC = Pmapping_iter.3proc +Pobject_iter_resolved.3proc := LINKSRC = Pmapping_iter.3proc + +Psymbol_iter_by_addr.3proc := LINKSRC = Psymbol_iter.3proc +Psymbol_iter_by_lmid.3proc := LINKSRC = Psymbol_iter.3proc +Psymbol_iter_by_name.3proc := LINKSRC = Psymbol_iter.3proc +Pxsymbol_iter.3proc := LINKSRC = Psymbol_iter.3proc + +Plmid_to_ctf.3proc := LINKSRC = Paddr_to_ctf.3proc +Pname_to_ctf.3proc := LINKSRC = Paddr_to_ctf.3proc + +Plmid_to_loadobj.3proc := LINKSRC = Paddr_to_loadobj.3proc +Pname_to_loadobj.3proc := LINKSRC = Paddr_to_loadobj.3proc + +Paddr_to_text_map.3proc := LINKSRC = Paddr_to_map.3proc +Plmid_to_map.3proc := LINKSRC = Paddr_to_map.3proc +Pname_to_map.3proc := LINKSRC = Paddr_to_map.3proc + +Pdstop.3proc := LINKSRC = Pstopstatus.3proc +Pstop.3proc := LINKSRC = Pstopstatus.3proc +Pwait.3proc := LINKSRC = Pstopstatus.3proc +Ldstop.3proc := LINKSRC = Pstopstatus.3proc +Lstop.3proc := LINKSRC = Pstopstatus.3proc +Lwait.3proc := LINKSRC = Pstopstatus.3proc + +Lsync.3proc := LINKSRC = Psync.3proc + +Pfgcore.3proc := LINKSRC = Pgcore.3proc + +Pputareg.3proc := LINKSRC = Pgetareg.3proc +Lgetareg.3proc := LINKSRC = Pgetareg.3proc +Lputareg.3proc := LINKSRC = Pgetareg.3proc + +Pissyscall_prev.3proc := LINKSRC = Pissyscall.3proc + +Pxlookup_by_addr.3proc := LINKSRC = Plookup_by_addr.3proc +Pxlookup_by_addr_resolved.3proc := LINKSRC = Plookup_by_addr.3proc +Plookup_by_name.3proc := LINKSRC = Plookup_by_addr.3proc +Pxlookup_by_name.3proc := LINKSRC = Plookup_by_addr.3proc + +Plwp_setregs.3proc := LINKSRC = Plwp_getregs.3proc +Plwp_getfpregs.3proc := LINKSRC = Plwp_getregs.3proc +Plwp_setfpregs.3proc := LINKSRC = Plwp_getregs.3proc + +Plwp_alt_stack.3proc := LINKSRC = Plwp_stack.3proc +Plwp_main_stack.3proc := LINKSRC = Plwp_stack.3proc +Lalt_stack.3proc := LINKSRC = Plwp_stack.3proc +Lmain_stack.3proc := LINKSRC = Plwp_stack.3proc +Lstack.3proc := LINKSRC = Plwp_stack.3proc + +Pobjname_resolved.3proc := LINKSRC = Pobjname.3proc + +Ppriv_free.3proc := LINKSRC = Ppriv.3proc + +Pread_string.3proc := LINKSRC = Pread.3proc + +Punsetflags.3proc := LINKSRC = Psetflags.3proc + +Psetsysexit.3proc := LINKSRC = Psetsysentry.3proc + +Psysexit.3proc := LINKSRC = Psysentry.3proc + +Pxecwapt.3proc := LINKSRC = Pxecbkpt.3proc +Lxecbkpt.3proc := LINKSRC = Pxecbkpt.3proc +Lxecwapt.3proc := LINKSRC = Pxecbkpt.3proc + +Lclearfault.3proc := LINKSRC = Pclearfault.3proc + +Lclearsig.3proc := LINKSRC = Pclearsig.3proc + +Lsetrun.3proc := LINKSRC = Psetrun.3proc + +Pzonepath.3proc := LINKSRC = Pzonename.3proc +Pzoneroot.3proc := LINKSRC = Pzonename.3proc + +pr_fstat.3proc := LINKSRC = pr_stat.3proc +pr_fstat64.3proc := LINKSRC = pr_stat.3proc +pr_lstat.3proc := LINKSRC = pr_stat.3proc +pr_lstat64.3proc := LINKSRC = pr_stat.3proc +pr_stat64.3proc := LINKSRC = pr_stat.3proc + +pr_getrlimit64.3proc := LINKSRC = pr_getrlimit.3proc + +pr_setrlimit64.3proc := LINKSRC = pr_setrlimit.3proc + +proc_arg_xgrab.3proc := LINKSRC = proc_arg_grab.3proc + +proc_arg_xpsinfo.3proc := LINKSRC = proc_arg_psinfo.3proc + +proc_str2content.3proc := LINKSRC = proc_content2str.3proc + +proc_flushstdio.3proc := LINKSRC = proc_initstdio.3proc +proc_finistdio.3proc := LINKSRC = proc_initstdio.3proc + +proc_signame.3proc := LINKSRC = proc_fltname.3proc +proc_sysname.3proc := LINKSRC = proc_fltname.3proc + +proc_sigset2str.3proc := LINKSRC = proc_fltset2str.3proc +proc_sysset2str.3proc := LINKSRC = proc_fltset2str.3proc + +proc_free_priv.3proc := LINKSRC = proc_get_priv.3proc + +proc_lwp_range_valid.3proc := LINKSRC = proc_lwp_in_set.3proc + +proc_str2sig.3proc := LINKSRC = proc_str2flt.3proc +proc_str2sys.3proc := LINKSRC = proc_str2flt.3proc + +proc_str2sigset.3proc := LINKSRC = proc_str2fltset.3proc +proc_str2sysset.3proc := LINKSRC = proc_str2fltset.3proc + +proc_get_ldt.3proc := LINKSRC = Pldt.3proc + +Plwp_setxregs.3proc := LINKSRC = Plwp_getxregs.3proc + +Plwp_setasrs.3proc := LINKSRC = Plwp_getasrs.3proc .KEEP_STATE: diff --git a/usr/src/man/man3proc/Paddr_to_ctf.3proc b/usr/src/man/man3proc/Paddr_to_ctf.3proc new file mode 100644 index 0000000000..9e46933478 --- /dev/null +++ b/usr/src/man/man3proc/Paddr_to_ctf.3proc @@ -0,0 +1,114 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PADDR_TO_CTF 3PROC +.Os +.Sh NAME +.Nm Paddr_to_ctf , +.Nm Plmid_to_ctf , +.Nm Pname_to_ctf +.Nd lookup CTF data +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "ctf_file_t *" +.Fo Paddr_to_ctf +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Ft "ctf_file_t *" +.Fo Plmid_to_ctf +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *name" +.Fc +.Ft "ctf_file_t *" +.Fo Pname_to_ctf +.Fa "struct ps_prochandle *P" +.Fa "const char *name" +.Fc +.Sh DESCRIPTION +The +.Fn Paddr_to_ctf , +.Fn Plmid_to_ctf , +and +.Fn Pname_to_ctf +functions lookup CTF (Compact C Type Format) data, for use with +.Sy libctf , +from the process represented by the handle +.Fa P . +In all cases, the CTF sections of both the running executable and its +shared libraries are searched. +.Pp +The CTF container returned is valid as long as the process handle +.Fa P +is valid. That is, until a call to +.Xr Prelease 3PROC +is made. Further, consumers must not close the CTF container. +.Pp +The +.Fn Paddr_to_ctf +function attempts to find the CTF section, if any, that exists for the +address +.Fa addr . +Note, not all addresses correspond to memory regions that have CTF +data. For example, if a user creates a region of anonymous memory +through the +.Xr mmap 2 +function, then it will not have any corresponding CTF information. +.Pp +The +.Fn Pname_to_ctf +function looks up the object named +.Fa name +and returns the corresponding CTF section, if any exists. Two special +values may be used for name. The macro +.Dv PR_OBJ_EXEC +refers to the executable object itself and the macro +.Dv PR_OBJ_LDSO refers to the object ld.so.1 . +.Pp +The +.Fn Plmid_to_ctf +function is similar to +.Fn Pname_to_ctf . +It allows the passing of a link-map identifier, +.Fa lmid , +which constricts the search of the object named with +.Fa name +to that link-map. The special value of +.Dv PR_LMID_EVERY +indicates that every link-map should be searched, which is equivalent +in behavior to the +.Fn Pname_to_ctf +function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Paddr_to_ctf , +.Fn Plmid_to_ctf , +and +.Fn Pname_to_ctf +functions return a pointer to the corresponding CTF container. +Otherwise, if none exists then +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr ctf 4 diff --git a/usr/src/man/man3proc/Paddr_to_loadobj.3proc b/usr/src/man/man3proc/Paddr_to_loadobj.3proc new file mode 100644 index 0000000000..220f17e47c --- /dev/null +++ b/usr/src/man/man3proc/Paddr_to_loadobj.3proc @@ -0,0 +1,117 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PADDR_TO_LOADOBJ 3PROC +.Os +.Sh NAME +.Nm Paddr_to_loadobj , +.Nm Plmid_to_loadobj , +.Nm Pname_to_loadobj +.Nd lookup loaded object information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const rd_loadobj_t *" +.Fo Paddr_to_loadobj +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Ft "const rd_loadobj_t *" +.Fo Plmid_to_loadobj +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *name" +.Fc +.Ft "const rd_loadobj_t *" +.Fo Pname_to_loadobj +.Fa "struct ps_prochandle *P" +.Fa "const char *name" +.Fc +.Sh DESCRIPTION +The +.Fn Paddr_to_loadobj , +.Fn Plmid_to_loadobj , +and +.Fn Pname_to_loadobj +functions lookup loaded object information from the process handle +.Fa P . +This information is provided by the run-time link-editor, +.Xr ld.so.1 1 , +and provides information about the loaded object such as the link-map +identifier, the TLS module ID, and the address of various sections. +.Pp +The pointer to the data returned by the library will only be valid for +as long as the handle +.Fa P +is valid. Any calls to +.Xr Prelease 3PROC +will invalidate the data. +.Pp +The +.Fn Paddr_to_loadobj +function attempts to find the loaded object information, if any, that exists for the +address +.Fa addr . +Not all address correspond to memory regions that were loaded by the +run-time link-editor. For example, if a user creates a region of +anonymous memory through the +.Xr mmap 2 +function, then it will not have any corresponding loaded module. +.Pp +The +.Fn Pname_to_loadobj +function looks up the object named +.Fa name +and returns the corresponding loaded object information. Two special +values may be used for name. The macro +.Dv PR_OBJ_EXEC +refers to the executable object itself and the macro +.Dv PR_OBJ_LDSO refers to the object ld.so.1 . +.Pp +The +.Fn Plmid_to_loadobj +function is similar to +.Fn Pname_to_loadobj . +It allows the use of a link-map identifier, +.Fa lmid , +which constricts the search of the object named with +.Fa name +to that link-map. The special value of +.Dv PR_LMID_EVERY +may be passed to indicate that every link-map should be searched, which +is equivalent in behavior to the +.Fn Pname_to_loadobj +function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Paddr_to_loadobj , +.Fn Plmid_to_loadobj , +and +.Fn Pname_to_loadobj +functions return a pointer to the corresponding loadable object +information. +Otherwise, if none exists then +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr librtld_db 3LIB , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/Paddr_to_map.3proc b/usr/src/man/man3proc/Paddr_to_map.3proc new file mode 100644 index 0000000000..eac5dc001d --- /dev/null +++ b/usr/src/man/man3proc/Paddr_to_map.3proc @@ -0,0 +1,129 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PADDR_TO_MAP 3PROC +.Os +.Sh NAME +.Nm Paddr_to_map , +.Nm Paddr_to_text_map , +.Nm Plmid_to_map , +.Nm Pname_to_map +.Nd lookup memory map information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const prmap_t *" +.Fo Paddr_to_map +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Ft "const prmap_t *" +.Fo Paddr_to_text_map +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Ft "const prmap_t *" +.Fo Plmid_to_map +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *name" +.Fc +.Ft "const prmap_t *" +.Fo Pname_to_map +.Fa "struct ps_prochandle *P" +.Fa "const char *name" +.Fc +.Sh DESCRIPTION +The +.Fn Paddr_to_map , +.Fn Paddr_to_text_map , +.Fn Plmid_to_map , +and +.Fn Pname_to_map +functions lookup memory map information in the process handle +.Fa P . +The +.Sy prmap_t +structure provides information such as the size, offset, and object of +the mapping and is defined in +.Xr proc 4 . +.Pp +The pointer to the data returned by the library will only be valid for +as long as the handle +.Fa P +is valid. Any calls to +.Xr Prelease 3PROC +will invalidate the data. +.Pp +The +.Fn Paddr_to_map +function attempts to find the mapping information corresponding to the +address +.Fa addr . +.Pp +The +.Fn Paddr_to_text_map +function is similar to the +.Fn Paddr_to_map +function; however, it only returns successfully if the specified address +corresponds to a text mapping as identified by the run-time link-editor. +One use of this is to ensure that a mapping is actually a text-mapping +before inserting a breakpoint in it. +.Pp +The +.Fn Pname_to_map +function looks up the object named +.Fa name +and returns the corresponding mapping information. Two special +values may be used for name. The macro +.Dv PR_OBJ_EXEC +refers to the executable object itself and the macro +.Dv PR_OBJ_LDSO refers to the object ld.so.1 . +.Pp +The +.Fn Plmid_to_map +function is similar to +.Fn Pname_to_map . +It allows passing a link-map identifier, +.Fa lmid , +which constricts the search of the object named with +.Fa name +to that link-map. The special value of +.Dv PR_LMID_EVERY +may be passed to indicate that every link-map should be searched, which +is equivalent in behavior to the +.Fn Pname_to_map +function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Paddr_to_map , +.Fn Paddr_to_text_map , +.Fn Plmid_to_map , +and +.Fn Pname_to_map +functions return a pointer to the corresponding mapping information. +If none exists then +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Prelease 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pasfd.3proc b/usr/src/man/man3proc/Pasfd.3proc new file mode 100644 index 0000000000..90c8865b66 --- /dev/null +++ b/usr/src/man/man3proc/Pasfd.3proc @@ -0,0 +1,74 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PASFD 3PROC +.Os +.Sh NAME +.Nm Pasfd +.Nd obtain the process address space file descriptor +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pasfd +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pasfd +funtion returns a file descriptor that allows direct access to the +address space of the process handle +.Fa P . +A defined file descriptor is provided when using the +.Xr Pcreate , +.Xr Pgrab 3PROC , +.Xr Pgrab_file 3PROC , +and +.Xr Pgrab_core 3PROC +functions. Note that the address space may be different in each of these +cases and doesn't necessarily correspond to the /proc +.Sy as +file, except for live processes. Other means of obtaining a +.Sy libproc +process handle may not define a file descriptor that contains the +address space. +.Pp +The returned file descriptor must not be closed and is only valid for +as long as the corresponding process handle +.Fa P +is valid. After a call to +.Xr Prelease 3PROC +the file descriptor is invalidated. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pasfd +function returns a valid file descriptor. Otherwise, if none exists, +then +.Sy -1 +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Prelease 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pclearfault.3proc b/usr/src/man/man3proc/Pclearfault.3proc new file mode 100644 index 0000000000..dba09993df --- /dev/null +++ b/usr/src/man/man3proc/Pclearfault.3proc @@ -0,0 +1,90 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCLEARFAULT 3PROC +.Os +.Sh NAME +.Nm Pclearfault , +.Nm Lclearfault +.Nd clear process and thread faults +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pclearfault +.Fa "struct ps_prochandle *P" +.Fc +.Ft int +.Fo Lclearfault +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +During normal operation a process may encounter a +.Sy fault , +due to a hardware exception, identifying a problem with the running +process. Hardware faults include things like executing illegal +instructions, encountering a breakpoint, and arithmetic exceptions. +Faults are discussed further in +.Xr proc 4 . +.Pp +The +.Fn Pclearfault +function instructs the system to clear any fault pending delivery to a +thread in the process represented by the process handle +.Fa P . +The pending fault will never be delivered to process represented by +.Fa P . +.Pp +The +.Fn Lclearfault +function is identical to the +.Fn Pclearfault +function, except rather than operating on the representative thread of +the process it operates on the thread handle +.Fa L . +.Pp +The +.Fn Pclearfault +and +.Fn Lclearfault +functions only have meaning for active processes. They will fail on process +handles corresponding to zombie processes, ELF objects, and cores. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pclearfault +and +.Fn Lclearfault +functions clear pending faults and return +.Sy 0 . +Otherwise, +.Sy -1 +is returned, +.Sy errno +is set to indicate the error, +and no faults are cleared. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pclearsig.3proc b/usr/src/man/man3proc/Pclearsig.3proc new file mode 100644 index 0000000000..b96d78b697 --- /dev/null +++ b/usr/src/man/man3proc/Pclearsig.3proc @@ -0,0 +1,86 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCLEARSIG 3PROC +.Os +.Sh NAME +.Nm Pclearsig , +.Nm Lclearsig +.Nd clear process signals +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pclearsig +.Fa "struct ps_prochandle *P" +.Fc +.Ft int +.Fo Lclearsig +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +During normal operation a process may receive a signal. Signals may +indicate an error, for example referencing unmapped memory, an alarm +firing, requests for information, and users requesting an interruption. +For more information on the generation and usage of signals, see +.Xr signal.h 3HEAD . +.Pp +The +.Fn Pclearsig +function instructs the system to clear any signal pending delivery to +a thread in the process represented by the process handle +.Fa P . +The pending signal will never be delivered to process represented by +.Fa P . +.Pp +The +.Fn Lclearsig +function is identical to the +.Fn Pclearsig +function, except rather than operating on the process and its +representive thread, it instead operates on the thread handle +.Fa L . +.Pp +The +.Fn Pclearsig +function only has meaning for active processes. It will fail on process +handles corresponding to core files, zombie processes and ELF objects. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pclearsig +function clears pending faults and +returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned, +.Sy errno +is set to indicate the error, +and no faults are cleared. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr signal.h 3HEAD , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pcontent.3proc b/usr/src/man/man3proc/Pcontent.3proc new file mode 100644 index 0000000000..0f31978cef --- /dev/null +++ b/usr/src/man/man3proc/Pcontent.3proc @@ -0,0 +1,68 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCONTENT 3PROC +.Os +.Sh NAME +.Nm Pconent +.Nd obtain process content types available +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "core_content_t" +.Fo Pcontent +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pcontent +function describes information available from the process handle +.Fa P . +.Pp +Different types of process handles have different kinds of content +available to them. For example, handles to active and running processes +have more information available than various core files, as the core +file retains a subset of information available in the running process. +Handles that refer to ELF objects, obtained through +.Xr Pgrab_file 3PROC , +will not have information such as a stack available. The content of +core files is controlled by +.Xr coreadm 1M . +.Pp +The symbols that may be returned are listed in the +.Sy core_content_t +heading in the +.Sy TYPES +section in +.Xr libproc 3LIB . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pcontent +function returns the bitwise-inclusive-OR of content types. Otherwise, +.Dv CC_CONTENT_INVALID +is returned to indicate an error. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pcreate.3proc b/usr/src/man/man3proc/Pcreate.3proc new file mode 100644 index 0000000000..d3ac9467f9 --- /dev/null +++ b/usr/src/man/man3proc/Pcreate.3proc @@ -0,0 +1,226 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCREATE 3PROC +.Os +.Sh NAME +.Nm Pcreate , +.Nm Pxcreate , +.Nm Pcreate_callback +.Nd create and control a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_prochandle *" +.Fo Pcreate +.Fa "const char *file" +.Fa "char *const *argv" +.Fa "int *perr" +.Fa "char *path" +.Fa "size_t len" +.Fc +.Ft "struct ps_prochandle *" +.Fo Pxcreate +.Fa "const char *file" +.Fa "char *const *argv" +.Fa "char *const *envp" +.Fa "int *perr" +.Fa "char *path" +.Fa "size_t len" +.Fc +.Ft void +.Fo Pcreate_callback +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pcreate +function creates a process controlled by the +.Sy libproc +library. The +.Fn Pxcreate +function does the same while also allowing the replacement of the +environment via +.Fa envp . +.Pp +Both functions cause the caller to +.Xr fork 2 . +Followed by the child calling +.Xr exec 2 +to load the new process image specified by +.Fa file . +The +.Ev PATH +is searched for +.Fa file +if it is not an absolute path, similar to +.Xr execvp 2 . +.Pp +The process image will be invoked with the arguments specified by +.Fa argv , +which should be a +.Dv NULL Ns -terminated +array of character strings. Each entry in the array is an individual +argument. The environment of the process image will be inherited from +the running process if the +.Fn Pcreate +function is called or if the +.Fn Pxcreate +function is called and the value of +.Fa envp +is +.Dv NULL . +Otherwise, +.Fa envp +should be a +.Dv NULL Ns -terminated +array of character strings whose entries are in the form of +.Em key=value . +For more on the process environment, see +.Xr environ 5 . +.Pp +The +.Fn Pcreate_callback +function allows a way for callers to inject a callback into the child +process before the call to +.Xr exec 2 . +The symbol +.Sy Pcreate_callback +is a symbol that may be interposed on by consumers. It allows the chance +for the modification of signal dispositions or any other changes that a +caller may wish to make. +.Pp +If the caller's real user or group ID is not their effective user or +group ID, then the child process's user and group IDs will all be reset +to the real user and group id. +.Pp +The +.Fa perr +argument must be a +.Pf non- Dv NULL +pointer. If the +.Fn Pcreate +or +.Fn Pxcreate +functions fail, the value pointed to will be filled in with a more +detailed error code listed in +.Sx ERRORS . +A human-readable error message is obtained with +.Xr Pcreate_error 3PROC . +.Pp +Multiple executables named +.Fa file +may exist on the +.Fa PATH . +To determine the full path of the executable pass a non-NULL +.Fa path +pointer. Upon succesful completion of +.Fn Pcreate +or +.Fn Pxcreate +the +.Fa path +pointer will contain the full path up to +.Fa len +bytes, including the NUL character. +.Pp +Upon successful completion of the +.Fn Pcreate +or +.Fn Pxcreate +function, a handle to the process is returned. This handle is usable +with other +.Sy libproc +routines and will persist until either +.Xr Pfree 3PROC +or +.Xr Prelease 3PROC +is called on the resulting handle. The process created is stopped just +after return from the +.Xr exec 2 +family of system calls. The process will not run, unless the caller sets +it running or releases its handle to the process. +.Pp +A 32-bit process cannot use this interface to launch or control a +64-bit process. However, a 64-bit process can create and control both +32-bit and 64-bit processes. +.Sh RETURN VALUES +Upon successful completion, both the +.Fn Pcreate +and +.Fn Pxcreate +functions create a new process and return a +.Sy libproc +handle to it. Otherwise, +.Sy NULL +is returned and +.Fa perr +is filled in with the corresponding error. +.Sh ERRORS +The +.Fn Pcreate +and +.Fn Pxcreate +functions will fail if: +.Bl -tag -width Er +.It Er C_FORK +The call to +.Xr fork 2 +failed. +.It Er C_INTR +The operation was interrupted by a signal. +.It Er C_LP64 +The calling process is 32-bit, but it attempted to control a 64-bit +process. +.It Er C_NOEXEC +The specified +.Fa file +or the one found by searching +.Dv PATH +cannot be executed. +.It Er C_NOENT +The specified +.Fa file +does not exist or it could not be found by searching +.Dv PATH . +.It Er C_PERM +The specified +.Fa file +or the one found by searching +.Dv PATH +is set-id or unreadable. +.It Er C_STRANGE +An unanticipated system error occurred while trying to create the +process and its handle. When this occurs, then the value of +.Sy errno +is meaningful. See +.Xr errno 3C +for more information and +.Xr Intro 2 +for the list of possible errors. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr exec 2 , +.Xr execvp 2 , +.Xr fork 2 , +.Xr Intro 2 , +.Xr errno 3C , +.Xr libproc 3LIB , +.Xr Pcreate_error 3PROC , +.Xr Pfree 3PROC , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/Pcreate_agent.3proc b/usr/src/man/man3proc/Pcreate_agent.3proc new file mode 100644 index 0000000000..8fcf3e35e4 --- /dev/null +++ b/usr/src/man/man3proc/Pcreate_agent.3proc @@ -0,0 +1,82 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCREATE_AGENT 3PROC +.Os +.Sh NAME +.Nm Pcreate_agent +.Nd create the agent LWP +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pcreate_agent +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pcreate_agent +function creates the agent LWP in the process represented by the handle +.Fa P . +The agent LWP is used as a means to force system calls to be invoked on +the controlled process. For more information on the agent LWP, see +.Xr proc 4 . +.Pp +The agent LWP cannot be created for process handles corresponding to +core files, zombie processes, processes that have yet to run, and ELF +objects. +.Pp +The +.Fn Pcreate_agent +function is reentrant. It may be entered recursively. The act of +creating the agent LWP will cause the process to be stopped. +For every call to the +.Fn Pcreate_agent +function, a corresponding call to +.Xr Pdestroy_agent 3PROC +is required. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pcreate_agent +function returns +.Sy 0 +and creates the agent LWP. Otherwise, +.Sy -1 +is returned, +.Sy errno +is set to indicate the error, and the agent LWP is not created. +.Sh ERRORS +The +.Fn Pcreate_agent +function will fail if: +.Bl -tag -width Er +.It Er ENOENT +The process referred to by +.Fa P +is a core file, zombie, ELF object, or has not begun execution. +.El +.Pp +Note, it is possible for other error numbers to be returned. If they +are, they represent unanticipated failure. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pdestroy_agent 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pcreate_error.3proc b/usr/src/man/man3proc/Pcreate_error.3proc new file mode 100644 index 0000000000..74d8331630 --- /dev/null +++ b/usr/src/man/man3proc/Pcreate_error.3proc @@ -0,0 +1,52 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCREATE_ERROR 3PROC +.Os +.Sh NAME +.Nm Pcreate_error +.Nd get Pcreate, Pxcreate error message string +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const char *" +.Fo Pcreate_error +.Fa "int error" +.Fc +.Sh DESCRIPTION +The +.Fn Pcreate_error +function returns a pointer to a human-readable character string +describing the error that occurred. The +.Fn Pcreate_error +function translates errors produced by the +.Xr Pcreate 3PROC +and +.Xr Pxcreate 3PROC +functions only (passed as the +.Fa perr +argument). +.Sh RETURN VALUES +The +.Fn Pcreate_error +function always returns a pointer to a character string that describes +the error that occurred, even if it is an unknown error. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pxcreate 3PROC diff --git a/usr/src/man/man3proc/Pcred.3proc b/usr/src/man/man3proc/Pcred.3proc new file mode 100644 index 0000000000..f8376d45e2 --- /dev/null +++ b/usr/src/man/man3proc/Pcred.3proc @@ -0,0 +1,80 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCRED 3PROC +.Os +.Sh NAME +.Nm Pcred +.Nd obtain process credentials +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pcred +.Fa "struct ps_prochandle *P" +.Fa "prcred_t *pcrp" +.Fa "int ngroups" +.Fc +.Sh DESCRIPTION +The +.Fn Pcred +function obtains the credentials of the process from the handle +.Fa P . +.Pp +The credentials are read into the buffer pointed to by +.Fa pcrp . +The +.Sy prcred_t +type is defined in +.Xr proc 4 . +It contains information about the current effective, saved, and real +user and group IDs. It also allows for supplemental groups to be +obtained. The +.Fn Pcred +function will read a number of supplemental groups based on the value of +.Fa ngroups . +The +.Sy prcred_t +structure only contains the space for one supplemental group by default. +Callers should ensure that the buffer pointed to by +.Fa pcrp +contains enough space to include all of the required supplemental +groups that are desired. +.Pp +Not all process handles have credential information available to them. +For example, the handles that come from +.Xr Pgrab_file +have no processes associated with them and thus have no credentials +associated with them. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pcred +function returns +.Sy 0 +and updates the memory at +.Fa pcrp +with the credentials. Otherwise, +.Sy -1 +is returned to indicate an error. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Psetcred 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pctlfd.3proc b/usr/src/man/man3proc/Pctlfd.3proc new file mode 100644 index 0000000000..cf331879ed --- /dev/null +++ b/usr/src/man/man3proc/Pctlfd.3proc @@ -0,0 +1,72 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PCTFLD 3PROC +.Os +.Sh NAME +.Nm Pctlfd +.Nd obtain the process control file descriptor +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pctlfd +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pctlfd +function returns a file descriptor to the underlying /proc file system +.Sy ctl +file for the process identified by the handle +.Fa P . +This may be used for injecting control operations manually; +however, many interfaces for using it are provided by +.Xr libproc 3LIB +itself. +.Pp +Only live processes have a control file descriptor. Process handles that +correspond to files and cores, created through +.Xr Prab_file 3PROC +and +.Xr Pgrab_core 3PROC , +do not have a corresponding file descriptor. +.Pp +The file descriptor is invalidated when the process handle is released +through +.Xr Prelease 3PROC +or if control is lost and the handle is reopened. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pctlfd +function returns a valid file descriptor. Otherwise, if none exists, +then +.Sy -1 +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Prelease 3PROC , +.Xr Preopen 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pdelbkpt.3proc b/usr/src/man/man3proc/Pdelbkpt.3proc new file mode 100644 index 0000000000..d999c38426 --- /dev/null +++ b/usr/src/man/man3proc/Pdelbkpt.3proc @@ -0,0 +1,95 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PDELBKPT 3PROC +.Os +.Sh NAME +.Nm Pdelbkpt +.Nd clear a breakpoint in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pdelbkpt +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t address" +.Fa "ulong_t saved" +.Fc +.Sh DESCRIPTION +The +.Fn Pdelbkpt +function removes the breakpoint installed at +.Fa address +from process +.Fa P . +Restoring the instruction present in +.Fa saved . +.Pp +If the instruction at +.Fa address +is no longer the architecture-specific breakpoint instruction, then +.Fa saved +is not restored, but the function still returns successfully. This +behavior is done due to the presence of setting breakpoints in +self-modifying code, e.g. procedure linkage tables. +.Pp +The +.Fn Pdelbkpt +function only works on running processes, such as those created through +.Xr Pgrab 3PROC +and +.Xr Pcreate 3PROC . +Attempting to remove a breakpoint from process handles to core files, +zombie processes, or ELF objects will fail. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pdelbkpt +function removes the breakpoint and +returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned, and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Pdelbkpt +function will fail with: +.Bl -tag -width Er +.It Er ENOENT +The handle +.Fa P +refers to a grabbed core file, a zombie process, or an ELF object. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Psetbkpt 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pdelwapt.3proc b/usr/src/man/man3proc/Pdelwapt.3proc new file mode 100644 index 0000000000..4a3d23d4e9 --- /dev/null +++ b/usr/src/man/man3proc/Pdelwapt.3proc @@ -0,0 +1,88 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PDELWAPT 3PROC +.Os +.Sh NAME +.Nm Pdelwapt +.Nd remove a watchpoint in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pdelwapt +.Fa "struct ps_prochandle *P" +.Fa "const prwatch_t *wp" +.Fc +.Sh DESCRIPTION +The +.Fn Pdelwapt +function removes the watchpoint specified by +.Fa wp +from the process represented by the handle +.Fa P . +The watchpoint should have been installed with either +.Xr Psetwapt 3PROC +or the underlying /proc file system +.Sy PCWATCH +operation. +.Pp +The +.Fn Pdelwapt +function only works on running processes, such as those created through +.Xr Pgrab 3PROC +and +.Xr Pcreate 3PROC . +Attempting to remove a watchpoint from process handles to core files, +zombie processes, or ELF objects will fail. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pdelwapt +function removes the watchpoint and returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned, +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Pdelwapt +function will fail with: +.Bl -tag -width Er +.It Er ENOENT +The handle +.Fa P +refers to a grabbed core file, a zombie process, or an ELF object. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Psetwapt 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pdestroy_agent.3proc b/usr/src/man/man3proc/Pdestroy_agent.3proc new file mode 100644 index 0000000000..9b379142cc --- /dev/null +++ b/usr/src/man/man3proc/Pdestroy_agent.3proc @@ -0,0 +1,53 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PDESTROY_AGENT 3PROC +.Os +.Sh NAME +.Nm Pdestroy_agent +.Nd destroy the agent LWP +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Pdestroy_agent +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pdestroy_agent +function +removes the agent LWP in +.Fa P . +The existence of the agent LWP is reference counted by the library and +therefore if +.Xr Pcreate_agent 3PROC +has been called multiple times, the +.Fn Pdestroy_agent +function must be called an equal number of times. Upon the last time, it +will destroy the agent LWP. +.Pp +Destroying the agent LWP does not change the state of the process +represented by +.Fa P . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcreate_agent 3PROC diff --git a/usr/src/man/man3proc/Penv_iter.3proc b/usr/src/man/man3proc/Penv_iter.3proc new file mode 100644 index 0000000000..b555a53c5f --- /dev/null +++ b/usr/src/man/man3proc/Penv_iter.3proc @@ -0,0 +1,73 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PENV_ITER 3PROC +.Os +.Sh NAME +.Nm Penv_iter +.Nd iterate process environment +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Penv_iter +.Fa "struct ps_prochandle *P" +.Fa "proc_env_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Penv_iter +function iterates over the environment of the process represented by +.Fa P . +For each environment variable, +.Fa func +is passed the caller argument +.Fa data +along with the address of the environment variable and the key-value +pair. For the full signature of the +.Ft proc_env_f +callback, see +.Xr libproc 3LIB . +.Pp +The callback's return value controls whether or not iteration +proceeds. If +.Fa func +returns zero, then iteration continues. Otherwise, iteration is +terminated and the value if returned. It is recommend that callback +functions do not return +.Sy -1 +so as to distinguish between the failure of the +.Fn Penv_iter +function and the callback function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Penv_iter +function returns +.Sy 0 . +Otherwise, if there was an internal error, for example due to a +corrupted environment, then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Perror_printf.3proc b/usr/src/man/man3proc/Perror_printf.3proc new file mode 100644 index 0000000000..4ad0b9de08 --- /dev/null +++ b/usr/src/man/man3proc/Perror_printf.3proc @@ -0,0 +1,55 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PERROR_PRINTF 3PROC +.Os +.Sh NAME +.Nm Perror_printf +.Nd interposable function for additional diagnostics +.Sh SYNOPSIS +.Ft void +.Fo Perror_printf +.Fa "struct ps_prochandle *P" +.Fa "const char *format" +.Fa "..." +.Fc +.Sh DESCRIPTION +The +.Fn Perror_printf +function allows for consumers of the +.Sy libproc +library to obtain additional diagnostic information during various +operations. Consumers must explicitly +.Em interpose +on this symbol and provide their own definition, if desired. There is no +requirement for such an interposition to be done. When called, +.Fa P +will be the process handle that the additional diagnostics are being +generated for and the diagnostics will be provided in a +.Xr printf 3C +style. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Pp +While the interposing interface is +.Sy uncommitted , +the provided diagnostics are +.Sy Not-an-Interface +and may change at any time. +.Sh LOCKING +Callers should presume that this function may be called from multiple +threads and always in a context in which taking locks is fine. Callers +should not expect to be called from a signal handler. +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pexecname.3proc b/usr/src/man/man3proc/Pexecname.3proc new file mode 100644 index 0000000000..d380333932 --- /dev/null +++ b/usr/src/man/man3proc/Pexecname.3proc @@ -0,0 +1,68 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PEXECNAME 3PROC +.Os +.Sh NAME +.Nm Pexecname +.Nd obtain full path to process executable +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo Pexecname +.Fa "struct ps_prochandle *P" +.Fa "char *buf" +.Fa "size_t buflen" +.Fc +.Sh DESCRIPTION +The +.Fn Pexecname +function attempts to determine the full path to the process executable +referred to by the handle +.Fa P . +.Pp +If found, +.Fa buf +will be filled in with the full path for up to +.Fa buflen +bytes, including the null terminator. +.Pp +For a handle grabbed with +.Xr Pgrab_file 3PROC , +the executable refers to the path of the file itself. For a core file, +the system attempts to determine the original path of the executable +and return that. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pexecname +function returns the value of +.Fa buf , +and up to +.Fa buflen +bytes of +.Fa buf +are filled in with a null-terminated path. +Otherwise, +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pfault.3proc b/usr/src/man/man3proc/Pfault.3proc new file mode 100644 index 0000000000..61c6454f02 --- /dev/null +++ b/usr/src/man/man3proc/Pfault.3proc @@ -0,0 +1,103 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PFAULT 3PROC +.Os +.Sh NAME +.Nm Pfault +.Nd enable and disable the tracing of faults +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "int" +.Fo Pfault +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "int stop" +.Fc +.Sh DESCRIPTION +The +.Fn Pfault +function controls what the process +.Fa P +should do on faults. +.Pp +A fault is a hardware event that occurs in the context of a running +process and thread. A hardware fault may occur because an illegal +instruction was executed, a breakpoint or watchpoint was encountered, or +an arithmetic exception occurred, among others. The full list of faults +is available in both +.Xr proc 4 +and +.In sys/fault.h . +.Pp +For each hardware fault, a process may be configured to stop the thread +that encountered it when it occurs. The value of the +.Fa stop +parameter controls whether or not the listed fault in +.Fa which +will cause the thread to trap. A value of 1 indicates the thread +should stop; a value of 0 indicates it should not. +.Pp +The value of +.Fa which +indicates which hardware fault the change applies to. However, if the +value of +.Fa which +is zero, then it applies to all faults. +.Pp +The +.Fn Pfault +function only applies to actively running processes. It does not +function on handles that refer to core files, zombie processes, or ELF +objects. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pfault +function returns the old disposition of the fault -- +.Sy 0 +if it was not set to stop and +.Sy 1 +if it was -- +and the fault state is updated. Otherwise, +.Sy -1 +is returned, +.Dv errno +is updated with the error that occurred, and the fault state is not +updated. +.Sh ERRORS +The +.Fn Pfault +function will fail if: +.Bl -tag -width Er +.It Er EINVAL +The value of +.Fa which +is invalid, e.g. it is less than zero or greater than the largest defined +fault. +.It Er ENOENT +The handle +.Fa P +refers to a process that is a zombie, a core file, or a file. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pfdinfo_iter.3proc b/usr/src/man/man3proc/Pfdinfo_iter.3proc new file mode 100644 index 0000000000..80408130a7 --- /dev/null +++ b/usr/src/man/man3proc/Pfdinfo_iter.3proc @@ -0,0 +1,88 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PFDINFO_ITER 3PROC +.Os +.Sh NAME +.Nm Pfdinfo_iter +.Nd iterate open files in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pfdinfo_iter +.Fa "struct ps_prochandle *P" +.Fa "proc_fdinfo_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Pfdinfo_iter +function iterates over the open files in the process represented by +.Fa P . +.Pp +For each open file, the callback function +.Fa func +will be invoked and it will be passed the +.Fa data +argument as well as a pointer to a +.Sy prfdinfo_t +structure defined in +.Xr libproc 3LIB . +For the full signature of the +.Vt proc_fdinfo_f +see +.Xr libproc 3LIB . +.Pp +The return value of +.Fa func +controls whether or not iteration continues. If +.Fa func +returns +.Sy 0 , +then iteration will continue. However, if +.Fa func +instead returns a non-zero value, then iteration will halt and that +value will be used as the return value of the +.Fn Pfdinfo_iter +function. Because the +.Fn Pfdinfo_iter +function returns +.Sy -1 +to an indicate its own errors, it is recommended that the callback +function does not return +.Sy -1 +to indicate an error so that the caller may distinguish between the +failure of the callback function and the failure of the +.Fn Pfdinfo_iter +function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pfdinfo_iter +returns +.Sy 0 . +Otherwise, if there was an internal error then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pgcore.3proc b/usr/src/man/man3proc/Pgcore.3proc new file mode 100644 index 0000000000..24f38c3f6d --- /dev/null +++ b/usr/src/man/man3proc/Pgcore.3proc @@ -0,0 +1,110 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGCORE 3PROC +.Os +.Sh NAME +.Nm Pfgcore , +.Nm Pgcore +.Nd produce a core file of a process +.Sh SYNOPSIS +.Ft int +.Fo Pfgcore +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "core_content_t content" +.Fc +.Ft int +.Fo Pgcore +.Fa "struct ps_prochandle *P" +.Fa "const char *fname" +.Fa "core_content_t content" +.Fc +.Sh DESCRIPTION +The +.Fn Pgcore +and +.Fn Pfgcore +functions produce core files of the handle referred to by +.Fa P . +Core files represent a snapshot of a process and may be manipulated by a +wide variety of tools and libraries including +.Xr libproc 3LIB , +.Xr mdb 1 , +.Xr pargs 1 , +.Xr pstack 1 , +and more. For details on the core file format, see +.Xr core 4 . +.Pp +.Fn Pfgcore +writes the core to the file represented by the open descriptor +.Fa fd . +The file descriptor should be open for both read and write. +.Fn Pgcore +writes the core to the file path +.Fa fname . +.Pp +The content of the core is controlled by the +.Fa content +argument. It's the inclusive-bitwise-OR of the various content types +listed under the +.Sy core_content_t +heading in the +.Sy TYPES +section in +.Xr libproc 3LIB . +Using +.Dv CC_CONTENT_INVALID +is illegal and will result in an error. +.Pp +Neither the +.Fn Pgcore +or +.Fn Pfgcore +functions stop the handle +.Fa P . +It is up to the caller to stop the process; which is recommended for +obtaining a consistent view of the process. See the +.Xr Pstop 3PROC +function for a means to stop a handle. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pfcore +and +.Fn Pgcore +functions return +.Sy 0 +and write out a core file to specified location. Otherwise, +.Sy -1 +is returned. The +.Fn Pfgcore +function will truncate +.Fa fd +and the +.Fn Pgcore +function will remove +.Fa fname . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr coreadm 1M , +.Xr libproc 3LIB , +.Xr Pstop 3PROC , +.Xr core 4 , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pgetareg.3proc b/usr/src/man/man3proc/Pgetareg.3proc new file mode 100644 index 0000000000..1d8a67ca75 --- /dev/null +++ b/usr/src/man/man3proc/Pgetareg.3proc @@ -0,0 +1,178 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGETAREG 3PROC +.Os +.Sh NAME +.Nm Pgetareg , +.Nm Pputareg , +.Nm Lgetareg , +.Nm Lputareg +.Nd set and get a register from a stopped process or thread +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pgetareg +.Fa "struct ps_prochandle *P" +.Fa "int regno" +.Fa "prgreg_t *preg" +.Fc +.Ft int +.Fo Pputareg +.Fa "struct ps_prochandle *P" +.Fa "int regno" +.Fa "prgreg_t preg" +.Fc +.Ft int +.Fo Lgetareg +.Fa "struct ps_lwphandle *L" +.Fa "int regno" +.Fa "prgreg_t *preg" +.Fc +.Ft int +.Fo Lputareg +.Fa "struct ps_lwphandle *L" +.Fa "int regno" +.Fa "prgreg_t preg" +.Fc +.Sh DESCRIPTION +The +.Fn Pgetareg +and +.Fn Pputareg +functions read and update the registers of the process handle referred +to by +.Fa P . +.Pp +The getting and setting of registers of the process operates on the +representative thread (LWP). For more information on how the +representative is chosen, see +.Xr proc 4 . +To change the registers of a specific thread, use the +.Xr Lgetareg 3PROC +and +.Xr Lsetareg 3PROC +functions. +.Pp +The getting and setting of registers only applies to stopped +processes. In addition, one may obtain registers from core files, but +not set them. To stop a process, see the +.Xr Pstop 3PROC +function. +.Pp +The register to get or set is indicated by the +.Fa regno +argument. For a list of registers, see +.In sys/regset.h . +The set of registers is specific to each architecture of the system. The +.Fn Pgetareg +function will fill in the value of +.Fa preg +with the value of the register +.Fa regno , +while the +.Fn Pputareg +function will update the value of the register +.Fa regno +with the value in +.Fa preg . +Updated registers will be set when the process resumes execution. +.Pp +The +.Fn Lgetareg +and +.Fn Lputareg +functions are equivalent to the +.Fn Pgetareg +and +.Fn Psetareg +functions, except rather than operating on the process and its +representative thread, they instead operate on the thread handle +.Fa L . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgetareg +and +.Fn Pputareg +function return +.Sy 0 . +Otherwise, +.Sy -1 +is returned, +.Sy errno +is set, and no registers will have been gotten or updated. +.Sh ERRORS +The +.Fn Pgetareg +and +.Fn Lgetareg +functions will fail if: +.Bl -tag -width Er +.It Er EINVAL +The value of +.Fa regno +is invalid. This means it is less than +.Sy 0 +and greater than +.Sy NPRGREG . +Note, +.Sy NPRGREG Ns 's +value varies based on process architecture. +.It Er EBUSY +The handle +.Fa P +is neither stopped nor a core file. +.It Er ENODATA +The handle +.Fa P +refers to a file obtained through +.Xr Pgrab_file 3PROC . +.El +.Pp +The +.Fn Pputareg +and +.Fn Lputareg +functions will fail if: +.Bl -tag -width Er +.It Er EINVAL +The value of +.Fa regno +is invalid. This means it is less than +.Sy 0 +and greater than +.Sy NPRGREG . +Note, +.Sy NPRGREG Ns 's +value varies based on process architecture. +.It Er EBUSY +The handle +.Fa P +is not stopped or refers to a non-active process. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr errno 3C , +.Xr libproc 3LIB , +.Xr Lgrab 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Pstop 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pgetauxval.3proc b/usr/src/man/man3proc/Pgetauxval.3proc new file mode 100644 index 0000000000..034d68c7f3 --- /dev/null +++ b/usr/src/man/man3proc/Pgetauxval.3proc @@ -0,0 +1,60 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGETAUXVAL 3PROC +.Os +.Sh NAME +.Nm Pgetauxval +.Nd obtain auxiliary vector value +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pgetauxval +.Fa "struct ps_prochandle *P" +.Fa "int type" +.Fc +.Sh DESCRIPTION +The +.Fn Pgetauxval +function looks up the entry +.Fa type +in the auxiliary vector of the process handle +.Fa P +and returns its value. The +.Fa type +argument should be the entry of the auxiliary vector. The list of such +types may be found in +.In sys/auxv.h . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgetauxval +function returns the value of the auxiliary vector entry +.Fa type . +Otherwise, +.Sy -1 +is returned to indicate that either the auxiliary vector or the +.Fa type +entry could not be found. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pgetauxvec 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pgetauxvec.3proc b/usr/src/man/man3proc/Pgetauxvec.3proc new file mode 100644 index 0000000000..a940bdfdcf --- /dev/null +++ b/usr/src/man/man3proc/Pgetauxvec.3proc @@ -0,0 +1,57 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGETAUXVEC 3PROC +.Os +.Sh NAME +.Nm Pgetauxvec +.Nd obtain process auxiliary vector +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const auxv_t *" +.Fo Pgetauxvec +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pgetauxvec +function returns a pointer to a copy of the auxiliary vector for the +process handle +.Fa P . +If the process handle does not represent an actively running process or +the auxiliary vector could not be found, then it instead returns an +empty auxiliary vector. The definitions of the +.Sy auxv_t +may be found in +.In sys/auxv.h . +.Pp +The returned auxiliary vector should not be used across any subsequent +calls to +.Xr libproc 3LIB . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgetauxvec +function always returns a pointer to an auxiliary vector. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pgetauxval 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pgetenv.3proc b/usr/src/man/man3proc/Pgetenv.3proc new file mode 100644 index 0000000000..bb34119e6a --- /dev/null +++ b/usr/src/man/man3proc/Pgetenv.3proc @@ -0,0 +1,62 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGETENV 3PROC +.Os +.Sh NAME +.Nm Pgetenv +.Nd get process environment variable +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo Pgetenv +.Fa "struct ps_prochandle *P" +.Fa "const char *name" +.Fa "char *buf" +.Fa "size_t buflen" +.Fc +.Sh DESCRIPTION +The +.Fa Pgetenv +function searches the environment of the process handle +.Fa P +for the environment variable named +.Fa name . +If found it copies up to +.Fa buflen +characters of the value, including the null terminator, into the buffer +.Fa buf . +Everything after the +.Sy = +sign is copied. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgetenv +function returns the pointer +.Fa buf . +Otherwise, if the environment variable was not found, +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Penv_iter 3PROC , +.Xr environ 5 diff --git a/usr/src/man/man3proc/Pgrab.3proc b/usr/src/man/man3proc/Pgrab.3proc new file mode 100644 index 0000000000..3627d1712f --- /dev/null +++ b/usr/src/man/man3proc/Pgrab.3proc @@ -0,0 +1,220 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGRAB 3PROC +.Os +.Sh NAME +.Nm Pgrab +.Nd grab and control a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_prochandle *" +.Fo Pgrab +.Fa "pid_t pid" +.Fa "int flags" +.Fa "int *perr" +.Fc +.Sh DESCRIPTION +The +.Fn Pgrab +function attempts to grab the process identified by +.Fa pid +and returns a handle to it that allows the process to be controlled, +interrogated, and manipulated. This interface only works with processes +that already exist. Use +.Xr Pgrab_core 3PROC +for core files and +.Xr Pcreate 3PROC +to create processes. +.Pp +A grabbed process undergoes the following changes unless +.Fa flags +is set to the contrary: +.Bl -bullet -offset indent +.It +The process is stopped +.It +All other tracing flags are cleared +.It +The grab is exclusive. If any existing handles to this process exist +or anyone else is using the underlying facilities of the /proc file +system to control this process, it will fail. +.It +Unless the process is already stopped, the +.Dv PR_RLC +flag is set indicating the process should run-on-last-close. Allowing +the process to resume running if its controlling process dies. +.El +.Pp +Grabbing a process is a +.Em destructive +action. Stopping a process stops execution of all its threads. The +impact of stopping a process depends on the purpose of that process. +For example, if one stops a process that's primarily doing +computation, then its computation is delayed the entire time that it +is stopped. However, if instead this is an active TCP server, then the +accept backlog may fill causing connection errors and potentially +connection time out errors. +.Pp +Special care must be taken to ensure that a stopped process continues, +even if the controlling process terminates. If the controlling process +disables the +.Dv PR_RLC +flag or the process was already stopped, then the process remains +stopped after the controlling process terminates. Exercise caution +when changing this behavior. +.Pp +Many of these default behaviors can be controlled by passing values to +the +.Fa flags +argument. Values for +.Fa flags +are constructed by a bitwise-inclusive-OR of flags from the following +list: +.Bl -tag -width Dv -offset indent +.It Dv PGRAB_RETAIN +Indicates that any existing tracing flags on +.Fa pid +should be retained. If this flag is not specified, they will be cleared +as part of creating the +.Sy libproc +handle for this process. +.Pp +Normally extant tracing flags are cleared when a process is grabbed. +.It Dv PGRAB_FORCE +Indicates that the process should not be grabbed exclusively. Care +should be taken with this option. If other consumers are manipulating +the process, then this may result in surprising behavior as the process +is being manipulated from multiple points of control at the same time. +.Pp +Normally an attempt will be made to grab the process exclusively and +fail if it is already in use. +.It Dv PGRAB_RDONLY +Indicates that the process should be grabbed in a read-only fashion. +This implies that both the +.Dv PGRAB_RETAIN +and +.Dv PGRAB_NOSTOP +flags should be set. If a process is opened read-only, then a caller can +only read information about a process and cannot manipulate it, change +its current state, or inject systems calls into it. +.Pp +Normally when a process is grabbed, it does so for both reading and +writing. +.It Dv PGRAB_NOSTOP +Do not stop a process as it is grabbed. Note, any extant tracing flags +on the process will still be cleared unless the +.Dv PGRAB_RETAIN +flag has been set. +.Pp +Normally a process is stopped as a result of grabbing the process. +.El +.Pp +The +.Fa perr +argument must be a +.Pf non- Dv NULL +pointer which will store a more detailed error in the event that the +.Fn Pgrab +function fails. A human-readable form of the error can be obtained +with +.Xr Pgrab_error 3PROC . +.Pp +Once a caller is done with the library handle it should call +.Xr Prelease 3PROC +to release the grabbed process. Failure to properly release the handle +may leave a process stopped and interfere with the ability of other +software to obtain a handle. +.Ss Permissions +Unprivileged users may grab and control their own processes only if both +the user and group IDs of the target process match those of the calling +process. In addition, the caller must have a super set of the target's +privileges. Processes with the +.Sy PRIV_PROC_OWNER +privilege may manipulate any process on the system, as long as it has an +equal privilege set. For more details on the security and programming +considerations, please see the section +.Sy PROGRAMMING NOTES +in +.Xr proc 4 . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgrab +function returns a control handle to the process. Otherwise, +.Dv NULL +is returned with +.Fa perr +containing the error code. +.Sh ERRORS +The +.Fn Pgrab +function will fail if: +.Bl -tag -width Er +.It Er G_BUSY +The process +.Fa pid +is already being traced and the +.Dv PGRAB_FORCE +flag was not passed in +.Fa flags . +.It Er G_LP64 +The calling process is a 32-bit process and process +.Fa pid +is 64-bit. +.It Er G_NOFD +Too many files are open. This is logically equivalent to receiving +.Er EMFILE . +.It Er G_NOPROC +The process referred to by +.Fa pid +does not exist. +.It Er G_PERM +The calling process has insufficient permissions or privileges to open +the specified process. See +.Sx Permissions +for more information. +.It Er G_SYS +The process referred to by +.Fa pid +is a system process and cannot be grabbed. +.It Er G_SELF +The process referred to by +.Fa pid +is the process ID of the caller and the +.Dv PGRAB_RDONLY +was not passed. A process may only grab itself if it's read-only. +.It Er G_STRANGE +An unanticipated system error occurred while trying to grab the process +file and create the handle. +The value of +.Sy errno +indicates the system failure. +.It Er G_ZOMB +The process referred to by +.Fa pid +is a zombie and cannot be grabbed. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr errno 3C , +.Xr libproc 3LIB , +.Xr Pfree 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_error 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/Pgrab_core.3proc b/usr/src/man/man3proc/Pgrab_core.3proc new file mode 100644 index 0000000000..cf28387c03 --- /dev/null +++ b/usr/src/man/man3proc/Pgrab_core.3proc @@ -0,0 +1,193 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGRAB_CORE 3PROC +.Os +.Sh NAME +.Nm Pgrab_core , +.Nm Pfgrab_core +.Nd grab a core file +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_prochandle *" +.Fo Pgrab_core +.Fa "const char *core" +.Fa "const char *aout" +.Fa "int gflag" +.Fa "int *perr" +.Fc +.Ft "struct ps_prochandle *" +.Fo Pfgrab_core +.Fa "int core_fd" +.Fa "const char *aout" +.Fa "int *perr" +.Fc +.Sh DESCRIPTION +The +.Fn Pgrab_core +and +.Fn Pfgrab_core +functions open a core file for introspection. Unlike live processes, +core files cannot have their state modified; however, all of the +functions that iterate or query state will work. These functions work +on all illumos core files and the core files of some other operating +systems. See both +.Xr core 4 +and the +.Em Core Files +section of +.Xr libproc 3LIB +for more information. +.Pp +The +.Fn Pgrab_core +function attempts to open the core file specified by +.Fa core . +The system attempts to determine the path of the original executable. +The argument +.Fa aout +may either be the path to that file, a path to a directory to +search, or the +.Dv NULL +pointer, if neither is known. The system will search for it and will +supplement information in the core file with that. +.Pp +The +.Fa gflag +argument to the +.Fn Pgrab_core +function controls how the file is opened. If the +.Dv PGRAB_RDONLY +flag is specified, then the core file will be opened with the +.Xr open 2 +flag +.Dv O_RDONLY . +Otherwise, it will be opened +.Dv O_RDWR . +.Pp +The +.Fa perr +argument must be a +.Pf non- Dv NULL +pointer which will store a more detailed error in the event that the +.Fn Pgrab_core +function fails. A human-readable form of the error can be obtained +through the routine +.Xr Pgrab_error 3PROC . +.Pp +The +.Fn Pfgrab_core +is similar to the +.Fn Pgrab_core +function. Except, instead of operating on a path, it opens a handle to +the core file referenced by +.Fa core_fd . +The +.Fa aout +and +.Fa perr +arguments are identical to those in the +.Fn Pgrab_core +function. +.Pp +The handle returned, from either function, is valid until it is closed +with +.Xr Prelease 3PROC +or +.Xr Pfree 3PROC . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgrab_core +and +.Fn Pfgrab_core +functions return a +.Sy libproc +handle to the core file. Otherwise, +.Dv NULL +is returned and +.Fa perr +is filled in with a more detailed error message. +.Sh ERRORS +The +.Fn Pgrab_core +function will fail if: +.Bl -tag -width Er +.It Er G_NOCORE +The file +.Fa core +does not exist. +.It Er G_STRANGE +An unexpected system error occurred while trying to open +.Fa core . +The value of +.Sy errno +indicates the system failure. +.El +.Pp +The +.Fn Pgrab_core +and +.Fn Pfgrab_core +functions will fail if: +.Bl -tag -width Er +.It Dv G_ELF +An unexpected +.Xr libelf 3LIB +failure occurred. +.It Dv G_FORMAT +The core file referred to by either +.Fa core +or +.Fa core_fd +is not a valid ELF core file. +.It Dv G_ISAINVAL +The architecture of the core file referred to by either +.Fa core +or +.Fa core_fd +does not match the current running system. +.It Dv G_LP64 +The calling process is a 32-bit process and the core file referenced by +either +.Fa core +or +.Fa core_fd +refers to a 64-bit process. +.It Dv G_NOTE +The ELF notes present in the core file referred to by either +.Fa core +or +.Fa core_fd +are corrupt or missing required data. +.It Dv G_STRANGE +An unanticipated system error occurred while trying to open the core +file and create the handle. +The value of +.Sy errno +indicates the system failure. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr gcore 1 , +.Xr open 2 , +.Xr errno 3C , +.Xr libproc 3LIB , +.Xr Pfree 3PROC , +.Xr Pgrab_error 3PROC , +.Xr Prelease 3PROC , +.Xr core 4 diff --git a/usr/src/man/man3proc/Pgrab_error.3proc b/usr/src/man/man3proc/Pgrab_error.3proc new file mode 100644 index 0000000000..30bfa23f32 --- /dev/null +++ b/usr/src/man/man3proc/Pgrab_error.3proc @@ -0,0 +1,53 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGRAB_ERROR 3PROC +.Os +.Sh NAME +.Nm Pgrab_error +.Nd get Pgrab error message string +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const char *" +.Fo Pgrab_error +.Fa "int error" +.Fc +.Sh DESCRIPTION +The +.Fn Pgrab_error +function returns a pointer to a human-readable character string +describing the error that occurred. This function only knows how to +translate errors that are stored in +.Fa perr +during a failed call to +.Xr Pgrab 3PROC , +.Xr Pfgrab_core 3PROC, +.Xr Pgrab_core 3PROC , +or +.Xr Pgrab_file 3PROC . +.Sh RETURN VALUES +The +.Fn Pgrab_error +function always returns a pointer to a character string that describes +the error that occurred, even if it is an unknown error. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC diff --git a/usr/src/man/man3proc/Pgrab_file.3proc b/usr/src/man/man3proc/Pgrab_file.3proc new file mode 100644 index 0000000000..d12e052697 --- /dev/null +++ b/usr/src/man/man3proc/Pgrab_file.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PGRAB_FILE 3PROC +.Os +.Sh NAME +.Nm Pgrab_file +.Nd grab and inspect an ELF object +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft struct ps_prochandle +.Fo Pgrab_file +.Fa "const char *fname" +.Fa "int *perr" +.Fc +.Sh DESCRIPTION +The +.Fn Pgrab_file +function creates a handle to the ELF object contained in file +.Fa fname . +This handle is considered an +.Em idle +handle, it allows one to inspect aspects of the ELF contents present in +the handle, for example obtaining CTF information and looking up +symbols. +.Pp +There is no running state associated with this handle nor can +there be. If one intends to control a running process or create a +process, see +.Xr Pgrab 3PROC +and +.Xr Pcreate 3PROC +respectively. To inspect a core file use +.Xr Pgrab_core 3PROC . +.Pp +The +.Fa perr +argument must be a +.Pf non- Dv NULL +pointer which will store a more detailed error in the event that +.Fn Pgrab_file +fails. A human-readable form of the error can be obtained with +.Xr Pgrab_error 3PROC . +.Pp +When finished with the returned handle, +.Xr Prelease 3PROC +must be called to clean up resources associated with it. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pgrab_file +function returns a control handle to the process. Otherwise, +.Dv NULL +is returned and +.Fa perr +is filled in with an error code. +.Sh ERRORS +.Bl -tag -width Er -offset indent +.It Er G_ELF +An unexpected +.Xr libelf 3LIB +failure occurred while processing the file named by +.Fa fname . +.It Er G_FORMAT +The file named by +.Fa fname +is not a valid ELF file. +.It Er G_NOEXEC +The file named by +.Fa fname +does not exist. +.It Er G_STRANGE +An unanticipated system error occurred while trying to grab the +file +.Fa fname +and create the handle. +The value of +.Sy errno +indicates the system failure. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr errno 3C , +.Xr libelf 3LIB , +.Xr libproc 3LIB , +.Xr Pfree 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_error 3PROC , +.Xr Pgrab_file 3PROC , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/Pisprocdir.3proc b/usr/src/man/man3proc/Pisprocdir.3proc new file mode 100644 index 0000000000..daa3569c8f --- /dev/null +++ b/usr/src/man/man3proc/Pisprocdir.3proc @@ -0,0 +1,54 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PISPROCIDR 3PROC +.Os +.Sh NAME +.Nm Pisprocdir +.Nd determine if a directory is the /proc directory +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pisprocdir +.Fa "struct ps_prochandle *P" +.Fa "const char *dir" +.Fc +.Sh DESECRIPTION +The +.Fn Pisprocdir +function determines whether or not the directory +.Fa dir +is the root of the /proc file-system. This works across loopback file +system (lofs) mounts and chroots. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pisprocdir +function returns +.Sy 1 +if +.Fa dir +is the /proc directory, otherwise if not, it returns +.Sy 0 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr lofs 7FS diff --git a/usr/src/man/man3proc/Pissyscall.3proc b/usr/src/man/man3proc/Pissyscall.3proc new file mode 100644 index 0000000000..9ec1ba29d3 --- /dev/null +++ b/usr/src/man/man3proc/Pissyscall.3proc @@ -0,0 +1,91 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PISSYSCALL 3PROC +.Os +.Sh NAME +.Nm Pissyscall , +.Nm Pissyscall_prev , +.Nd determine if instructions are system call instructions +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pissyscall +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Ft int +.Fo Pissyscall_prev +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "uintptr_t *dst" +.Fc +.Sh DESCRIPTION +The +.Fn Pissyscall +function determines whether or not the instructions at +.Fa addr +in the process handle +.Fa P +corresponds to one of the architecture's system call instructions. +.Pp +the +.Fn Pissyscall_prev +function determines whether or not the instruction before +.Fa addr +in the process handle +.Fa P +corresponds to one of the architecture's system call instructions. If it +does, and +.Fa dst +is a +.Pf non- Dv NULL +pointer, then the address of the system call instruction will be copied +into the location pointed to by +.Fa dst . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pissyscall +function returns +.Sy non-zero +if +.Fa addr +corresponds to a system call instruction. Otherwise, +.Sy 0 +is returned. +.Pp +Upon successful completion, the +.Fn Pissyscall_prev +function returns +.Sy non-zero +if +.Fa addr +corresponds to a system call instruction and if +.Fa dst +is +.Pf non- Dv NULL , +.Fa dst +is updated. Otherwise, +.Sy 0 +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pldt.3proc b/usr/src/man/man3proc/Pldt.3proc new file mode 100644 index 0000000000..f492497ba3 --- /dev/null +++ b/usr/src/man/man3proc/Pldt.3proc @@ -0,0 +1,132 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLDT 3PROC +.Os +.Sh NAME +.Nm Pldt , +.Nm proc_get_ldt +.Nd obtain local descriptor table of a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pldt +.Fa "struct ps_prochandle *P" +.Fa "struct ssd *pldt" +.Fa "int nldt" +.Fc +.Ft int +.Fo proc_get_ldt +.Fa "pid_t pid" +.Fa "struct ssd *pldt" +.Fa "int nldt" +.Fc +.Sh DESCRIPTION +The +.Fn Pldt +function reads the local descriptor table (LDT) of the process handle +.Fa P +into the buffer +.Fa pldt . +Up to +.Fa nldt +entries will be read. +.Pp +If either +.Fa pldt +is +.Dv NULL +or +.Fa nldt +is +.Fa 0 , +then rather than filling in +.Fa pldt , +only the number of entries currently in the LDT is returned. +.Pp +The buffer +.Fa pldt +should contain sufficient space for +.Fa nldt +entries. For example, callers could allocate space as: +.Pp +.Dl pldt = malloc(sizeof (struct ssd) * nldt); +.Pp +For more information on the LDT and the +.Sy struct ssd , +see +.Xr proc 4 . +.Pp +The +.Fn proc_get_ldt +function is similar to the +.Fn Pldt +function; however, rather than reading from a process handle, it reads +the +.Sy ldt +file from the /proc file system for the process +.Fa pid . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pldt +and +.Fn proc_get_ldt +functions return the number of LDT entries written to +.Fa pldt . +If +.Fa pldt +is +.Dv NULL +or +.Fa nldt +is zero, then no data will be written. Otherwise, +.Sy -1 +is returned. The +.Fn Pldt +function sets +.Sy errno +to indicate the error that occurred. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Pldt +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +No LDT information is available in the process handle +.Fa P . +.El +.Sh ARCHITECTURE +The +.Fn Pldt +and +.Fn proc_get_ldt +functions are only available on +.Sy x86 +platforms. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plmid.3proc b/usr/src/man/man3proc/Plmid.3proc new file mode 100644 index 0000000000..ecb9a9a00c --- /dev/null +++ b/usr/src/man/man3proc/Plmid.3proc @@ -0,0 +1,71 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLMID 3PROC +.Os +.Sh NAME +.Nm Plmid +.Nd get the link-map identifier of an address +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plmid +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "Lmid_t *lmidp" +.Fc +.Sh DESCRIPTION +The +.Fn Plmid +function attempts to determine the link-map identifier that corresponds +to the address +.Fa addr +in the process +.Fa P . +If +.Fa addr +does not correspond to an address from an object mapped in by the +run-time link editor, such as anonymous mapping created with +.Xr mmap 2 , +then there will be no corresponding link-map identifier. +.Pp +.Fa lmidp +must be a +.Pf non- Dv NULL +pointer that will be filled in with the link-map identifier when it is +successfully determined by the run-time link-editor. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plmid +function returns +.Sy 0 +and updates +.Fa lmidp +with the link-map identifier of +.Fa addr . +Otherwise, +.Sy -1 +is returned to indicate that the link-map identifier could not be +determined. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plookup_by_addr.3proc b/usr/src/man/man3proc/Plookup_by_addr.3proc new file mode 100644 index 0000000000..6502956de4 --- /dev/null +++ b/usr/src/man/man3proc/Plookup_by_addr.3proc @@ -0,0 +1,192 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLOOKUP_BY_ADDR 3PROC +.Os +.Sh NAME +.Nm Plookup_by_addr , +.Nm Pxlookup_by_addr , +.Nm Pxlookup_by_addr_resolved , +.Nm Plookup_by_name , +.Nm Pxlookup_by_name +.Nd lookup symbols in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plookup_by_addr +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "char *buf" +.Fa "size_t size" +.Fa "Gelf_Sym *symp" +.Fc +.Ft int +.Fo Pxlookup_by_addr +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "char *buf" +.Fa "size_t size" +.Fa "Gelf_Sym *symp" +.Fa "prsyminfo_t *sip" +.Fc +.Ft int +.Fo Pxlookup_by_addr_resolved +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "char *buf" +.Fa "size_t size" +.Fa "Gelf_Sym *symp" +.Fa "prsyminfo_t *sip" +.Fc +.Ft int +.Fo Plookup_by_name +.Fa "struct ps_prochandle *P" +.Fa "const char *object" +.Fa "const char *symbol" +.Fa "GElf_Sym *symp" +.Fc +.Ft int +.Fo Pxlookup_by_name +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *object" +.Fa "const char *symbol" +.Fa "GElf_Sym *symp" +.Fa "prsyminfo_t *sip" +.Fc +.Sh DESCRIPTION +The +.Fn Plookup_by_addr , +.Fn Pxlookup_by_addr , +.Fn Pxlookup_by_addr_resolved , +.Fn Plookup_by_name , +and +.Fn Pxlookup_by_name +functions look up symbol information in the process handle +.Fa P +and fill in the ELF symbol information in +.Fa symp +with the found symbol. Symbols may be looked up both by address and +name. +.Pp +The +.Fn Plookup_by_addr +function looks up symbol information corresponding to the address +.Fa addr . +If found, up to +.Fa size +bytes of the symbol's name, including the null terminator will be filled +in to the buffer +.Fa buf . +.Pp +The +.Fn Pxlookup_by_addr +function is identical to the +.Fn Plookup_by_addr +function, except that it also fills in the structure +.Fa sip +with additional information. The definition of the +.Sy prsyminfo_t +is found in +.Xr libproc 3PROC . +.Pp +The +.Fn Pxlookup_by_addr_resolved +function is similar to the +.Fn Pxlookup_by_addr +function; however, it attempts to resolve the paths present in the +.Sy prsyminfo_t +to an absolute path on the file system. +.Pp +The +.Fn Plookup_by_name +function attempts to look up a symbol based on its name. The +.Fa object +argument allows the caller to specify a specific object that was mapped +in by the run-time link-editor to search for +.Fa symbol +in. The system provides three special values which may be passed in for +.Fa object . +The value +.Dv PR_OBJ_EXEC +refers to the executable's object (a.out). The value +.Dv PR_OBJ_LDSO +refers to the object +.Sy ld.so.1 . +The value +.Dv PR_OBJ_EVERY +indicates that every object should be searched. +.Pp +The +.Fn Pxlookup_by_name +function is similar to the +.Fn Plookup_by_name +function; however, it allows a link-map identifier, +.Fa lmid , +to be specified and also provides additional information about the +symbol in the form of the +.Sy prsyminfo_t +.Fa sip . +The specification of +.Fa lmid +restricts the search for the object named +.Fa object +and symbol named +.Fa symbol +to the specified link-map. +.Pp +There are three special link-map identifiers +that may be passed in. The symbol +.Dv PR_LMID_EVERY +indicates that every link-map should be searched. The symbol +.Dv LM_ID_BASE +indicates that the base link-map, the one that is used for the +executable should be searched. Finally, the symbol +.Dv LM_ID_LDSO +refers to the link-map that is used by the run-time link editor, +ld.so.1. The +.Fn Plookup_by_name +function behaves like +.Fn Pxlookup_by_name +when the +.Dv PR_LMID_EVERY +argument is passed to +.Fa lmid , +indicating that every link-map should be searched. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plookup_by_addr , +.Fn Pxlookup_by_addr , +.Fn Pxlookup_by_addr_resolved , +.Fn Plookup_by_name , +and +.Fn Pxlookup_by_name +functions return +.Sy 0 +and fill in the symbol information. Otherwise, +.Sy -1 +is returned to indicate that the symbol could not be found. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr elf 3ELF , +.Xr gelf 3ELF , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getasrs.3proc b/usr/src/man/man3proc/Plwp_getasrs.3proc new file mode 100644 index 0000000000..7630857461 --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getasrs.3proc @@ -0,0 +1,142 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETASRS 3PROC +.Os +.Sh NAME +.Nm Plwp_getasrs , +.Nm Plwp_setasrs +.Nd get and set SPARCv9 ancillary state registers +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_getasrs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "asrset_t asrs" +.Fc +.Ft int +.Fo Plwp_setasrs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "const asrset_t asrs" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getasrs +and +.Fn Plwp_setasrs +functions get and set the ancillary thread-specific register set of the +thread +.Fa lwpid +in the process handle +.Fa P . +.Pp +The ancillary state registers are only present on 64-bit +.Sy SPARCv9 +processes. They contain information that is specific to the platform and +are not included in the information obtained through functions such as +.Xr Plwp_getregs 3PROC , +.Xr Plwp_getfpregs 3PROC , +and +.Xr Plwp_getxregs 3PROC . +.Pp +The Plwp_getasrs +function reads the ancillary registers into +.Fa asrs , +while the +.Fn Plwp_setasrs +sets the thread's ancillary registers to the values provided by +.Fa asrs . +.Pp +Processes should be stopped prior to obtaining the register state of +individual threads. Processes may be stopped with +.Xr Pstop 3PROC . +.Pp +The +.Sy asrset_t +structure is described in +.Xr proc 4 . +.Pp +One may not set the register values of a process that is not an active +process, e.g. a process handle that refers to a file or a core file. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getasrs +and +.Fn Plwp_setasrs +functions return +.Sy 0 +and get or set the register state. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getasrs +and +.Fn Plwp_setasrs +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +The process handle +.Fa P +does not have any ancillary register state information. +.It Er EBUSY +The process handle +.Fa P +refers to a live process and it is not stopped. +.It Er ENOENT +The process handle +.Fa P +refers to a live process and there is no thread with id +.Fa lwpid +or it is not a 64-bit SPARCv9 process. +.It Er EINVAL +The process handle +.Fa P +refers to a core file and there is no thread with id +.Fa lwpid . +.El +.Sh ARCHITECTURE +The +.Fn Plwp_getasrs +and +.Fn Plwp_setasrs +functions are only available on +64-bit +.Sy SPARCv9 +platforms. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Plwp_getfpregs 3PROC , +.Xr Plwp_getregs 3PROC , +.Xr Plwp_setregs 3PROC , +.Xr Plwp_setregs 3PROC , +.Xr Pstop 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getgwindows.3proc b/usr/src/man/man3proc/Plwp_getgwindows.3proc new file mode 100644 index 0000000000..f6a4234d84 --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getgwindows.3proc @@ -0,0 +1,96 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETGWINDOWS 3PROC +.Os +.Sh NAME +.Nm Plwp_getgwindows +.Nd get thread unspilled register windows +.Sh SYNOPSIS +.Ft int +.Fo Plwp_getgwindows +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "gwindows_t *gwins" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getgwindows +function returns information about register windows that were not +spilled to the stack for the thread identified by +.Fa lwpid +in the process handle +.Fa P . +The argument +.Fa gwins +will be filled in with information about the register windows. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getgwindows +function returns +.Sy 0 +and +.Fa gwins +is filled in with information about the windows. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getgwindows +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +The process handle +.Fa P +does not have any +.Sy gwindows +information. +.It Er EBUSY +The process handle +.Fa P +refers to a live process and it is not stopped. +.It Er ENOENT +The process handle +.Fa P +refers to a live process and there is no thread with id +.Fa lwpid . +.It Er EINVAL +The process handle +.Fa P +refers to a core file and there is no thread with id +.Fa lwpid . +.El +.Sh ARCHITECTURE +The +.Fn Plwp_getgwindows +function is only available on +.Sy SPARC +platforms. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getpsinfo.3proc b/usr/src/man/man3proc/Plwp_getpsinfo.3proc new file mode 100644 index 0000000000..c798a1dd91 --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getpsinfo.3proc @@ -0,0 +1,101 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETPSINFO 3PROC +.Os +.Sh NAME +.Nm Plwp_getpsinfo +.Nd get thread specific ps information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_getpsinfo +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "lwpsinfo_t *lps" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getpsinfo +function +looks up the thread-specific +.Xr ps 1 +information for the thread specified by +.Fa lwpid +in the process handle +.Fa P . +The caller should provide a pointer to an +.Sy lwpsinfo_t , +.Fa lps , +whose definition can be found in +.Xr proc 4 . +.Fa lps +will be filled in with information such as the thread's id, its current +state, priority, and run-time. +.Pp +The +.Fn Plwp_getpsinfo +function only works on process handles that refer to active processes +and core files, it does not work on process handles that refer to +individual files. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getpsinfo +function returns +.Sy 0 +and +.Fa lps +is filled in with the +thread-specific +.Xr ps 1 +information. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors also see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getpsinfo +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +.Fa P +refers to a file handle obtained through +.Xr Pgrab_file 3PROC . +.It Er EINVAL +The process handle +.Fa P +refers to a core file and the specified thread does not exist. +.It Er ENOENT +The process handle +.Fa P +refers to an active process and the specified thread does not exist. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr ps 1 , +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getregs.3proc b/usr/src/man/man3proc/Plwp_getregs.3proc new file mode 100644 index 0000000000..70115f4b4b --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getregs.3proc @@ -0,0 +1,154 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETREGS 3PROC +.Os +.Sh NAME +.Nm Plwp_getfpregs , +.Nm Plwp_setfpregs , +.Nm Plwp_getregs , +.Nm Plwp_setregs +.Nd get and set thread registers +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_getfpregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "prfpregset_t *fpregs" +.Fc +.Ft int +.Fo Plwp_setfpregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "const prfpregset_t fpregs" +.Fc +.Ft int +.Fo Plwp_getregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "prpregset_t *gregs" +.Fc +.Ft int +.Fo Plwp_setregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "const prpregset_t gregs" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getregs , +.Fn Plwp_setregs , +.Fn Plwp_getfpregs , +and +.Fn Plwp_setfpregs +functions allow one to get and set the general purpose and floating +point registers from the thread +.Fa lwpid +in the process handle +.Fa P . +.Pp +The +.Fn Plwp_getfpregs +function updates the structure pointed to by +.Fa fpregs +with the state and values of the floating point registers of the thread +specified by +.Fa lwpid . +.Pp +The +.Fn Plwp_setfpregs +function updates the floating point registers of the thread specified by +.Fa lwpid +to the register state contained in +.Fa fpregs . +.Pp +The +.Fn Plwp_getregs +function updates the structure pointed to by +.Fa gregs +with the state and values of the general purpose registers of the thread +specified by +.Fa lwpid. +.Pp +The +.Fn Plwp_setregs +function updates the general purpose registers of the thread specified +by +.Fa lwpid +to the register state contained in +.Fa gregs . +.Pp +Processes must be stopped before obtaining the register state of +individual threads. Processes may be stopped with +.Xr Pstop 3PROC . +The structures used for registers are described in +.Xr proc 4 +and their defintions may be found in +.In sys/regset.h . +The definitions of these structures varies based on the architecture of +the system and the running process. +.Pp +One may not set the register values of a process that is not an active +process, e.g. a process handle that refers to a file or a core file. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getregs , +.Fn Plwp_setregs , +.Fn Plwp_getfpregs , +and +.Fn Plwp_setfpregs +functions return +.Sy 0 +and obtain or set the register state. Otherwise, +.Sy -1 +is returned, +.Sy errno +is set to indicate the error, and the register state is not updated nor +are the data pointers changed. +.Sh ERRORS +For a full list of possible errors also see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getregs , +.Fn Plwp_setregs , +.Fn Plwp_getfpregs , +and +.Fn Plwp_setfpregs +will fail if: +.Bl -tag -width Er +.It Er EBUSY +The process handle +.Fa P +is not currently stopped. +.It Er ENOENT +There is no thread in +.Fa P +with id +.Fa lwpid . +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getspymaster.3proc b/usr/src/man/man3proc/Plwp_getspymaster.3proc new file mode 100644 index 0000000000..67244077d1 --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getspymaster.3proc @@ -0,0 +1,116 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETSPYMASTER 3PROC +.Os +.Sh NAME +.Nm Plwp_getspymaster +.Nd get agent LWP spy master information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_getspymaster +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "psinfo_t *ps" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getspymaster +function returns information about the spy master that corresponds to +the agent LWP for the thread +.Fa lwpid +in the process handle +.Fa P . +.Pp +The agent LWP allows another process to inject actions into the target +process. When an agent LWP is created, it leverages an existing thread +in the process and it also creates a record of whom created the agent, +which is called the spy master. For more information on the agent LWP +and the spy master, see +.Xr proc 4 . +.Pp +If the thread identified +.Fa lwpid +has an agent LWP, the corresponding ps information (see +.Xr proc 4 +for the definition of the +.Sy psinfo_t Ns ) +will be filled into +.Fa ps . +.Pp +Note, process handles that correspond to a file, created by +.Xr Pgrab_file 3PROC , +cannot have an agent LWP created for them and thus cannot have any spy +master information. In addition, core files from older releases may not +have any data on the spy master. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getspymaster +returns +.Sy 0 +and updates +.Fa ps . +Otherwise, it returns +.Sy -1 , +sets +.Sy errno , +and +.Fa ps +is not modified. +.Sh ERRORS +For a full list of possible errors also see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getpsinfo +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +.Fa P +refers to a file handle obtained through +.Xr Pgrab_file 3PROC +or +.Fa P +does not have any information about the spy master. +.It Er EINVAL +The process handle +.Fa P +refers to a core file and the specified thread does not exist. +.Pp +The thread, +.Fa lwpid +does not have an active agent, +.Dv PR_AGENT +is not set in the +.Sy pr_flags +member of the thread's status information. +.It Er ENOENT +The process handle +.Fa P +refers to an active process and the specified thread does not exist. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_getxregs.3proc b/usr/src/man/man3proc/Plwp_getxregs.3proc new file mode 100644 index 0000000000..0445251578 --- /dev/null +++ b/usr/src/man/man3proc/Plwp_getxregs.3proc @@ -0,0 +1,141 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_GETXREGS 3PROC +.Os +.Sh NAME +.Nm Plwp_getxregs , +.Nm Plwp_setxregs +.Nd get and set extended register state +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_getxregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "prxregset_t *xregs" +.Fc +.Ft int +.Fo Plwp_setxregs +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "const prxregset_t *xregs" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_getxregs +and +.Fn Plwp_setxregs +functions get and set the extended register state of the thread +.Fa lwpid +in the process handle +.Fa P . +.Pp +The extended register state is defined by the architecture. These +registers may refer to optional registers that have become common on the +platform, but are not part of the standard ABI and thus not covered by +functions such as +.Xr Plwp_getregs 3PROC +and +.Xr Plwp_getfpregs 3PROC . +.Pp +The +.Fn Plwp_getxregs +function gets the extended register state information and places it into +.Fa xregs . +Where as the +.Fn Plwp_setxregs +function sets the extended register state information in +.Fa xregs +for the process handle +.Fa P . +.Pp +Processes must be stopped prior to obtaining the register state of +individual threads. Processes may be stopped with +.Xr Pstop 3PROC . +.Pp +The +.Sy prxregset_t +structure is described in +.Xr proc 4 . +.Pp +One may not set the register values of a process that is not an active +process, e.g. a process handle that refers to a file or a core file. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_getxregs +and +.Fn Plwp_setxregs +functions return +.Sy 0 +and get or set the register state. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_getxregs +and +.Fn Plwp_setxregs +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +The process handle +.Fa P +does not have any extended register state information. +.It Er EBUSY +The process handle +.Fa P +refers to a live process and it is not stopped. +.It Er ENOENT +The process handle +.Fa P +refers to a live process and there is no thread with id +.Fa lwpid . +.It Er EINVAL +The process handle +.Fa P +refers to a core file and there is no thread with id +.Fa lwpid . +.El +.Sh ARCHITECTURE +The +.Fn Plwp_getxregs +and +.Fn Plwp_setxregs +functions are only available on +.Sy SPARC +platforms. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Plwp_getfpregs 3PROC , +.Xr Plwp_getregs 3PROC , +.Xr Plwp_setfpregs 3PROC , +.Xr Plwp_setregs 3PROC , +.Xr Pstop 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Plwp_iter.3proc b/usr/src/man/man3proc/Plwp_iter.3proc new file mode 100644 index 0000000000..3ad0f1219b --- /dev/null +++ b/usr/src/man/man3proc/Plwp_iter.3proc @@ -0,0 +1,106 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_ITER 3PROC +.Os +.Sh NAME +.Nm Plwp_iter , +.Nm Plwp_iter_all +.Nd iterate over threads +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_iter +.Fa "struct ps_prochandle *P" +.Fa "proc_lwp_f *func", +.Fa "void *data" +.Fc +.Ft int +.Fo Plwp_iter_all +.Fa "struct ps_prochandle *P" +.Fa "proc_lwp_all_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_iter +and +.Fn Plwp_iter_all +functions iterates over threads in the given process handle +.Fa P . +The +.Fn Plwp_iter +function iterates over all active threads, where as the +.Fn Plwp_iter_all +function iterates over both active threads and zombie threads -- threads +waiting to be reaped. +.Pp +For each thread, the callback function +.Fa func +is called with the pointer to the private data argument, +.Fa data , +and the thread's +.Sy lwpstatus_t +structure. In the case of the +.Fn Plwp_iter_all +function, the thread's +.Sy lwpsinfo_t +is also included. +.Pp +The return value of +.Fa func +controls whether or not iteration continues. If +.Fa func +returns +.Sy 0 , +then both functions will continue iteration. However, if +.Fa func +returns non-zero, then iteration will halt and that value will be used +as the return value of the +.Fn Plwp_iter +and +.Fn Plwp_iter_all +functions. Because both functions return +.Sy -1 +on internal failure, it is recommended that the callback function does +not return +.Sy -1 +to indicate an error so that the caller may distinguish between the +failure of the callback function and the failure of the +.Fn Plwp_iter +and +.Fn Plwp_iter_all +functions. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_iter +and +.Fn Plwp_iter_all +functions return +.Sy 0 . +Otherwise, if there was an internal error or there is no thread data, then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Plwp_stack.3proc b/usr/src/man/man3proc/Plwp_stack.3proc new file mode 100644 index 0000000000..1e8c189a9f --- /dev/null +++ b/usr/src/man/man3proc/Plwp_stack.3proc @@ -0,0 +1,193 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PLWP_STACK 3PROC +.Os +.Sh NAME +.Nm Plwp_stack , +.Nm Plwp_alt_stack , +.Nm Plwp_main_stack , +.Nm Lstack , +.Nm Lalt_stack , +.Nm Lmain_stack +.Nd get thread stack information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Plwp_stack +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "stack_t *stkp" +.Fc +.Ft int +.Fo Plwp_alt_stack +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "stack_t *stkp" +.Fc +.Ft int +.Fo Plwp_main_stack +.Fa "struct ps_prochandle *P" +.Fa "lwpid_t lwpid" +.Fa "stack_t *stkp" +.Fc +.Ft int +.Fo Lalt_stack +.Fa "struct ps_lwphandle *L" +.Fa "stack_t *stkp" +.Fc +.Ft int +.Fo Lmain_stack +.Fa "struct ps_lwphandle *L" +.Fa "stack_t *stkp" +.Fc +.Ft int +.Fo Lstack +.Fa "struct ps_lwphandle *L" +.Fa "stack_t *stkp" +.Fc +.Sh DESCRIPTION +The +.Fn Plwp_stack , +.Fn Plwp_alt_stack , +and +.Fn Plwp_main_stack +functions obtain information about the size and address of the stacks +for the thread identified by +.Fa lwpid +in the process handle +.Fa P . +.Pp +Each thread in a process has its own stack which is used both for +maintaining function call sequences and the storing of local variables. +A thread may also configure a different stack to handle specific +signals. This stack is often called the +.Em alternate stack . +Whether or not the alternate stack is used may be controlled through the +.Xr sigaction 2 +and +.Xr sigaltstack 2 +functions . +.Pp +The +.Fn Plwp_stack +function fills in +.Fa stkp +with the information about the thread's currently executing stack, +whether the alternate or main one. +.Pp +The +.Fn Plwp_alt_stack +function fills in +.Fa stkp +with the information about the thread's alternate stack, if it's +configured. +.Pp +The +.Fn Plwp_main_stack +function fills in +.Fa stkp +with the information about the thread's main stack, regardless of if there +is an alternate stack or it is executing one. +.Pp +Process handles that refer to files, obtained through +.Xr Pgrab_file 3PROC , +do not have any stack information and these functions will always fail +on them. +.Pp +The +.Fn Lalt_stack , +.Fn Lmain_stack , +and +.Fn Lstack +functions are identical to the +.Fn Plwp_alt_stack , +.Fn Plwp_main_stack , +and +.Fn Plwp_main_stack +functions, except rather than specifying a thread to operate on, they +operate on the thread handle +.Fa L , +which specifies the thread to operate on. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Plwp_stack , +.Fn Plwp_alt_stack , +.Fn Plwp_main_stack , +.Fn Lalt_stack , +.Fn Lmain_stack , +and +.Fn Lstack +functions return +.Sy 0 +and fills in +.Fa stkp +with information about the appropriate stack. Otherwise, +.Sy -1 +is returned, +.Sy errno +is updated with the error, and +.Fa stkp +is not modified. +.Sh ERRORS +For a full list of possible errors also see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Plwp_stack , +.Fn Plwp_alt_stack , +and +.Fn Plwp_main_stack +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +The process handle +.Fa P +refers to a grabbed file, not an active process or core. +.It Er EINVAL +The process handle +.Fa P +refers to a core file and the specified thread does not exist. +.It Er ENOENT +The process handle +.Fa P +refers to an active process and the specified thread does not exist. +.El +.Pp +The +.Fn Plwp_alt_stack +and +.Fn Lalt_stack +functions will fail if: +.Bl -tag -width Er +.It Er ENODATA +The thread identified by +.Fa lwpid +did not have an alternate stack enabled. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr sigaction 2 , +.Xr sigaltstack 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pmapping_iter.3proc b/usr/src/man/man3proc/Pmapping_iter.3proc new file mode 100644 index 0000000000..b60d06ad50 --- /dev/null +++ b/usr/src/man/man3proc/Pmapping_iter.3proc @@ -0,0 +1,158 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PMAPPING_ITER 3PROC +.Os +.Sh NAME +.Nm Pmapping_iter , +.Nm Pmapping_iter_resolved , +.Nm Pobject_iter , +.Nm Pobject_iter_resolved +.Nd iterate over process mappings and objects +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pmapping_iter +.Fa "struct ps_prochandle *P" +.Fa "proc_map_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Pmapping_iter_resolved +.Fa "struct ps_prochandle *P" +.Fa "proc_map_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Pobject_iter +.Fa "struct ps_prochandle *P" +.Fa "proc_map_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Pobject_iter_resolved +.Fa "struct ps_prochandle *P" +.Fa "proc_map_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Pmapping_iter +and +.Fn Pmapping_iter_resolved +functions iterate over the memory mappings in the process represented by +.Fa P. +.Pp +For each memory mapping, the callback function +.Fa func +will be invoked and it will be passed the +.Fa data +argument, +the +.Sy prmap_t +structure defined from +.Xr proc 4 , +and a name of the mapping. The way that the name is obtained varies +based on whether one calls +.Fn Pmapping_iter +or +.Fn Pmapping_iter_resolved . +In both cases, the dynamic linker is consulted to determine the file +name for the mapping, if it's known. If the name is unknown, for example +an anonymous mapping, then the +.Dv NULL +pointer is passed in for the name. In the case of the +.Fn Pmapping_iter_resolved +function the system tries to resolve it to a complete file system path. +If that fails, it falls back to the information from the dynamic linker, +before returning +.Dv NULL +in the case of not being able to find any name. +For more information on the +signature of the +.Ft proc_map_f , +see +.Xr libproc 3LIB . +.Pp +The return value of +.Fa func +controls whether or not iteration continues. If +.Fa func +returns +.Sy 0 +then iteration continues. If +.Fa func +returns non-zero then iteration will halt and the value will be +returned to the caller. Because +.Sy -1 +indicates internal failure, it is recommended that the callback +function not return +.Sy -1 +to indicate an error itself. This allows the caller to distinguish +between failure of the callback function versus failure of the +.Fn Pmapping_iter +and +.Fn Pmapping_iter_resolved +functions. +.Pp +The +.Fn Pobject_iter +and +.Fn Pobject_iter_resolved +functions are similar to the +.Fn Pmapping_iter +and +.Fn Pmapping_iter_resolved +functions. Except, rather than iterating over every mapping, they +iterate over the objects that the process has loaded by the dynamic +linker. For example, an anonymous mapping will show up when iterating +mappings, but will not show up when iterating objects. Further, while +most dynamic shared objects have multiple mappings for the text and +data sections, there will only be a single object that is iterated +over. +.Pp +The distinction between the +.Fn Pobject_iter +and +.Fn Pobject_iter_resolved +functions is identical to the difference in name resolution between the +.Fn Pmapping_iter +and +.Fn Pmapping_iter_resolved +functions. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pmapping_iter , +.Fn Pmapping_iter_resolved +.Fn Pobject_iter , +and +.Fn Pobject_iter_resolved +functions return +.Sy 0. +Otherwise, if there was an internal error then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pobjname.3proc b/usr/src/man/man3proc/Pobjname.3proc new file mode 100644 index 0000000000..cd97e41ce7 --- /dev/null +++ b/usr/src/man/man3proc/Pobjname.3proc @@ -0,0 +1,91 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt POBJNAME 3PROC +.Os +.Sh NAME +.Nm Pobjname , +.Nm Pobjname_resolved , +.Nd turn a virtual address into its mapped object +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo Pobjname +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "char *buffer" +.Fa "size_t bufsize" +.Fc +.Ft char * +.Fo Pobjname_resolved +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fa "char *buffer" +.Fa "size_t bufsize" +.Fc +.Sh DESCRIPTION +The +.Fn Pobjname +and +.Fn Pobjname_resolved +functions attempt to determine the underlying mapped object that +contains the virtual address +.Fa addr +in the process handle +.Fa P . +.Pp +A program consists of multiple memory mappings. Some are provided by the +system, such as the stack and the heap. While others are created through +explicit calls to +.Xr mmap 2 +or brought in by the run-time link-editor due to dependencies +specified in binaries and libraries. +.Pp +If +.Fa addr +is contained in a mapping, then up to +.Fa bufsize +characters, including the null terminator, +of the name of the corresponding object will be written into +.Fa buffer . +The +.Fn Pobjname_resolved +function attempts to resolve the object to a full file system path. If +the full file-system path cannot be determined, then it will fall back +to the name that the run-time link-editor has for that mapping, which is +the behavior of +.Fn Pobjname . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pobjname +and +.Fn Pobjname_resolved +functions return +.Fa buffer . +Otherwise, +.Dv NULL +is returned to indicate the object name could not be found. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr mmap 2 , +.Xr libproc 3LIB , +.Xr Pobject_iter 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pplatform.3proc b/usr/src/man/man3proc/Pplatform.3proc new file mode 100644 index 0000000000..c17f9aabe9 --- /dev/null +++ b/usr/src/man/man3proc/Pplatform.3proc @@ -0,0 +1,90 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PPLATFORM 3PROC +.Os +.Sh NAME +.Nm Pplatform +.Nd get platform string +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo Pplatform +.Fa "struct ps_prochandle *P" +.Fa "char *buffer" +.Fa "size_t bufsize" +.Fc +.Sh DESCRIPTION +The +.Fn Pplatform +function determines the name of the platform for the process handle +.Fa P . +Up to +.Fa bufsize +characters, including the null terminator, will be copied into +.Fa buffer . +.Pp +The platform is the value reported by the +.Sy -s +option to +.Xr uname 1 . +For example, on x86 systems, the value will be +.Sy i86pc . +.Pp +Note, process handles that correspond to a file, created by +.Xr Pgrab_file 3PROC , +will not report a platform and the +.Fn Pplatform +function will fail. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pplatform +function returns +.Fa buffer . +Otherwise, +.Dv NULL +is returned, +.Sy errno +is set, and +.Fa buffer +is not updated. +.Sh ERRORS +The +.Fn Pplatform +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +.Fa P +refers to a core file and there is no +.Sy NT_PLATFORM +ELF note available. +.It Er EFAULT +.Fa P +refers to a live process and +.Fa buffer +is an invalid address. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr uname 1 , +.Xr sysinfo 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Ppltdest.3proc b/usr/src/man/man3proc/Ppltdest.3proc new file mode 100644 index 0000000000..efdca692dc --- /dev/null +++ b/usr/src/man/man3proc/Ppltdest.3proc @@ -0,0 +1,62 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PPLTDEST 3PROC +.Os +.Sh NAME +.Nm Ppltdest +.Nd determine PLT destination symbol +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const char *" +.Fo Ppltdest +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t addr" +.Fc +.Sh DESCRIPTION +The +.Fn Ppltdest +function determines if the address at +.Fa addr +in the process handle +.Fa P +corresponds to an entry in the procedure linkage table (PLT) and if so, +returns a pointer to a null-terminated character string that contains +the symbol's name. The returned pointer is not valid after any other +calls to function in +.Xr libproc 3LIB . +The +.Fn Ppltdest +is also a useful way to determine if +.Fa addr +corresponds to an address in the PLT. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Ppltdest +returns a pointer to a character string with the name. Otherwise, +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB +.Rs +.%T Linkers and Libraries Guide +.Re diff --git a/usr/src/man/man3proc/Ppriv.3proc b/usr/src/man/man3proc/Ppriv.3proc new file mode 100644 index 0000000000..ae238eae67 --- /dev/null +++ b/usr/src/man/man3proc/Ppriv.3proc @@ -0,0 +1,77 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PPRIV 3PROC +.Os +.Sh NAME +.Nm Ppriv , +.Nm Ppriv_free +.Nd get and free process privilege sets +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Ppriv +.Fa "struct ps_prochandle *P" +.Fa "prpriv_t **pprv" +.Fc +.Ft void +.Fo Ppriv_free +.Fa "struct ps_prochandle *P" +.Fa "prpriv_t *prv" +.Fc +.Sh DESCRIPTION +The +.Fn Ppriv +function obtains the privilege set of the process handle +.Fa P . +The privilege set, if it exists, will be dynamically allocated and a +pointer to it will be placed in +.Fa pprv . +It must be released with a call to +.Fn Ppriv_free . +The definition of the +.Sy prpriv_t +structure is documented in +.Xr proc 4 . +.Pp +The +.Fn Ppriv_free +function releases the storage in +.Fa prv +that was allocated as a result of calling +.Fn Ppriv . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Ppriv +function returns +.Sy 0 +and +.Fa pprv +is updated with a pointer to the allocated privilege set. Otherwise, +.Sy -1 +is returned and +.Fa pprv +is not updated. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr privileges 5 diff --git a/usr/src/man/man3proc/Ppsinfo.3proc b/usr/src/man/man3proc/Ppsinfo.3proc new file mode 100644 index 0000000000..f86572f9f6 --- /dev/null +++ b/usr/src/man/man3proc/Ppsinfo.3proc @@ -0,0 +1,56 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PPSINFO 3PROC +.Os +.Sh NAME +.Nm Ppsinfo +.Nd get process ps information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const psinfo_t *" +.Fo Ppsinfo +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Ppsinfo +function returns the process handle +.Fa P Ns 's +.Xr ps 1 +information. The +.Sy psinfo_t +structure that is returned is defined in +.Xr proc 4 +and is valid until a subsequent call to +.Xr Prelease 3PROC . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Ppsinfo +function returns a pointer to the process ps information. Otherwise, +.Dv NULL +is returned to indicate that it could not be found. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr ps 1 , +.Xr libproc 3LIB , +.Xr Prelease 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Prd_agent.3proc b/usr/src/man/man3proc/Prd_agent.3proc new file mode 100644 index 0000000000..78438621c5 --- /dev/null +++ b/usr/src/man/man3proc/Prd_agent.3proc @@ -0,0 +1,61 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PRD_AGENT 3PROC +.Os +.Sh NAME +.Nm Prd_agent +.Nd get librtld_db agent +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "rd_agent_t *" +.Fo Prd_agent +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Prd_agent +function returns a pointer to an agent suitable for use with the +run-time link editing database library, +.Xr librtld_db 3PROC , +corresponding to the process handle +.Fa P . +.Pp +The returned agent is valid until either the process handle executes a +new process image through the +.Xr exec 2 +family of calls or the process handle +.Fa P +is released through a call to +.Xr Prelease 3PROC . +.Sh RETURN VALUES +Upon successful completion, the +.Fn Prd_agent +function returns a pointer to the librtld_db agent. Otherwise, it +returns +.Dv NULL +to indicate failure. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr exec 2 , +.Xr libproc 3LIB , +.Xr librtld_db 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pread.3proc b/usr/src/man/man3proc/Pread.3proc new file mode 100644 index 0000000000..8b4eb52da8 --- /dev/null +++ b/usr/src/man/man3proc/Pread.3proc @@ -0,0 +1,113 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PREAD 3PROC +.Os +.Sh NAME +.Nm Pread , +.Nm Pread_string +.Nd read data from a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft ssize_t +.Fo Pread +.Fa "struct ps_prochandle *P" +.Fa "void *buf" +.Fa "size_t nbytes" +.Fa "uintptr_t address" +.Fc +.Ft ssize_t +.Fo Pread_string +.Fa "struct ps_prochandle *P" +.Fa "char *buf" +.Fa "size_t nbytes" +.Fa "uintptr_t address" +.Fc +.Sh DESCRIPTION +The +.Fn Pread +function reads data from the process handle +.Fa P +starting at +.Fa address +in the address space of the process and reads at most +.Fa nbytes +of data into +.Fa buf +and is logically analogous to the +.Xr pread 2 +function. +.Pp +For live processes, this function is equivalent to reading from the +/proc file system +.Sy as +file for the process. For core files and file handles, it reads and +writes from the logical address space and not the corresponding offset +of the file itself. For example, a core file contains a sparse +representation of the address space of a crashed process and unmapped +regions are not present in the file. However, +.Fa address +still refers to the virtual addresses that were present at run-time and +not those in the core file. +.Pp +The +.Fn Pread_string +function is similar to the +.Fn Pread +function, except that it attempts to interpret +.Fa address +as a null terminated character string and will stop reading characters +into +.Fa buf +if either +.Fa nbytes +has been read or a null terminator is encountered. The resulting data in +.Fa buf +will always be null terminated, even if no null terminator was found in +the first +.Fa nbytes +of data. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pread +and +.Fn Pread_string +functions return a non-negative integer indicating the number of bytes +actually read. Otherwise, the functions return +.Sy -1 +and set +.Sy errno +to indicate the error. +.Sh ERRORS +For a full list of possible errors also see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 +and +the +.Sy ERRORS +section in +.Xr pread 2 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr pread 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Prelease.3proc b/usr/src/man/man3proc/Prelease.3proc new file mode 100644 index 0000000000..d201d198ac --- /dev/null +++ b/usr/src/man/man3proc/Prelease.3proc @@ -0,0 +1,114 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PRELEASE 3PROC +.Os +.Sh NAME +.Nm Prelease , +.Nm Pfree +.Nd release a process control handle +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Prelease +.Fa "struct ps_prochandle *P" +.Fa "int flags" +.Fc +.Ft void +.Fo Pfree +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Prelease +function is used to release all of the resources associated with a +.Nm libproc +handle. It is suitable for handles to core files, created processes, and +grabbed processes from the +.Xr Pgrab_core 3PROC , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +and +.Xr Pgrab_file 3PROC +functions. +.Pp +After calling the +.Fn Prelease +function, all data that was returned via the handle will no longer be +valid. For example, the data from calls to +.Xr Pctlfd 3PROC , +.Xr Pgetauxvec 3PROC , +.Xr Pstatus 3PROC , +and others. +.Pp +The behavior of the released process is controlled by the +.Fa flags +argument. By default, if no flags are passed, then the process +represented by +.Fa P +will be set running if it was created by +.Xr Pcreate +or if it was not originally stopped or set to stop in /proc. The +following values may be passed in to the +.Fa flags +argument. Multiple flags should be be combined with a +bitwise-inclusive-OR. +.Bl -tag -width Er -offset indent +.It Dv PRELEASE_CLEAR +When releasing the process, clear all tracing flags that are set on the +process. +.It Dv PRELEASE_RETAIN +When releasing the process, retain all tracing flags that are currently +active on the process. +.It Dv PRELEASE_HANG +Leave the process stopped. It will not resume execution unless it is +explicitly enabled with +.Xr prun 1 +or another process explicitly enables it. +.It Dv PRELEASE_KILL +Release the process and terminate it with +.Dv SIGKILL . This option takes precedence over all other values that may +be passed in to +.Fa flags . +.El +.Pp +The +.Fn Pfree +function is similar to the +.Fn Prelease +function in that it frees the resources associated with the process +handle +.Fa P ; +however, unlike the +.Fn Prelease +function, it does not handle any logic to change or set the grabbed processes +state. In general, prefer +.Fn Prelease +to +.Fn Pfree . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr prun 1 , +.Xr libproc 3LIB , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Preopen.3proc b/usr/src/man/man3proc/Preopen.3proc new file mode 100644 index 0000000000..6343a56f12 --- /dev/null +++ b/usr/src/man/man3proc/Preopen.3proc @@ -0,0 +1,72 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PREOPEN 3PROC +.Os +.Sh NAME +.Nm Preopen +.Nd reopen a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Preopen +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Preopen +function is used to regain control of the process represented by the +handle +.Fa P . +A loss of control is indicated by the +.Xr Pstatus 3PROC +function returning the value +.Dv PS_LOST . +This may occur when the controlled process performs an +.Xr exec 2 +of a setuid or setgid binary or one where the controlling process cannot +read the object file. For more information on this, see the +.Sy PROGRAMMING NOTES +section of +.Xr proc 4 . +.Pp +If successful, the controlling process will obtain control of the +process specified by +.Fa P . +If it fails, the controlling process should release the handle with +.Xr Prelease 3PROC . +Note there are occasions where due to permissions it may not be possible +to obtain control again. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Preopen +function returns +.Sy 0. +Otherwise, +.Sy -1 +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr exec 2 , +.Xr libproc 3LIB , +.Xr Prelease 3PROC , +.Xr Pstatus 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Preset_maps.3proc b/usr/src/man/man3proc/Preset_maps.3proc new file mode 100644 index 0000000000..c842757319 --- /dev/null +++ b/usr/src/man/man3proc/Preset_maps.3proc @@ -0,0 +1,55 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PRESET_MAPS 3PROC +.Os +.Sh NAME +.Nm Preset_maps +.Nd reset memory mapping data after exec +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Preset_maps +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Preset_maps +function resets all of the mapping data, cached symbol tables, debug +information, CTF, and more in the process handle +.Fa P . +The map information will rebuild itself on the execution of another +.Xr libproc 3LIB +function that requires the information. +This function should be called any time after a process handle performs +an +.Xr exec 2 . +As such, this interface is only relevant to the manipulation of live +processes and not core files or ELF files. +For more information, see the +.Sy PROGRAMMING NOTES +section in +.Xr libproc 3LIB . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr exec 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetbkpt.3proc b/usr/src/man/man3proc/Psetbkpt.3proc new file mode 100644 index 0000000000..1d0992d298 --- /dev/null +++ b/usr/src/man/man3proc/Psetbkpt.3proc @@ -0,0 +1,93 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETBKPT 3PROC +.Os +.Sh NAME +.Nm Psetbkpt +.Nd set a breakpoint trap in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetbkpt +.Fa "struct ps_prochandle *P" +.Fa "uintptr_t address" +.Fa "ulong_t *saved" +.Fc +.Sh DESCRIPTION +The +.Fn Psetbkpt +function sets a breakpoint instruction at the address +.Fa address +in the process handle +.Fa P . +The instruction that used to be set will be set in +.Fa saved +and should be retained. +.Pp +A breakpoint will remain in place until a subsequent call to +.Xr Pdelbkpt 3PROC . +The value stored in +.Fa saved +should be passed as the third argument to +.Xr Pdelbkpt 3PROC . +.Pp +When a process executes an instruction that has been replaced with a +breakpoint it generates a +.Sy FLTBPT +trap +causing the thread to stop. +.Pp +Note, breakpoints may only be set in active processes. They may not be +set in process handles that refer to core files, zombie processes, or +files. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetbkpt +function sets the breakpoint and +returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Psetbkpt +function will fail if: +.Bl -tag -width Er +.It Er ENOENT +.Fa P +does not refer to an active process. +.It Er EBUSY +A breakpoint instruction was already written by another debugger. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pdelbkpt 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetcred.3proc b/usr/src/man/man3proc/Psetcred.3proc new file mode 100644 index 0000000000..4cd9e214b5 --- /dev/null +++ b/usr/src/man/man3proc/Psetcred.3proc @@ -0,0 +1,65 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETCRED 3PROC +.Os +.Sh NAME +.Nm Psetcred +.Nd set process credentials +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetcred +.Fa "struct ps_prochandle *P" +.Fa "const prcred_t *credp" +.Fc +.Sh DESCRIPTION +The +.Fn Psetcred +function updates the credentials of the process handle +.Fa P +to the values set in +.Fa credp . +.Fa credp +must be fully initialized. The definition of the +.Sy prcred_t +structure may be found in +.Xr proc 4 . +.Pp +Note, the credentials may only be updated for an active process. If the +process handle refers to a zombie process, core file, or a file, then +.Fn Psetcred +will fail. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetcred +function returns +.Sy 0 +and updates the credentials of the process +.Fa P . +Otherwise, +.Sy -1 +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pcred 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetfault.3proc b/usr/src/man/man3proc/Psetfault.3proc new file mode 100644 index 0000000000..4a3200762b --- /dev/null +++ b/usr/src/man/man3proc/Psetfault.3proc @@ -0,0 +1,61 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETFAULT 3PROC +.Os +.Sh NAME +.Nm Psetfault +.Nd set fault tracing flags +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Psetfault +.Fa "struct ps_prochandle *P" +.Fa "const fltset_t *set" +.Fc +.Sh DESCRIPTION +The +.Fn Psetfault +function sets the fault tracing flags on the process handle +.Fa P +to +.Fa set . +It replaces any existing fault tracing flags on the process. These +flags indicate which faults cause execution of the thread to stop. +Allowing another tool, such as a debugger, to act upon the process. +For more information on faults and the +.Sy fltset_t +structure see the +.Sy PCSFAULT +section in +.Xr proc 4 . +The current fault set for the process may be obtained through the +.Xr Pfault 3PROC +function. +.Pp +Note, only active processes may have their fault set updated. Process +handles that refer to core files, zombie processes, and files do not +have fault tracing flags and this function is a no-op on them. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pfault 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetflags.3proc b/usr/src/man/man3proc/Psetflags.3proc new file mode 100644 index 0000000000..8a1783b738 --- /dev/null +++ b/usr/src/man/man3proc/Psetflags.3proc @@ -0,0 +1,105 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETFLAGS 3PROC +.Os +.Sh NAME +.Nm Psetflags +.Nm Punsetflags +.Nd set and unset process flags +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetflags +.Fa "struct ps_prochandle *P" +.Fa "long flags" +.Fc +.Ft int +.Fo Punsetflags +.Fa "struct ps_prochandle *P" +.Fa "long flags" +.Fc +.Sh DESCRIPTION +The +.Fn Psetflags +and +.Fn Punsetflags +functions manipulate the process flags for the process handle +.Fa P . +The process flags determine how the process behaves in the face of +various actions. For example, setting the +.Sy PR_FORK +flag indicates that the tracing flags of the process and the +inherit-on-fork mode should be set on children. A full list of the +process flags is available in the +.Sy PCSET +section in +.Xr proc 4 . +.Pp +The +.Fn Psetflags +function sets the flags specified in +.Fa flags +by doing a bitwise-inclusive-OR with the previously set flags. +.Pp +The +.Fn Punsetflags +function removes the flags specified in +.Fa flags +from the tracing flags of the process. Items not listed in +.Fa flags +will remain. +.Pp +To see the current set of flags active on the process, check the +.Sy pr_flags +member of the +.Sy pstatus_t +for the process. It can be obtained through the +.Xr Pstatus 3PROC +function. +.Pp +Note, attempting to modify the process flags only works on active +processes. Attempting to call these functions of process handles +corresponding to core files, zombie processes, or files, will result in +an error. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetflags +and +.Fn Punsetflags +functions return +.Sy 0 . +Otherwise, +.Sy -1 +is returned +and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pstatus 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetpriv.3proc b/usr/src/man/man3proc/Psetpriv.3proc new file mode 100644 index 0000000000..d2a0dbc08c --- /dev/null +++ b/usr/src/man/man3proc/Psetpriv.3proc @@ -0,0 +1,87 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETPRIV 3PROC +.Os +.Sh NAME +.Nm Psetpriv +.Nd set process privileges +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetpriv +.Fa "struct ps_prochandle *P" +.Fa "prpriv_t *pprv" +.Fc +.Sh DESCRIPTION +The +.Fn Psetpriv +function updates the privileges of the process handle +.Fa P +to the set described by +.Fa pprv . +The updated privilege set has restrictions on what it may change for a +process which are documented in the +.Sy PCSPRIV +section of +.Xr proc 4 . +In addition, the definition of the +.Sy prpriv_t +structure is described in +.Xr proc 4 . +.Pp +The current privilege set for the process may be obtained through a call +to +.Xr Ppriv 3PROC . +.Pp +Note, the privilege set may only be updated for active processes. +Process handles which correspond to core files, zombie processes, and +files, may not have their privilege sets updated. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetpriv +function returns +.Sy 0 +and updates the privilege sets of the process. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Psetpriv +function will fail if: +.Bl -tag -width Er +.It Er EBADF +.Fa P +doesn't refer to an active process, but a core file, zombie, or a file. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Ppriv 3PROC , +.Xr proc 4 , +.Xr privileges 5 diff --git a/usr/src/man/man3proc/Psetrun.3proc b/usr/src/man/man3proc/Psetrun.3proc new file mode 100644 index 0000000000..6a063d6dd9 --- /dev/null +++ b/usr/src/man/man3proc/Psetrun.3proc @@ -0,0 +1,152 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETRUN 3PROC +.Os +.Sh NAME +.Nm Psetrun , +.Nm Lsetrun +.Nd run a stopped process or thread +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetrun +.Fa "struct ps_prochandle *P" +.Fa "int sig" +.Fa "int flags" +.Fc +.Ft int +.Fo Lsetrun +.Fa "struct ps_lwphandle *L" +.Fa "int sig" +.Fa "int flags" +.Fc +.Sh DESCRIPTION +The +.Fn Psetrun +function resumes the stopped process handle +.Fa P +and transitions the process to running. +If +.Fa sig +is non-zero, then the +.Fn Psetrun +function causes the signal to be delivered. See +.Xr signal.h 3HEAD +for a list of valid signal identifiers. +.Pp +The +.Fa flags +member modifies the behavior of the resumed handle. The following values +may be combined by a bitwise-inclusive-OR: +.Bl -tag -width Dv -offset indent +.It Dv PRCSIG +Clears the current signal, if any. +.It Dv PRCFAULT +Clears the current fault, if any. +.It Dv PRSTEP +Indicates that the thread should single-step over the next machine +instruction and upon completion, inject a trap. For the specific +mechanics of single-stepping and what traps or signals will be injected, +see the +.Sy PRSTEP +section of +.Xr proc 4 . +.It Dv PRSABORT +Indicates that the thread should abort the system call that it is +currently executing. This is only valid if the thread is stopped because +it is asleep or right before a system call. This will cause the system +call to return +.Er EINTR . +.El +.Pp +If +both +.Dv PRCSIG +is specified and +.Fa sig +is non-zero, then the +.Dv PRCSIG +request takes priority, and it will be treated as though +.Fa sig +was passed the argument +.Sy 0 . +.Pp +When the process is resumed all extent tracing flags and register +changes will be synchronized with the process. For more information on +resuming a thread see the +.Sy PCRUN +section in +.Xr proc 4 . +.Pp +Note, the +.Fn Psetrun +function is only valid for active processes. It will fail on process +handles that refer to core files, zombie processes, and ELF objects. +.Pp +The +.Fn Lsetrun +function is equivalent to the +.Fn Psetrun +function, except rather than operating on a process it operates on a +thread. +.Fn Lsetrun +causes the specified thread, +.Fa L , +to resume execution. Whereas +.Fn Psetrun +causes all threads in the process to resume. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetrun +and +.Fn Lsetrun +functions return +.Sy 0 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Psetrun +and +.Fn Lsetrun +functions will fail if: +.Bl -tag -width Er +.It Er EBUSY +The process handle +.Fa P +is not currently stopped or it is not stopped due to an event of +interest, a directed stop, or it is asleep in a system call. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr signal.h 3HEAD , +.Xr libproc 3LIB , +.Xr Pstatus 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetsignal.3proc b/usr/src/man/man3proc/Psetsignal.3proc new file mode 100644 index 0000000000..c861788570 --- /dev/null +++ b/usr/src/man/man3proc/Psetsignal.3proc @@ -0,0 +1,71 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETSIGNAL 3PROC +.Os +.Sh NAME +.Nm Psetsignal +.Nd set signal tracing flags +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Psetsignal +.Fa "struct ps_prochandle *P" +.Fa "const sigset_t *set" +.Fc +.Sh DESCRIPTION +The +.Fn Psetsignal +function sets the signal tracing flags for the process handle +.Fa P +to +.Fa set . +The call to +.Fn Psetsignal +replaces any existing signal tracing flags entirely with +.Fa set . +The signal tracing flags determine which signals, when received by a +thread in the process, will cause that thread to stop. For more +information on the behavior of the signal tracing flags, including which +signals may be traced this way, see the +.Sy PCSTRACE +section in +.Xr proc 4 . +.Pp +The +.Fa set +argument may be manipulated with the standard signal set manipulation +functions such as +.Xr sigaddset 3C , +.Xr sigdelset 3C , +and others which may all be found in +.Xr sigsetops 3C . +.Pp +Note, only active processes may have their signal tracing flags updated. +Process handles that refer to core files, zombie processes, and files do +not have fault tracing flags and this function is a no-op on them. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr sigsetops 3C , +.Xr signal.h 3HEAD , +.Xr libproc 3LIB , +.Xr Psignal 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetsysentry.3proc b/usr/src/man/man3proc/Psetsysentry.3proc new file mode 100644 index 0000000000..f8759937d3 --- /dev/null +++ b/usr/src/man/man3proc/Psetsysentry.3proc @@ -0,0 +1,72 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETSYSENTRY 3PROC +.Os +.Sh NAME +.Nm Psetsysentry , +.Nm Psetsysexit +.Nd set system call tracing flags +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Psetsysentry +.Fa "struct ps_prochandle *P" +.Fa "const sysset_t *set" +.Fc +.Ft void +.Fo Psetsysexit +.Fa "struct ps_prochandle *P" +.Fa "const sysset_t *set" +.Fc +.Sh DESCRIPTION +The +.Fn Psetsysentry +and +.Fn Psetsysexit +set the system call entry and exit tracing flags respectively in the +process handle +.Fa P +to +.Fa set . +The call to +.Fn Psetsysentry +or +.Fn Psetsysexit +replaces the corresponding set of system call tracing flags entirely +with the new set. The system call entry tracing flags cause a thread to +stop on entry to the system call and the exit tracing flags cause a +thread to stop on return from the system call, before control returns +back to the user land process. For more information on the state of the +thread and for information on manipulating the +.Sy sysset_t , +see +.Xr proc 4 . +.Pp +Note that only active processes may have their system call tracing flags +updated. Process handles that refer to core files, zombie processes, +and files do not have fault tracing flags and this function is a no-op +on them. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr Intro 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetwapt.3proc b/usr/src/man/man3proc/Psetwapt.3proc new file mode 100644 index 0000000000..1751f04fb9 --- /dev/null +++ b/usr/src/man/man3proc/Psetwapt.3proc @@ -0,0 +1,84 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETWAPT 3PROC +.Os +.Sh NAME +.Nm Psetwapt +.Nd set a watchpoint in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetwapt +.Fa "struct ps_prochandle *P" +.Fa "const prwatch_t *wp" +.Fc +.Sh DESCRIPTION +The +.Fn Psetwapt +function adds a watchpoint to the process handle +.Fa P . +Allowing the hardware to generate a trap when the specified area is +accessed. The watchpoint's parameters are described in +.Fa wp . +For more information on watchpoints and the +.Sy prwatch_t +structure, see the +.Sy PCWATCH +section in +.Xr proc 4 . +The watched area will persist until a subsequent call to +.Xr Pdelwapt 3PROC . +.Pp +Note, only active processes support watchpoints. It is an error to call +this function on process handles that correspond to core files, zombie +processes, or files. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetwapt +function returns +.Sy 0 +and installs the watchpoint in +.Fa P . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Psetwapt +function will fail if: +.Bl -tag -width Er +.It Er ENOENT +.Fa P +does not refer to an active process. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pdelwapt 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psetzoneid.3proc b/usr/src/man/man3proc/Psetzoneid.3proc new file mode 100644 index 0000000000..4d163c8b17 --- /dev/null +++ b/usr/src/man/man3proc/Psetzoneid.3proc @@ -0,0 +1,103 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSETZONEID 3PROC +.Os +.Sh NAME +.Nm Psetzoneid +.Nd change processes zone id +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psetzoneid +.Fa "struct ps_prochandle *P" +.Fa "zoneid_t zoneid" +.Fc +.Sh DESCRIPTION +The +.Fn Psetzoneid +function moves the process handle +.Fa P +into the zone specified by +.Fa zoneid . +A process that is in the non-global zone may only move between the +global zone and its original zone. A process that is in the global zone +may not use this interface to enter a non-global zone. This function +will fail if called from a non-global zone. This function only +manipulates the processes credentials. +.Pp +Care should be taken when moving a process around temporarily, such that +if the process that is manipulating +.Fa P +dies, it does not cause +.Fa P +to resume running while still in the global zone. It is suggested that +the +.Sy PR_KLC +flag is set with +.Xr Psetflags 3PROC +which will cause the process to terminate if the process that holds +.Fa P +unexpectedly terminates. See +.Xr proc 4 +for more information on the +.Sy PR_KLC +flag. +.Pp +Note, only active processes may change their zone. It is an error to +call this function on process handles that correspond to core files, +zombie processes, or files. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetzoneid +function returns +.Sy 0 +and changes the zone for +.Fa P . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Psetzoneid +function will fail if: +.Bl -tag -width Er +.It Er EINVAL +.Fa zoneid +does not correspond to an existing zone or the zone id is not the global +zone or the original zone of +.Fa P . +.It Er EPERM +The caller does not hold the required privileges for zone configuration. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr privileges 5 , +.Xr zones 5 diff --git a/usr/src/man/man3proc/Psignal.3proc b/usr/src/man/man3proc/Psignal.3proc new file mode 100644 index 0000000000..1930c1583e --- /dev/null +++ b/usr/src/man/man3proc/Psignal.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSIGNAL 3PROC +.Os +.Sh NAME +.Nm Psignal +.Nd set signal tracing action +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psignal +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "int stop" +.Fc +.Sh DESCRIPTION +The +.Fn Psignal +function sets the signal tracing flag for the process handle +.Fa P . +If +.Fa stop +is +.Sy non-zero +it causes the process handle to stop threads that encounter the signal +.Fa which . +If +.Fa stop +is +.Sy zero , +then it disables tracing for the signal +.Fa which . +.Pp +The signal constants, representing valid values for +.Fa which , +can be found in +.Xr signal.h 3HEAD. +The signal +.Dv SIGKILL +may not be stopped. +.Pp +Note, only active processes may have their signal tracing flags updated. +Process handles that refer to core files, zombie processes, and files do +not have signal tracing flags. Calling this function on them is an error. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psignal +function returns the previous disposition of the signal +.Fa which . +It returns +.Sy 1 +if it was set and +.Sy 0 +if not. Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +The +.Fn Psignal +function will fail if: +.Bl -tag -width Er +.It Er EINVAL +.Fa which +is +.Dv SIGKILL +and +.Fa stop +is non-zero . +.Pp +.Fa which +is not a valid signal. +.It Er ENOENT +.Fa P +does not correspond to an active process. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr signal.h 3HEAD , +.Xr libproc 3LIB , +.Xr Psetsignal 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pstack_iter.3proc b/usr/src/man/man3proc/Pstack_iter.3proc new file mode 100644 index 0000000000..75ffdba1f3 --- /dev/null +++ b/usr/src/man/man3proc/Pstack_iter.3proc @@ -0,0 +1,124 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSTACK_ITER 3PROC +.Os +.Sh NAME +.Nm Pstack_iter +.Nd iterate process stack frames +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pstack_iter +.Fa "struct ps_prochandle *P" +.Fa "const prgregset_t regs" +.Fa "proc_stack_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Pstack_iter +function iterates over the stack frames in the process +.Fa P +starting at the point defined by +.Fa regs . +.Pp +For each valid stack frame encountered, the callback function +.Fa func +is invoked with +.Fa data +passed as argument. The full signature of +.Ft proc_stack_f +is defined in +.Xr libproc 3LIB . +With each callback, a register set, argument set, and argument count +will be provided. In that register set, only a subset of the registers +will be valid, which include the frame pointer, program counter, and on +SPARC systems, the next program counter. These registers can be accessed +with the constants +.Sy R_FP , +.Sy R_PC , +and +.Sy R_nPC +respectively. These correspond to the registers +.Em %ebp +and +.Em %eip +on i386, +.Em %rbp +and +.Em %rip +on amd64, +.Em %fp , +.Em %pc , +and +.Em %npc +on both SPARC and SPARCv9. +.Pp +Callers will receive a callback for the first stack frame indicated by +.Fa regs +and then will receive a subsequent callback for each caller of that +frame until no such frame can be found. Stack frames that logically come +after the frame indicated by +.Fa regs +will not receive callbacks. +.Pp +The compiler can either facilitate or stymie the iteration of the +stack. Programs that have been compiled in such a way as to omit the +frame pointer will result in truncated stacks. Similarly, if the initial +set of registers passed in via +.Fa regs +is invalid, then the ability to iterate the stack will be limited. +The return value of +.Fa func +controls whether or not iteration continues. If +.Fa func +returns +.Sy 0 +then iteration continues. However, if +.Fa func +returns non-zero, then iteration will halt and that value will be used +as the return value of the +.Fn Pstack_iter +function. Because +.Fn Pstack_iter +returns +.Sy -1 +on internal failure it is recommended the callback function not return +.Sy -1 +to indicate an error. Thus the caller may distinguish between the +failure of the callback function and the failure of the +.Fn Pstack_iter +function. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pstack_iter +function returns +.Sy 0. +If there was an internal error then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pstate.3proc b/usr/src/man/man3proc/Pstate.3proc new file mode 100644 index 0000000000..9ec03c0c83 --- /dev/null +++ b/usr/src/man/man3proc/Pstate.3proc @@ -0,0 +1,46 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSTATE 3PROC +.Os +.Sh NAME +.Nm Pstate +.Nd obtain process handle state +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pstate +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pstate +function returns the state of the process handle +.Fa P . +The list of states is available in the +.Sy PROCESS STATES +section in +.Xr libproc 3LIB . +.Sh RETURN VALUES +Upon successful completion, the current state is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pstatus.3proc b/usr/src/man/man3proc/Pstatus.3proc new file mode 100644 index 0000000000..6079c01b05 --- /dev/null +++ b/usr/src/man/man3proc/Pstatus.3proc @@ -0,0 +1,58 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSTATUS 3PROC +.Os +.Sh NAME +.Nm Pstatus +.Nd obtain process status structure +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "const pstatus_t *" +.Fo Pstatus +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pstatus +function returns the status information about the process handle +.Fa P . +The +.Sy pstatus_t +structure is defined in +.Xr proc 4 +and contains information about the process including its flags, the +number of threads, the size of the stack, and more. +.Pp +The returned pointer is only valid as long as the process handle +.Fa P +is valid. After a call to +.Xr Prelease 3PROC , +the returned data pointer is invalid. +.Sh RETURN VALUES +The +.Fn Pstatus +function always returns a pointer to the process's status. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Prelease 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pstopstatus.3proc b/usr/src/man/man3proc/Pstopstatus.3proc new file mode 100644 index 0000000000..12eeb3366f --- /dev/null +++ b/usr/src/man/man3proc/Pstopstatus.3proc @@ -0,0 +1,235 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSTOPSTATUS 3PROC +.Os +.Sh NAME +.Nm Pdstop , +.Nm Pstopstatus , +.Nm Pstop , +.Nm Pwait , +.Nm Ldstop +.Nm Lstop , +.Nm Lwait +.Nd process and thread stop operations +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Pdstop +.Fa "struct ps_prochandle *P" +.Fc +.Ft int +.Fo Pstopstatus +.Fa "struct ps_prochandle *P" +.Fa "long request" +.Fa "uint_t msec" +.Fc +.Ft int +.Fo Pstop +.Fa "struct ps_prochandle *P" +.Fc +.Ft int +.Fo Pwait +.Fa "struct ps_prochandle *P" +.Fc +.Ft int +.Fo Ldstop +.Fa "struct ps_lwphandle *L" +.Fc +.Ft int +.Fo Lstop +.Fa "struct ps_lwphandle *L" +.Fc +.Ft int +.Fo Lwait +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Pstopstatus +function allows the caller to stop and optionally wait for the process +handle referred to by +.Fa P +to be stopped. Stopping a process causes all of its threads to stop +execution. Where in their execution the threads will halt is not +defined. Threads may be resumed with +.Xr Psetrun 3PROC +and +.Xr prun 1 . +.Pp +The +.Fa request +argument should be one of the following symbols: +.Bl -tag -width Dv -offset indent +.It Dv PCSTOP +Stop the process; wait for completion before returning. +.It Dv PCDSTOP +Stop the process; do not wait for completion before returning. That +is, the stopping of the process is performed asynchronously in +relation to the caller. +.It Dv PCWSTOP +Do not direct the process to stop; simply wait for it to stop. +.It Dv PCNULL +Do not direct the process to stop; simply refreshes the state of the +process. +.El +.Pp +Both the +.Dv PCSTOP +and +.Dv PCWSTOP +requests allow an upper bound on the amount of time to wait for the +process to stop. The +.Fa msec +argument indicates the number of milliseconds to wait for the stop to +complete. If the value of +.Fa msec +is +.Sy 0 , +then it will wait forever. Callers should pass +.Sy 0 +for +.Fa msec +when the request is +.Dv PCDSTOP +or +.Dv PCNULL . +.Pp +When a non-zero timeout is specified, the process may or may not be +stopped upon return. The return value does not reflect the current +state of the process. For example, if the timeout expires during a +.Fa PCWSTOP +request, the return value will be +.Sy 0 +regardless of the actual state of the process. +.Pp +Only active processes may be stopped. Handles that refer to core +files, zombie processes, or files cannot be used; unless the value of +.Fa request +is set to +.Dv PCNULL . +.Pp +The +.Fn Pstop +function is is equivalent to calling the +.Fn Pstopstatus +function with the request set to +.Dv PCSTOP +and an infinite timeout. +.Pp +The +.Fn Pwait +function is is equivalent to calling the +.Fn Pstopstatus +function with the request set to +.Dv PCWSTOP +and an infinite timeout. +.Pp +The +.Fn Pdstop +function is is equivalent to calling the +.Fn Pstopstatus +function with the request set to +.Dv PCDSTOP . +.Pp +The +.Fn Ldstop , +.Fn Lstop , +and +.Fn Lwait +functions are equivalent to the +.Fn Pdstop , +.Fn Pstop , +and +.Fn Pwait +functions, respectively. Except, rather than operating on a process, +they operate on the thread handle +.Fa L . +A call to +.Fn Lstop +stops only a single thread; whereas +.Fn Pstop +stops every thread in the process. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pdstop , +.Fn Pstopstatus , +.Fn Pstop , +.Fn Pwait , +.Fn Ldstop , +.Fn Lstop , +and +.Fn Lwait +functions return +.Sy 0 . +Otherwise, +.Sy -1 +is returned and +.Dv errno +is set to indicate the error that occurred. +.Sh ERRORS +For a full list of possible errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +.Pp +The +.Fn Pdstop , +.Fn Pstopstatus , +.Fn Pstop , +.Fn Pwait , +.Fn Ldstop , +.Fn Lstop , +and +.Fn Lwait +functions will fail if: +.Bl -tag -width Er +.It Er EAGAIN +Control over the handle +.Fa P +was lost. Callers should call +.Xr Preopen 3PROC . +For more information on losing control, see +.Sy PROGRAMMING NOTES +in +.Xr proc 4 . +.It Er ENOENT +The request was not +.Dv PCNULL +and the process handle +.Fa P +does not refer to an active process, but refers to a core file, a zombie +process, or a file. +.It Er EINVAL +.Fa request +is not valid or the process is in an unknown state. +.It Er EPROTO +A fatal protocol error occurred and the process could not be stopped. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Lgrab 3PROC , +.Xr Pcreate 3PROC , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Pgrab_file 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psymbol_iter.3proc b/usr/src/man/man3proc/Psymbol_iter.3proc new file mode 100644 index 0000000000..37b14ce822 --- /dev/null +++ b/usr/src/man/man3proc/Psymbol_iter.3proc @@ -0,0 +1,270 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSYMBOL_ITER 3PROC +.Os +.Sh NAME +.Nm Psymbol_iter , +.Nm Psymbol_iter_by_addr , +.Nm Psymbol_iter_by_lmid , +.Nm Psymbol_iter_by_name , +.Nm Pxsymbol_iter +.Nd iterate symbols in a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psymbol_iter +.Fa "struct ps_prochandle *P" +.Fa "const char *object_name" +.Fa "int which" +.Fa "int mask" +.Fa "proc_sym_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Psymbol_iter_by_addr +.Fa "struct ps_prochandle *P" +.Fa "const char *object_name" +.Fa "int which" +.Fa "int mask" +.Fa "proc_sym_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Psymbol_iter_by_lmid +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *object_name" +.Fa "int which" +.Fa "int mask" +.Fa "proc_sym_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Psymbol_iter_by_name +.Fa "struct ps_prochandle *P" +.Fa "const char *object_name" +.Fa "int which" +.Fa "int mask" +.Fa "proc_sym_f *func" +.Fa "void *data" +.Fc +.Ft int +.Fo Pxsymbol_iter +.Fa "struct ps_prochandle *P" +.Fa "Lmid_t lmid" +.Fa "const char *object_name" +.Fa "int which" +.Fa "int mask" +.Fa "proc_xsym_f *func" +.Fa "void *data" +.Fc +.Sh DESCRIPTION +The +.Fn Psymbol_iter , +.Fn Psymbol_iter_by_addr , +.Fn Psymbol_iter_by_lmid , +.Fn Psymbol_iter_by_name , +and +.Fn Pxsymbol_iter +functions are used to iterate over the symbols present in the process +referred to by the handle +.Fa P . +For each symbol found, the callback function +.Fa func +will be called once and the argument +.Fa data +will be passed to it along with an ELF symbol entry in the form of the +.Sy GElf_Sym +along with the name of the symbol, if known. +In the case of the +.Fn Pxsymbol_iter +function an additional +.Sy prsyminfo_t +argument will be provided to the callback. The definitions of +.Sy proc_sym_f , +.Sy proc_xsym_f , +and +.Sy prsyminfo_t +are found in +.Xr libproc 3LIB . +.Pp +The +.Fa object_name +argument names the object that is a part of the controlled process which +will be searched for symbols. Only one object may be searched at any +given time. Valid object names may be obtained through the +.Xr Pobjname 3PROC +and +.Xr Pobject_iter 3PROC +functions, among others. The system also has two special object names +that may be passed in to refer to the objects of the executable file and +for ld.so.1. The symbol +.Dv PR_OBJ_EXEC +refers to the executables object and the symbol +.Dv PR_OBJ_LDSO +refers to the object ld.so.1. +.Pp +The +.Fa which +argument controls which of two possible symbol tables will be searched. +If the argument is +.Dv PR_SYMTAB +then the ELF symbol table will be searched. Otherwise, if it is +.Dv PR_DYNSYM +then the symbol table associated with the dynamic section will be +searched instead. If any other value is specified for +.Fa which , +then an error will be returned. +.Pp +The +.Fa mask +argument controls which symbols will be included. The +.Fa mask +argument allows for control over both the symbol's binding and the +symbol's type. These flags logically correspond to the various ELF +symbol bindings and types. The following values may be passed as a +bitwise-inclusive-OR into the +.Fa flags +argument: +.Bl -tag -width Dv -offset indent +.It Dv BIND_LOCAL +The symbol is a local symbol. Local symbols are not visible outside of +their object file. +.It Dv BIND_GLOBAL +The symbol is a global symbol. Global symbols are visible outside of +their object file and may be referred to by other ELF objects. +.It Dv BIND_WEAK +The symbol is a weak symbol. Weak symbols are visible outside of their +object file, but another definition of the symbol may be used instead. +.It Dv BIND_ANY +This is a combination of +.Dv BIND_LOCAL , +.Dv BIND_GLOBAL , +and +.Dv BIND_WEAK . +Every symbol's binding will match this value. +.It Dv TYPE_NOTYPE +The symbol's type is not specified. +.It Dv TYPE_OBJECT +The symbol refers to a data object. For example, variables. +.It Dv TYPE_FUNC +The symbol refers to a function. +.It Dv TYPE_SECTION +The symbol refers to an ELF section. +.It Dv TYPE_FILE +The symbol refers to the name of a source file associated with an object +file. +.It Dv TYPE_ANY +This is a combination of +.Dv TYPE_NOTYPE , +.Dv TYPE_OBJECT , +.Dv TYPE_FUNC , +.Dv TYPE_SECTION , +and +.Dv TYPE_FILE . +Every symbol's type will match this value. +.El +.Pp +To obtain all of the symbols in an object, the caller would pass the +expression +.Dv BIND_ANY | +.Dv TYPE_ANY +in as the value of +.Fa mask. +.Pp +The +.Fn Psymbol_iter_by_lmid +and +.Fn Pxsymbol_iter +functions allow for a link-map identifier to be specified in the +.Fa lmid +argument. This will restrict the search for the object specified in +.Fa object_name +to the specified link-map. There are three special link-map identifiers +that may be passed in. The symbol +.Dv PR_LMID_EVERY +indicates that every link-map should be searched. The symbol +.Dv LM_ID_BASE +indicates that the base link-map, the one that is used for the +executable should be searched. Finally, the symbol +.Dv LM_ID_LDSO +refers to the link-map that is used by the run-time link editor, +ld.so.1. The functions which do not allow a link-map identifier to be +specified always search every link-map. +.Pp +By default, symbols are iterated based on the order of the symbol +table being searched. However, it is also possible to iterate based on +the name of the symbol and based on the address of the symbol. To +iterate by name use the +.Fn Psymbol_iter_by_name +function. To iterate by address use the +.Fn Psymbol_iter_by_addr +function. The +.Fn Psymbol_iter , +.Fn Psymbol_iter_by_lmid , +and +.Fn Pxsymbol_iter +functions all sort based on the order of the symbol table. +.Pp +The return value of the callback function +.Fa func +determines whether or not iteration continues. If +.Fa func +returns +.Sy 0, +then iteration will continue. However, if +.Fa func +returns non-zero, then iteration will halt and that value will be used +as the return value of the +.Fn Psymbol_iter , +.Fn Psymbol_iter_by_addr , +.Fn Psymbol_iter_by_lmid , +.Fn Psymbol_iter_by_name , +and +.Fn Pxsymbol_iter +functions. Because these functions return +.Sy -1 +on internal failure, it is recommended that the callback function not return +.Sy -1 +to indicate an error so that the caller may distinguish between the +failure of the callback function and the failure of these functions. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psymbol_iter , +.Fn Psymbol_iter_by_addr , +.Fn Psymbol_iter_by_lmid , +.Fn Psymbol_iter_by_name , +and +.Fn Pxsymbol_iter +functions return +.Sy 0 . +If there was an internal error then +.Sy -1 +is returned. Otherwise, if the callback function +.Fa func +returns non-zero, then its return value will be returned instead. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr elf 3ELF , +.Xr gelf 3ELF , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psync.3proc b/usr/src/man/man3proc/Psync.3proc new file mode 100644 index 0000000000..48c7ad5f96 --- /dev/null +++ b/usr/src/man/man3proc/Psync.3proc @@ -0,0 +1,79 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSYNC 3PROC +.Os +.Sh NAME +.Nm Psync , +.Nm Lsync +.Nd synchronize cached tracing flags and modifications +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Psync +.Fa "struct ps_prochandle *P" +.Fc +.Ft void +.Fo Lsync +.Fa "struct ps_lwphandle *L" +.Fc +.Sh DESCRIPTION +The +.Fn Psync +function synchronizes modifications to the process handle +.Fa P +back to the underlying active process. The +.Fn Psync +function ensures that any outstanding process holds, register +modifications, signal injections, and modifications to the various fault +and system call tracing flags are taken care of. +.Pp +Normally this function is not required as other library routines take +care of synchronizing this state out to the process when it is required. +If the underlying /proc file system routines are used outside of the +library, calling this function may be required. +.Pp +The +.Fn Psync +function is only meaningful for active processes. It will do nothing on +process handles that refer to core files, zombie processes, and ELF +objects. +.Pp +The +.Fn Lsync +function is equivalent to the +.Fn Psync +function, except rather than operating on the entire process and its +representative thread, it instead operates on the thread handle +.Fa L . +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pfault 3PROC , +.Xr Pputareg 3PROC , +.Xr Psetfault 3PROC , +.Xr Psetsignal 3PROC , +.Xr Psetsysentry 3PROC , +.Xr Psetsysexit 3PROC , +.Xr Psignal 3PROC , +.Xr Psysentry 3PROC , +.Xr Psysexit 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Psysentry.3proc b/usr/src/man/man3proc/Psysentry.3proc new file mode 100644 index 0000000000..1647b00a83 --- /dev/null +++ b/usr/src/man/man3proc/Psysentry.3proc @@ -0,0 +1,124 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PSYSENTRY 3PROC +.Os +.Sh NAME +.Nm Psysentry , +.Nm Psysexit +.Nd set system call entry and exit actions +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Psysentry +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "int stop" +.Fc +.Ft int +.Fo Psysexit +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "int stop" +.Fc +.Sh DESCRIPTION +The +.Fn Psetentry +and +.Fn Psetexit +functions controls what actions the process handle +.Fa P +should take upon executing a system call. +.Pp +The system allows a process to be stopped on both entry and exit of a +system call. For information on the state of the process when it is +stopped due to system call tracing, see the +.Sy PCSENTRY +and +.Sy PCSEXIT +sections of +.Xr proc 4 . +.Pp +The value of the +.Fa stop +parameter controls whether or not the system call listed in +.Fa which +causes the process to stop. A value of non-zero indicates the process +should stop; a value of 0 indicates it should not. +.Pp +The value of +.Fa which +indicates which system call the change applies to. A value of 0 +applies to all system calls. Note, the system does not supply a stable +mapping from system call names to identifiers. +.Pp +These functions only apply to actively running processes. They do not +function on handles that refer to core files, zombie processes, or ELF +objects. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Psetentry +and +.Fn Psetexit +functions return the previous disposition of the system call -- +.Sy 0 +if it was not set to stop and +.Sy 1 +if it was -- +and the system call state is updated. Otherwise, +.Sy -1 +is returned, +.Dv errno +is updated with the error that occurred, and the system call state is +not updated. +.Sh ERRORS +The +.Fn Psysentry +and +.Fn Psysexit +functions will fail if: +.Bl -tag -width Er +.It Er EINVAL +The value of +.Fa which +is invalid, e.g. it is less than zero or greater than the largest defined +system call. +.It Er ENOENT +The handle +.Fa P +refers to a process that is a zombie, a core file, or an ELF object. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Pp +Note, while the +.Fn Psysentry +and +.Fn Psysexit +functions are uncommitted, the mapping of system calls to system call +numbers is +.Sy Not-an-Interface +and may change at any time. +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Psysentry 3PROC , +.Xr Psysexit 3PROC , +.Xr proc 4 , +.Xr attributes 5 diff --git a/usr/src/man/man3proc/Puname.3proc b/usr/src/man/man3proc/Puname.3proc new file mode 100644 index 0000000000..ba0779fdd4 --- /dev/null +++ b/usr/src/man/man3proc/Puname.3proc @@ -0,0 +1,84 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PUNAME 3PROC +.Os +.Sh NAME +.Nm Puname +.Nd get uname information from a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo Puname +.Fa "struct ps_prochandle *P" +.Fa "struct utsname *u" +.Fc +.Sh DESCRIPTION +The +.Fn Puname +function copies the operating system information from the process +handle +.Fa P +into +.Fa u . +.Pp +For an active process or zombie process, this is the same information +obtained from +.Xr uname 2 . +For core files, if available, it is the system information at the time +the core was dumped. +.Pp +Handles that correspond to ELF objects do not contain uname +information. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Puname +function returns +.Sy 0 +and updates the information at +.Fa u . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +The +.Fn Puname +function will fail if: +.Bl -tag -width Er +.It Er ENODATA +.Fa P +is a handle that corresponds to an ELF object or +.Fa P +is a handle that corresponds to a core file and that information is not +available in the core file. +.It Er EFAULT +.Fa P +is a handle that corresponds to an active process and +.Fa u +is a bad address. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr uname 1 , +.Xr uname 2 , +.Xr libproc 3LIB diff --git a/usr/src/man/man3proc/Pupdate_maps.3proc b/usr/src/man/man3proc/Pupdate_maps.3proc new file mode 100644 index 0000000000..bb5dedfb30 --- /dev/null +++ b/usr/src/man/man3proc/Pupdate_maps.3proc @@ -0,0 +1,54 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PUPDATE_MAPS 3PROC +.Os +.Sh NAME +.Nm Pupdate_maps +.Nd update address space mappings +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Pupdate_maps +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pupdate_maps +function is used to verify that all of the cached mappings in the +process +.Fa P +are still valid and update the cached data with any new information. +This is generally called in response to activity by the run-time +link-editor. In general, the +.Sy libproc +library takes care of managing the need to call this function; however, +debuggers, introspection tools, and others that are interposing on rtld +activity or other actions, may need to call this function. +Note that the +.Fn Pupdate_maps +function is only meaningful for active processes. It will do nothing on +process handles that refer to core files, zombie processes, and ELF +objects. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pupdate_syms 3PROC diff --git a/usr/src/man/man3proc/Pupdate_syms.3proc b/usr/src/man/man3proc/Pupdate_syms.3proc new file mode 100644 index 0000000000..f2305cebd1 --- /dev/null +++ b/usr/src/man/man3proc/Pupdate_syms.3proc @@ -0,0 +1,56 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PUPDATE_SYMS 3PROC +.Os +.Sh NAME +.Nm Pupdate_syms +.Nd update cached symbol tables +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo Pupdate_syms +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn Pupdate_syms +function is used to update all of the cached symbol tables in the +process handle +.Fa P : +updating, invalidating, and caching new symbol tables as appropriate for +functions such as +.Xr Psymbol_iter 3PROC . +This is generally called in response to activity by the run-time +link-editor. In general, the +.Sy libproc +library takes care of managing the need to call this function; +however, debuggers, introspection tools, and others that are +interposing on rtld activity may need to call this function. Note that +the +.Fn Pupdate_syms +function is only meaningful for active processes. It will do nothing on +process handles that refer to core files, zombie processes, and ELF +objects. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pupdate_maps 3PROC diff --git a/usr/src/man/man3proc/Pwrite.3proc b/usr/src/man/man3proc/Pwrite.3proc new file mode 100644 index 0000000000..32ac66b57c --- /dev/null +++ b/usr/src/man/man3proc/Pwrite.3proc @@ -0,0 +1,101 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PWRITE 3PROC +.Os +.Sh NAME +.Nm Pwrite +.Nd write data to the address space of a process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft ssize_t +.Fo Pwrite +.Fa "struct ps_prochandle *P" +.Fa "const void *buf" +.Fa "size_t nbyte" +.Fa "uintptr_t address" +.Fc +.Sh DESCRIPTION +The +.Fn Pwrite +function writes data from +.Fa buf +to the the process handle +.Fa P +starting at the address +.Fa address . +It writes at most +.Fa nbyte +of data. The +.Fn Pwrite +function is logically analogous to the +.Xr pwrite 2 +function. +.Pp +For live processes, this function is equivalent to writing to the +/proc file system +.Sy as +file for the process. For core files, it writes to the logical address +space of what was once the process and not the corresponding offset in +the on-disk file. ELF objects grabbed through +.Xr Pgrab_file 3PROC +do not support being written to. +.Pp +The +.Fn Pwrite +function cannot be used to +.Em extend +the size of a mapping; writing to an unmapped region generates an +error. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pwrite +function returns the number of bytes successfully written to +.Fa P . +This number is never greater than +.Fa nbyte . +Otherwise, it returns +.Sy -1 +and +.Sy errno +is set to indicate an error. For the full list of errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 +and +the +.Sy ERRORS +section in +.Xr pwrite 2 . +.Pp +In addition, the +.Fn Pwrite +function will fail if: +.Bl -tag -width Er +.It Er EIO +.Fa P +refers to an ELF object and not a core file or active process. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr pwrite 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pxecbkpt.3proc b/usr/src/man/man3proc/Pxecbkpt.3proc new file mode 100644 index 0000000000..87640ff20d --- /dev/null +++ b/usr/src/man/man3proc/Pxecbkpt.3proc @@ -0,0 +1,126 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PXECBKPT 3PROC +.Os +.Sh NAME +.Nm Pxecbkpt , +.Nm Pxecwapt , +.Nm Lxecbkpt , +.Nm Lxecwapt +.Nd step over a breakpoint or watchpoint +.Sh SYNOPSIS +.Ft int +.Fo Pxecbkpt +.Fa "struct ps_prochandle *P" +.Fa "ulong_t saved" +.Fc +.Ft int +.Fo Pxecwapt +.Fa "struct ps_prochandle *P" +.Fa "ulong_t saved" +.Fc +.Ft int +.Fo Lxecbkpt +.Fa "struct ps_lwphandle *L" +.Fa "ulong_t saved" +.Fc +.Ft int +.Fo Lxecwapt +.Fa "struct ps_lwphandle *L" +.Fa "ulong_t saved" +.Fc +.Sh DESCRIPTION +The +.Fn Pxecbkpt +and +.Fn Pxecwapt +functions step over a breakpoint or watchpoint respectively in the +corresponding process handle +.Fa P . +The functions execute the original instruction that was at the current +program counter, provided by +.Fa saved , +and then leave the process stopped at the next instruction. +.Pp +The process must be stopped at the time that the +.Fn Pxecbkpt +or +.Fn Pxecwapt +functions are called. +.Pp +The +.Fn Lxecbkpt +and +.Fn Lxecwapt +functions are identical to +.Fn Pxecbkpt +and +.Fn Pxecwapt , +respectively; except rather than operating on the process as a +whole, they operate on the thread handle +.Fa L . +These functions only require that the thread represented by +.Fa L +be stopped and not the entire process. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pxecbkpt , +.Fn Pxecwapt , +.Fn Lxecbkpt , +and +.Fn Lxecwapt +functions return +.Sy 0 +having executed the original instruction at +.Fa saved . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +For a full list of errors see the +.Sy DIAGNOSTICS +section in +.Xr proc 4 . +The +.Fn Pxecbkpt , +.Fn Pxecwapt , +.Fn Lxecbkpt , +and +.Fn Lxecwapt +functions will fail if: +.Bl -tag -width Er +.It Er EBUSY +Either +.Fa P +or +.Fa L +is not stopped. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pdelbkpt 3PROC , +.Xr Pdelwapt 3PROC , +.Xr Psetbkpt 3PROC , +.Xr Psetwapt 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/Pzonename.3proc b/usr/src/man/man3proc/Pzonename.3proc new file mode 100644 index 0000000000..3b2cb8e64e --- /dev/null +++ b/usr/src/man/man3proc/Pzonename.3proc @@ -0,0 +1,136 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PZONENAME 3PROC +.Os +.Sh NAME +.Nm Pzonename , +.Nm Pzoneroot , +.Nm Pzonepath +.Nd get zone name, root, and full object path +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft char * +.Fo Pzonename +.Fa "struct ps_prochandle *P" +.Fa "char *buf" +.Fa "size_t nbyte" +.Fc +.Ft char * +.Fo Pzoneroot +.Fa "struct ps_prochandle *P" +.Fa "char *buf" +.Fa "size_t nbyte" +.Fc +.Ft char * +.Fo Pzonepath +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "char *buf" +.Fa "size_t nbyte" +.Fc +.Sh DESCRIPTION +The +.Fn Pzonename +function attempts to determine the name of the zone for the process +handle +.Fa P . +If found, up to +.Fa nbytes , +including a null terminator, will be written into +.Fa buf . +.Pp +The +.Fn Pzoneroot +function attempts to determine the root of the zone corresponding to the +process handle +.Fa P . +If found, up to +.Fa nbytes , +including a null terminator, will be written into +.Fa buf . +If the root cannot be found, for example a core file that did not +originate on the current system, then the empty string will be written +into +.Fa buf . +.Pp +The +.Fn Pzonepath +function attempts to derive the full path of the object +.Fa path +in a zone relative to the root associated with the current process +handle +.Fa P . +If found, up to +.Fa nbytes , +including a null terminator, will be written into +.Fa buf . +It is legal to use the same buffer for both +.Fa path +and +.Fa buf ; +it will not be updated unless the function completes successfully. +.Sh RETURN VALUES +Upon successful completion, the +.Fn Pzonename , +.Fn Pzoneroot , +and +.Fn Pzonepath +functions return +.Sy buf . +Otherwise, if an error occurred, +.Dv NULL +is returned and +.Sy errno +is set. +.Sh ERRORS +The +.Fn Pzonename +and +.Fn Pzoneroot +functions will fail if: +.Bl -tag -width Er +.It Er ENODATA +.Fa P +refers to a core file and zone information was not available in the core +dump or +.Fa P +refers to an ELF object grabbed through +.Xr Pgrab_file . +.It Er EFAULT +.Fa P +refers to an active process and +.Fa buf +is invalid. +.El +.Pp +The +.Fn Pzoneroot +function will fail if: +.Bl -tag -width Er +.It Er ENOMEM +Insufficient memory was available on the system. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getzoneidbyname 3C , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_access.3proc b/usr/src/man/man3proc/pr_access.3proc new file mode 100644 index 0000000000..cc949a7e01 --- /dev/null +++ b/usr/src/man/man3proc/pr_access.3proc @@ -0,0 +1,101 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_ACCESS 3PROC +.Os +.Sh NAME +.Nm pr_access +.Nd inject access system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_access +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "int amode" +.Fc +.Sh DESCRIPTION +The +.Fn pr_access +function injects the +.Xr access 2 +system call into the target process +.Fa P +by means of the agent lwp. If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr access 2 +on the currently running process. +.Pp +The arguments +.Fa path +and +.Fa amode +have the same meaning as in +.Xr access 2 . +See +.Xr access 2 +for the full description and purpose of the +.Sy access +system call and its arguments. +.Pp +The +.Fn pr_access +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_access +function's return value is that described in +.Xr access 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr access 2 . +.Pp +The +.Fn pr_access +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr access 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_close.3proc b/usr/src/man/man3proc/pr_close.3proc new file mode 100644 index 0000000000..af4185fb8d --- /dev/null +++ b/usr/src/man/man3proc/pr_close.3proc @@ -0,0 +1,99 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_CLOSE 3PROC +.Os +.Sh NAME +.Nm pr_close +.Nd inject close system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_close +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fc +.Sh DESCRIPTION +The +.Fn pr_close +function injects the +.Xr close 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr close 2 +on the currently running process. +.Pp +The argument +.Fa fd +has the same meaning as in +.Xr close 2 . +See +.Xr close 2 +for the full description and purpose of the +.Sy close +system call and its arguments. +.Pp +The +.Fn pr_close +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_close +function's return value is that described in +.Xr close 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr close 2 . +.Pp +The +.Fn pr_close +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr close 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_creat.3proc b/usr/src/man/man3proc/pr_creat.3proc new file mode 100644 index 0000000000..9434508002 --- /dev/null +++ b/usr/src/man/man3proc/pr_creat.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_CREAT 3PROC +.Os +.Sh NAME +.Nm pr_creat +.Nd inject creat system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_creat +.Fa "struct ps_prochandle *P" +.Fa "const char *filename" +.Fa "mode_t mode" +.Fc +.Sh DESCRIPTION +The +.Fn pr_creat +function injects the +.Xr creat 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr creat 2 +on the currently running process. +.Pp +The arguments +.Fa filename +and +.Fa mode +have the same meaning as in +.Xr creat 2 . +See +.Xr creat 2 +for the full description and purpose of the +.Sy creat +system call and its arguments. +.Pp +The +.Fn pr_creat +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_creat +function's return value is that described in +.Xr creat 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr creat 2 . +.Pp +The +.Fn pr_creat +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr creat 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_door_info.3proc b/usr/src/man/man3proc/pr_door_info.3proc new file mode 100644 index 0000000000..d1de2ea0c2 --- /dev/null +++ b/usr/src/man/man3proc/pr_door_info.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_DOOR_INFO 3PROC +.Os +.Sh NAME +.Nm pr_door_info +.Nd inject door_info library call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_door_info +.Fa "struct ps_prochandle *P" +.Fa "int did" +.Fa "struct door_info *info" +.Fc +.Sh DESCRIPTION +The +.Fn pr_door_info +function injects the +.Xr door_info 3C +library call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr door_info 3C +on the currently running process. +.Pp +The arguments +.Fa did +and +.Fa info +have the same meaning as in +.Xr door_info 3C . +See +.Xr door_info 3C +for the full description and purpose of the +.Sy door_info +library call and its arguments. +.Pp +The +.Fn pr_door_info +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support library +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_door_info +function's return value is that described in +.Xr door_info 3C . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the library call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr door_info 3C . +.Pp +The +.Fn pr_door_info +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +library call in the process handle +.Fa P +or the process handle +.Fa P +does not support library call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr door_info 3C , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_exit.3proc b/usr/src/man/man3proc/pr_exit.3proc new file mode 100644 index 0000000000..1d156fef5d --- /dev/null +++ b/usr/src/man/man3proc/pr_exit.3proc @@ -0,0 +1,107 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_CREAT 3PROC +.Os +.Sh NAME +.Nm pr_exit +.Nd inject exit system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_exit +.Fa "struct ps_prochandle *P" +.Fa "int status" +.Fc +.Sh DESCRIPTION +The +.Fn pr_exit +function injects the +.Xr exit 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr exit 2 +on the currently running process. +.Pp +The argument +.Fa status +has the same meaning as in +.Xr exit 2 . +See +.Xr exit 2 +for the full description and purpose of the +.Sy exit +system call and its arguments. +.Pp +The +.Fn pr_exit +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_exit +function's return value is that described in +.Xr exit 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Pp +If the +.Fn pr_exit +function is called with the value of +.Fa P +set to +.Dv NULL , +then the function will not return. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr exit 2 . +.Pp +The +.Fn pr_exit +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr exit 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_fcntl.3proc b/usr/src/man/man3proc/pr_fcntl.3proc new file mode 100644 index 0000000000..e6bd11db46 --- /dev/null +++ b/usr/src/man/man3proc/pr_fcntl.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_FCNTL 3PROC +.Os +.Sh NAME +.Nm pr_fcntl +.Nd inject fcntl system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_fcntl +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "int cmd" +.Fa "void *argp" +.Fc +.Sh DESCRIPTION +The +.Fn pr_fcntl +function injects the +.Xr fcntl 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr fcntl 2 +on the currently running process. +.Pp +The arguments +.Fa fd , +.Fa cmd , +and +.Fa argp +have the same meaning as in +.Xr fcntl 2 . +See +.Xr fcntl 2 +for the full description and purpose of the +.Sy fcntl +system call and its arguments. +.Pp +The +.Fn pr_fcntl +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_fcntl +function's return value is that described in +.Xr fcntl 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr fcntl 2 . +.Pp +The +.Fn pr_fcntl +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr fcntl 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_fstatvfs.3proc b/usr/src/man/man3proc/pr_fstatvfs.3proc new file mode 100644 index 0000000000..b08d834c6c --- /dev/null +++ b/usr/src/man/man3proc/pr_fstatvfs.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_FSTATVFS 3PROC +.Os +.Sh NAME +.Nm pr_fstatvfs +.Nd inject fstatvfs system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_fstatvfs +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "statvfs_t *buf" +.Fc +.Sh DESCRIPTION +The +.Fn pr_fstatvfs +function injects the +.Xr fstatvfs 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr fstatvfs 2 +on the currently running process. +.Pp +The arguments +.Fa fd +and +.Fa buf +have the same meaning as in +.Xr fstatvfs 2 . +See +.Xr fstatvfs 2 +for the full description and purpose of the +.Sy fstatvfs +system call and its arguments. +.Pp +The +.Fn pr_fstatvfs +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_fstatvfs +function's return value is that described in +.Xr fstatvfs 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr fstatvfs 2 . +.Pp +The +.Fn pr_fstatvfs +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr fstatvfs 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getitimer.3proc b/usr/src/man/man3proc/pr_getitimer.3proc new file mode 100644 index 0000000000..0f3c5d32d0 --- /dev/null +++ b/usr/src/man/man3proc/pr_getitimer.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETITIMER 3PROC +.Os +.Sh NAME +.Nm pr_getitimer +.Nd inject getitimer system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getitimer +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "struct itimerval *itv" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getitimer +function injects the +.Xr getitimer 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this will be equivalent to calling +.Xr getitimer 2 +on the currently running process. +.Pp +The arguments +.Fa which +and +.Fa itv +have the same meaning as in +.Xr getitimer 2 . +See +.Xr getitimer 2 +for the full description and purpose of the +.Sy getitimer +system call and its arguments. +.Pp +The +.Fn pr_getitimer +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getitimer +function's return value is that described in +.Xr getitimer 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getitimer 2 . +.Pp +The +.Fn pr_getitimer +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getitimer 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getpeername.3proc b/usr/src/man/man3proc/pr_getpeername.3proc new file mode 100644 index 0000000000..bf0306c068 --- /dev/null +++ b/usr/src/man/man3proc/pr_getpeername.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETPEERNAME 3PROC +.Os +.Sh NAME +.Nm pr_getpeername +.Nd inject getpeername library call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getpeername +.Fa "struct ps_prochandle *P" +.Fa "int sock" +.Fa "struct sockaddr *name" +.Fa "socklen_t *namelen" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getpeername +function injects the +.Xr getpeername 3SOCKET +library call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr getpeername 3SOCKET +on the currently running process. +.Pp +The arguments +.Fa sock , +.Fa name , +and +.Fa namelen +have the same meaning as in +.Xr getpeername 3SOCKET . +See +.Xr getpeername 3SOCKET +for the full description and purpose of the +.Sy getpeername +library call and its arguments. +.Pp +The +.Fn pr_getpeername +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support library +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getpeername +function's return value is that described in +.Xr getpeername 3SOCKET . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the library call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getpeername 3SOCKET . +.Pp +The +.Fn pr_getpeername +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +library call in the process handle +.Fa P +or the process handle +.Fa P +does not support library call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr getpeername 3SOCKET , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getpeerucred.3proc b/usr/src/man/man3proc/pr_getpeerucred.3proc new file mode 100644 index 0000000000..03d8023287 --- /dev/null +++ b/usr/src/man/man3proc/pr_getpeerucred.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETPEERUCRED 3PROC +.Os +.Sh NAME +.Nm pr_getpeerucred +.Nd inject getpeerucred library call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getpeerucred +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "ucred_t **ucp" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getpeerucred +function injects the +.Xr getpeerucred 3C +library call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr getpeerucred 3C +on the currently running process. +.Pp +The arguments +.Fa fd +and +.Fa *ucp +have the same meaning as in +.Xr getpeerucred 3C . +See +.Xr getpeerucred 3C +for the full description and purpose of the +.Sy getpeerucred +library call and its arguments. +.Pp +The +.Fn pr_getpeerucred +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support library +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getpeerucred +function's return value is that described in +.Xr getpeerucred 3C . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the library call could not be injected. +.Sh ERRORS +For a full list of possible errors see the +.Sy ERRORS +section in +.Xr getpeerucred 3C . +.Pp +The +.Fn pr_getpeerucred +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +library call in the process handle +.Fa P +or the process handle +.Fa P +does not support library call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getpeerucred 3C , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getprojid.3proc b/usr/src/man/man3proc/pr_getprojid.3proc new file mode 100644 index 0000000000..bc209e4eb2 --- /dev/null +++ b/usr/src/man/man3proc/pr_getprojid.3proc @@ -0,0 +1,88 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETPROJID 3PROC +.Os +.Sh NAME +.Nm pr_getprojid +.Nd inject getprojid system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft projid_t +.Fo pr_getprojid +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getprojid +function injects the +.Xr getprojid 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr getprojid 2 +on the currently running process. +.Pp +The +.Fn pr_getprojid +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getprojid +function's return value is that described in +.Xr getprojid 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getprojid 2 . +.Pp +The +.Fn pr_getprojid +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getprojid 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getrctl.3proc b/usr/src/man/man3proc/pr_getrctl.3proc new file mode 100644 index 0000000000..7f46a0ad48 --- /dev/null +++ b/usr/src/man/man3proc/pr_getrctl.3proc @@ -0,0 +1,106 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETRCTL 3PROC +.Os +.Sh NAME +.Nm pr_getrctl +.Nd inject getrctl system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getrctl +.Fa "struct ps_prochandle *P" +.Fa "const char *rname" +.Fa "rctlblk_t *old_blk" +.Fa "rctlblk_t *new_blk" +.Fa "int rflag" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getrctl +function injects the +.Xr getrctl 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is +.Dv NULL +then this is equivalent to calling +.Xr getrctl 2 +on the currently running process. +.Pp +The arguments +.Fa rname , +.Fa old_blk , +.Fa new_blk , +and +.Fa rflag +have the same meaning as in +.Xr getrctl 2 . +See +.Xr getrctl 2 +for the full description and purpose of the +.Sy getrctl +system call and its arguments. +.Pp +The +.Fn pr_getrctl +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getrctl +function's return value is that described in +.Xr getrctl 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getrctl 2 . +.Pp +The +.Fn pr_getrctl +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getrctl 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getrlimit.3proc b/usr/src/man/man3proc/pr_getrlimit.3proc new file mode 100644 index 0000000000..c1f17bfa8a --- /dev/null +++ b/usr/src/man/man3proc/pr_getrlimit.3proc @@ -0,0 +1,120 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETRLIMIT 3PROC +.Os +.Sh NAME +.Nm pr_getrlimit , +.Nm pr_getrlimit64 +.Nd inject getrlimit system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getrlimit +.Fa "struct ps_prochandle *P" +.Fa "int resource" +.Fa "struct rlimit *rlp" +.Fc +.Ft int +.Fo pr_getrlimit64 +.Fa "struct ps_prochandle *P" +.Fa "int resource" +.Fa "struct rlimit64 *rlp" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getrlimit +function injects the +.Xr getrlimit 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr getrlimit 2 +on the currently running process. +.Pp +The arguments +.Fa resource +and +.Fa rlp +have the same meaning as in +.Xr getrlimit 2 . +See +.Xr getrlimit 2 +for the full description and purpose of the +.Sy getrlimit +system call and its arguments. +.Pp +The +.Fn pr_getrlimit +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Pp +The +.Fn pr_getrlimit64 +function is equivalent to +.Fn pr_getrlimit ; +however, rather than having the rlimit information be subject to the +data model of the target process, they always provide 64-bit rlimit +information. See +.Xr lf64 5 +for more information. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getrlimit +function's return value is that described in +.Xr getrlimit 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getrlimit 2 . +.Pp +The +.Fn pr_getrlimit +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getrlimit 2 , +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr lf64 5 diff --git a/usr/src/man/man3proc/pr_getsockname.3proc b/usr/src/man/man3proc/pr_getsockname.3proc new file mode 100644 index 0000000000..125378d2ab --- /dev/null +++ b/usr/src/man/man3proc/pr_getsockname.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETSOCKNAME 3PROC +.Os +.Sh NAME +.Nm pr_getsockname +.Nd inject getsockname library call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getsockname +.Fa "struct ps_prochandle *P" +.Fa "int sock" +.Fa "struct sockaddr *name" +.Fa "socklen_t *namelen" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getsockname +function injects the +.Xr getsockname 3SOCKET +library call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr getsockname 3SOCKET +on the currently running process. +.Pp +The arguments +.Fa sock , +.Fa name , +and +.Fa namelen +have the same meaning as in +.Xr getsockname 3SOCKET . +See +.Xr getsockname 3SOCKET +for the full description and purpose of the +.Sy getsockname +library call and its arguments. +.Pp +The +.Fn pr_getsockname +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support library +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getsockname +function's return value is that described in +.Xr getsockname 3SOCKET . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the library call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getsockname 3SOCKET . +.Pp +The +.Fn pr_getsockname +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +library call in the process handle +.Fa P +or the process handle +.Fa P +does not support library call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr getsockname 3SOCKET , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getsockopt.3proc b/usr/src/man/man3proc/pr_getsockopt.3proc new file mode 100644 index 0000000000..6edb92fe08 --- /dev/null +++ b/usr/src/man/man3proc/pr_getsockopt.3proc @@ -0,0 +1,108 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETSOCKOPT 3PROC +.Os +.Sh NAME +.Nm pr_getsockopt +.Nd inject getsockopt library call call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_getsockopt +.Fa "struct ps_prochandle *P" +.Fa "int sock" +.Fa "int level" +.Fa "int optname" +.Fa "void *optval" +.Fa "int *optlen" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getsockopt +function injects the +.Xr getsockopt 3SOCKET +library call call into the target process +.Fa P +by means of the agent lwp. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr getsockopt 3SOCKET +on the currently running process. +.Pp +The arguments +.Fa sock , +.Fa level , +.Fa optname , +.Fa optval , +and +.Fa optlen +have the same meaning as in +.Xr getsockopt 3SOCKET , +see +.Xr getsockopt 3SOCKET +for the full description and purpose of the +.Sy getsockopt +system call and its arguments. +.Pp +The +.Fn pr_getsockopt +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getsockopt +function's return value is that described in +.Xr getsockopt 3SOCKET . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getsockopt 3SOCKET . +.Pp +The +.Fn pr_getsockopt +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent lwp and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr getsockopt 3SOCKET , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_gettaskid.3proc b/usr/src/man/man3proc/pr_gettaskid.3proc new file mode 100644 index 0000000000..0c52d800d4 --- /dev/null +++ b/usr/src/man/man3proc/pr_gettaskid.3proc @@ -0,0 +1,88 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETTASKID 3PROC +.Os +.Sh NAME +.Nm pr_gettaskid +.Nd inject gettaskid system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft taskid_t +.Fo pr_gettaskid +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn pr_gettaskid +function injects the +.Xr gettaskid 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr gettaskid 2 +on the currently running process. +.Pp +The +.Fn pr_gettaskid +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_gettaskid +function's return value is that described in +.Xr gettaskid 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr gettaskid 2 . +.Pp +The +.Fn pr_gettaskid +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr gettaskid 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_getzoneid.3proc b/usr/src/man/man3proc/pr_getzoneid.3proc new file mode 100644 index 0000000000..8cd2e29c5c --- /dev/null +++ b/usr/src/man/man3proc/pr_getzoneid.3proc @@ -0,0 +1,88 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_GETZONEID 3PROC +.Os +.Sh NAME +.Nm pr_getzoneid +.Nd inject getzoneid system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft zoneid_t +.Fo pr_getzoneid +.Fa "struct ps_prochandle *P" +.Fc +.Sh DESCRIPTION +The +.Fn pr_getzoneid +function injects the +.Xr getzoneid 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr getzoneid 2 +on the currently running process. +.Pp +The +.Fn pr_getzoneid +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_getzoneid +function's return value is that described in +.Xr getzoneid 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr getzoneid 2 . +.Pp +The +.Fn pr_getzoneid +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr getzoneid 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_ioctl.3proc b/usr/src/man/man3proc/pr_ioctl.3proc new file mode 100644 index 0000000000..24b47be548 --- /dev/null +++ b/usr/src/man/man3proc/pr_ioctl.3proc @@ -0,0 +1,114 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_IOCTL 3PROC +.Os +.Sh NAME +.Nm pr_ioctl +.Nd inject ioctl system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_ioctl +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "int code" +.Fa "void *buf" +.Fa "size_t size" +.Fc +.Sh DESCRIPTION +The +.Fn pr_ioctl +function injects the +.Xr ioctl 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr ioctl 2 +on the currently running process. +.Pp +The arguments +.Fa fd , +.Fa code , +and +.Fa buf +have the same meaning as in +.Xr ioctl 2 . +See +.Xr ioctl 2 +for the full description and purpose of the +.Sy ioctl +system call and its arguments. +.Pp +Unlike the traditional +.Xr ioctl 2 +system call, the +.Fn pr_ioctl +function needs to know the maximum size of the buffer +.Fa buf +such that it can be properly injected into the address space of the +target process. +.Pp +The +.Fn pr_ioctl +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_ioctl +function's return value is that described in +.Xr ioctl 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr ioctl 2 . +.Pp +The +.Fn pr_ioctl +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr ioctl 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_link.3proc b/usr/src/man/man3proc/pr_link.3proc new file mode 100644 index 0000000000..a80012df77 --- /dev/null +++ b/usr/src/man/man3proc/pr_link.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_LINK 3PROC +.Os +.Sh NAME +.Nm pr_link +.Nd inject link system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_link +.Fa "struct ps_prochandle *P" +.Fa "const char *existing" +.Fa "const char *new" +.Fc +.Sh DESCRIPTION +The +.Fn pr_link +function injects the +.Xr link 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr link 2 +on the currently running process. +.Pp +The arguments +.Fa existing +and +.Fa new +have the same meaning as in +.Xr link 2 . +See +.Xr link 2 +for the full description and purpose of the +.Sy link +system call and its arguments. +.Pp +The +.Fn pr_link +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_link +function's return value is that described in +.Xr link 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr link 2 . +.Pp +The +.Fn pr_link +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr link 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_llseek.3proc b/usr/src/man/man3proc/pr_llseek.3proc new file mode 100644 index 0000000000..28fa432dba --- /dev/null +++ b/usr/src/man/man3proc/pr_llseek.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_LLSEEK 3PROC +.Os +.Sh NAME +.Nm pr_llseek +.Nd inject llseek system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_llseek +.Fa "struct ps_prochandle *P" +.Fa "int filedes" +.Fa "offset_t offset" +.Fa "int whence" +.Fc +.Sh DESCRIPTION +The +.Fn pr_llseek +function injects the +.Xr llseek 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr llseek 2 +on the currently running process. +.Pp +The arguments +.Fa filedes , +.Fa offset , +and +.Fa whence +have the same meaning as in +.Xr llseek 2 . +See +.Xr llseek 2 +for the full description and purpose of the +.Sy llseek +system call and its arguments. +.Pp +The +.Fn pr_llseek +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_llseek +function's return value is that described in +.Xr llseek 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr llseek 2 . +.Pp +The +.Fn pr_llseek +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr llseek 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_lseek.3proc b/usr/src/man/man3proc/pr_lseek.3proc new file mode 100644 index 0000000000..8e96274898 --- /dev/null +++ b/usr/src/man/man3proc/pr_lseek.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_LSEEK 3PROC +.Os +.Sh NAME +.Nm pr_lseek +.Nd inject lseek system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_lseek +.Fa "struct ps_prochandle *P" +.Fa "int filedes" +.Fa "off_t offset" +.Fa "int whence" +.Fc +.Sh DESCRIPTION +The +.Fn pr_lseek +function injects the +.Xr lseek 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr lseek 2 +on the currently running process. +.Pp +The arguments +.Fa filedes , +.Fa offset , +and +.Fa whence +have the same meaning as in +.Xr lseek 2 . +See +.Xr lseek 2 +for the full description and purpose of the +.Sy lseek +system call and its arguments. +.Pp +The +.Fn pr_lseek +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_lseek +function's return value is that described in +.Xr lseek 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr lseek 2 . +.Pp +The +.Fn pr_lseek +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr lseek 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_memcntl.3proc b/usr/src/man/man3proc/pr_memcntl.3proc new file mode 100644 index 0000000000..dba3f05a12 --- /dev/null +++ b/usr/src/man/man3proc/pr_memcntl.3proc @@ -0,0 +1,110 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_MEMCNTL 3PROC +.Os +.Sh NAME +.Nm pr_memcntl +.Nd inject memcntl system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_memcntl +.Fa "struct ps_prochandle *P" +.Fa "caddr_t addr" +.Fa "size_t len" +.Fa "int cmd" +.Fa "caddr_t arg" +.Fa "int attr" +.Fa "int mask" +.Fc +.Sh DESCRIPTION +The +.Fn pr_memcntl +function injects the +.Xr memcntl 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr memcntl 2 +on the currently running process. +.Pp +The arguments +.Fa addr , +.Fa len , +.Fa cmd , +.Fa arg , +.Fa attr , +and +.Fa mask +have the same meaning as in +.Xr memcntl 2 . +See +.Xr memcntl 2 +for the full description and purpose of the +.Sy memcntl +system call and its arguments. +.Pp +The +.Fn pr_memcntl +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_memcntl +function's return value is that described in +.Xr memcntl 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr memcntl 2 . +.Pp +The +.Fn pr_memcntl +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr memcntl 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_meminfo.3proc b/usr/src/man/man3proc/pr_meminfo.3proc new file mode 100644 index 0000000000..3da4983f91 --- /dev/null +++ b/usr/src/man/man3proc/pr_meminfo.3proc @@ -0,0 +1,110 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_MEMINFO 3PROC +.Os +.Sh NAME +.Nm pr_meminfo +.Nd inject meminfo system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_meminfo +.Fa "struct ps_prochandle *P" +.Fa "const uint64_t *addrs" +.Fa "int addr_count" +.Fa "const uint_t *info" +.Fa "int info_count" +.Fa "uint64_t *outdata" +.Fa "uint_t *validity" +.Fc +.Sh DESCRIPTION +The +.Fn pr_meminfo +function injects the +.Xr meminfo 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr meminfo 2 +on the currently running process. +.Pp +The arguments +.Fa addrs , +.Fa addr_count , +.Fa info , +.Fa info_count , +.Fa outdata , +and +.Fa validity +have the same meaning as in +.Xr meminfo 2 . +See +.Xr meminfo 2 +for the full description and purpose of the +.Sy meminfo +system call and its arguments. +.Pp +The +.Fn pr_meminfo +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_meminfo +function's return value is that described in +.Xr meminfo 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr meminfo 2 . +.Pp +The +.Fn pr_meminfo +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr meminfo 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_mmap.3proc b/usr/src/man/man3proc/pr_mmap.3proc new file mode 100644 index 0000000000..966979337f --- /dev/null +++ b/usr/src/man/man3proc/pr_mmap.3proc @@ -0,0 +1,110 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_MMAP 3PROC +.Os +.Sh NAME +.Nm pr_mmap +.Nd inject mmap system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_mmap +.Fa "struct ps_prochandle *P" +.Fa "void *addr" +.Fa "size_t len" +.Fa "int prot" +.Fa "int flags" +.Fa "int fd" +.Fa "off_t off" +.Fc +.Sh DESCRIPTION +The +.Fn pr_mmap +function injects the +.Xr mmap 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr mmap 2 +on the currently running process. +.Pp +The arguments +.Fa addr , +.Fa len , +.Fa prot , +.Fa flags , +.Fa fd , +and +.Fa off +have the same meaning as in +.Xr mmap 2 . +See +.Xr mmap 2 +for the full description and purpose of the +.Sy mmap +system call and its arguments. +.Pp +The +.Fn pr_mmap +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_mmap +function's return value is that described in +.Xr mmap 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr mmap 2 . +.Pp +The +.Fn pr_mmap +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr mmap 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_munmap.3proc b/usr/src/man/man3proc/pr_munmap.3proc new file mode 100644 index 0000000000..ede8fcd12c --- /dev/null +++ b/usr/src/man/man3proc/pr_munmap.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_MUNMAP 3PROC +.Os +.Sh NAME +.Nm pr_munmap +.Nd inject munmap system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_munmap +.Fa "struct ps_prochandle *P" +.Fa "void *addr" +.Fa "size_t len" +.Fc +.Sh DESCRIPTION +The +.Fn pr_munmap +function injects the +.Xr munmap 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr munmap 2 +on the currently running process. +.Pp +The arguments +.Fa addr +and +.Fa len +have the same meaning as in +.Xr munmap 2 . +See +.Xr munmap 2 +for the full description and purpose of the +.Sy munmap +system call and its arguments. +.Pp +The +.Fn pr_munmap +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_munmap +function's return value is that described in +.Xr munmap 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr munmap 2 . +.Pp +The +.Fn pr_munmap +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr munmap 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_open.3proc b/usr/src/man/man3proc/pr_open.3proc new file mode 100644 index 0000000000..d462520976 --- /dev/null +++ b/usr/src/man/man3proc/pr_open.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_OPEN 3PROC +.Os +.Sh NAME +.Nm pr_open +.Nd inject open system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_open +.Fa "struct ps_prochandle *P" +.Fa "const char *filename" +.Fa "int flags" +.Fa "mode_t mode" +.Fc +.Sh DESCRIPTION +The +.Fn pr_open +function injects the +.Xr open 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr open 2 +on the currently running process. +.Pp +The arguments +.Fa filename , +.Fa flags , +and +.Fa mode +have the same meaning as in +.Xr open 2 . +See +.Xr open 2 +for the full description and purpose of the +.Sy open +system call and its arguments. +.Pp +The +.Fn pr_open +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_open +function's return value is that described in +.Xr open 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr open 2 . +.Pp +The +.Fn pr_open +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr open 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_processor_bind.3proc b/usr/src/man/man3proc/pr_processor_bind.3proc new file mode 100644 index 0000000000..4890b051e7 --- /dev/null +++ b/usr/src/man/man3proc/pr_processor_bind.3proc @@ -0,0 +1,106 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_PROCESSOR_BIND 3PROC +.Os +.Sh NAME +.Nm pr_processor_bind +.Nd inject processor_bind system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_processor_bind +.Fa "struct ps_prochandle *P" +.Fa "idtype_t idtype" +.Fa "id_t id" +.Fa "int processorid" +.Fa "int *obind" +.Fc +.Sh DESCRIPTION +The +.Fn pr_processor_bind +function injects the +.Xr processor_bind 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr processor_bind 2 +on the currently running process. +.Pp +The arguments +.Fa idtype , +.Fa id , +.Fa processorid , +and +.Fa obind +have the same meaning as in +.Xr processor_bind 2 . +See +.Xr processor_bind 2 +for the full description and purpose of the +.Sy processor_bind +system call and its arguments. +.Pp +The +.Fn pr_processor_bind +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_processor_bind +function's return value is that described in +.Xr processor_bind 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr processor_bind 2 . +.Pp +The +.Fn pr_processor_bind +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr processor_bind 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_rename.3proc b/usr/src/man/man3proc/pr_rename.3proc new file mode 100644 index 0000000000..f7306778c5 --- /dev/null +++ b/usr/src/man/man3proc/pr_rename.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_RENAME 3PROC +.Os +.Sh NAME +.Nm pr_rename +.Nd inject rename system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_rename +.Fa "struct ps_prochandle *P" +.Fa "const char *old" +.Fa "const char *new" +.Fc +.Sh DESCRIPTION +The +.Fn pr_rename +function injects the +.Xr rename 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr rename 2 +on the currently running process. +.Pp +The arguments +.Fa old +and +.Fa new +have the same meaning as in +.Xr rename 2 . +See +.Xr rename 2 +for the full description and purpose of the +.Sy rename +system call and its arguments. +.Pp +The +.Fn pr_rename +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_rename +function's return value is that described in +.Xr rename 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr rename 2 . +.Pp +The +.Fn pr_rename +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr rename 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_setitimer.3proc b/usr/src/man/man3proc/pr_setitimer.3proc new file mode 100644 index 0000000000..8226390331 --- /dev/null +++ b/usr/src/man/man3proc/pr_setitimer.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_SETITIMER 3PROC +.Os +.Sh NAME +.Nm pr_setitimer +.Nd inject setitimer system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_setitimer +.Fa "struct ps_prochandle *P" +.Fa "int which" +.Fa "const struct itimerval *itv" +.Fa "struct interval *oitv" +.Fc +.Sh DESCRIPTION +The +.Fn pr_setitimer +function injects the +.Xr setitimer 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr setitimer 2 +on the currently running process. +.Pp +The arguments +.Fa which , +.Fa itv , +and +.Fa oitv +have the same meaning as in +.Xr setitimer 2 . +See +.Xr setitimer 2 +for the full description and purpose of the +.Sy setitimer +system call and its arguments. +.Pp +The +.Fn pr_setitimer +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_setitimer +function's return value is that described in +.Xr setitimer 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr setitimer 2 . +.Pp +The +.Fn pr_setitimer +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr setitimer 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_setrctl.3proc b/usr/src/man/man3proc/pr_setrctl.3proc new file mode 100644 index 0000000000..186b1843cc --- /dev/null +++ b/usr/src/man/man3proc/pr_setrctl.3proc @@ -0,0 +1,106 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_SETRCTL 3PROC +.Os +.Sh NAME +.Nm pr_setrctl +.Nd inject setrctl system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_setrctl +.Fa "struct ps_prochandle *P" +.Fa "const char *rname" +.Fa "rctlblk_t *old_blk" +.Fa "rctlblk_t *new_blk" +.Fa "int rflag" +.Fc +.Sh DESCRIPTION +The +.Fn pr_setrctl +function injects the +.Xr setrctl 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr setrctl 2 +on the currently running process. +.Pp +The arguments +.Fa rname , +.Fa old_blk , +.Fa new_blk , +and +.Fa rflag +have the same meaning as in +.Xr setrctl 2 . +See +.Xr setrctl 2 +for the full description and purpose of the +.Sy setrctl +system call and its arguments. +.Pp +The +.Fn pr_setrctl +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_setrctl +function's return value is that described in +.Xr setrctl 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr setrctl 2 . +.Pp +The +.Fn pr_setrctl +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr setrctl 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_setrlimit.3proc b/usr/src/man/man3proc/pr_setrlimit.3proc new file mode 100644 index 0000000000..1282c86f1b --- /dev/null +++ b/usr/src/man/man3proc/pr_setrlimit.3proc @@ -0,0 +1,120 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_SETRLIMIT 3PROC +.Os +.Sh NAME +.Nm pr_setrlimit , +.Nm pr_setrlimit64 +.Nd inject setrlimit system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_setrlimit +.Fa "struct ps_prochandle *P" +.Fa "int resource" +.Fa "const struct rlimit *rlp" +.Fc +.Ft int +.Fo pr_setrlimit64 +.Fa "struct ps_prochandle *P" +.Fa "int resource" +.Fa "struct rlimit64 *rlp" +.Fc +.Sh DESCRIPTION +The +.Fn pr_setrlimit +function injects the +.Xr setrlimit 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr setrlimit 2 +on the currently running process. +.Pp +The arguments +.Fa resource +and +.Fa rlp +have the same meaning as in +.Xr setrlimit 2 . +See +.Xr setrlimit 2 +for the full description and purpose of the +.Sy setrlimit +system call and its arguments. +.Pp +The +.Fn pr_setrlimit +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Pp +The +.Fn pr_setrlimit64 +function is equivalent to +.Fn pr_setrlimit ; +however, rather than having the rlimit information be subject to the +data model of the target process, they always provide 64-bit rlimit +information. See +.Xr lf64 5 +for more information. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_setrlimit +function's return value is that described in +.Xr setrlimit 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr setrlimit 2 . +.Pp +The +.Fn pr_setrlimit +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr setrlimit 2 , +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr lf64 5 diff --git a/usr/src/man/man3proc/pr_settaskid.3proc b/usr/src/man/man3proc/pr_settaskid.3proc new file mode 100644 index 0000000000..663bb6ed83 --- /dev/null +++ b/usr/src/man/man3proc/pr_settaskid.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_SETTASKID 3PROC +.Os +.Sh NAME +.Nm pr_settaskid +.Nd inject settaskid system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft taskid_t +.Fo pr_settaskid +.Fa "struct ps_prochandle *P" +.Fa "projid_t project" +.Fa "int flags" +.Fc +.Sh DESCRIPTION +The +.Fn pr_settaskid +function injects the +.Xr settaskid 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr settaskid 2 +on the currently running process. +.Pp +The arguments +.Fa project +and +.Fa flags +have the same meaning as in +.Xr settaskid 2 . +See +.Xr settaskid 2 +for the full description and purpose of the +.Sy settaskid +system call and its arguments. +.Pp +The +.Fn pr_settaskid +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_settaskid +function's return value is that described in +.Xr settaskid 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr settaskid 2 . +.Pp +The +.Fn pr_settaskid +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr settaskid 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_sigaction.3proc b/usr/src/man/man3proc/pr_sigaction.3proc new file mode 100644 index 0000000000..937f2c1f18 --- /dev/null +++ b/usr/src/man/man3proc/pr_sigaction.3proc @@ -0,0 +1,104 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_SIGACTION 3PROC +.Os +.Sh NAME +.Nm pr_sigaction +.Nd inject sigaction system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_sigaction +.Fa "struct ps_prochandle *P" +.Fa "int sig" +.Fa "const struct sigaction *act" +.Fa "struct sigaction *oact" +.Fc +.Sh DESCRIPTION +The +.Fn pr_sigaction +function injects the +.Xr sigaction 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr sigaction 2 +on the currently running process. +.Pp +The arguments +.Fa sig , +.Fa act , +and +.Fa oact +have the same meaning as in +.Xr sigaction 2 . +See +.Xr sigaction 2 +for the full description and purpose of the +.Sy sigaction +system call and its arguments. +.Pp +The +.Fn pr_sigaction +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_sigaction +function's return value is that described in +.Xr sigaction 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr sigaction 2 . +.Pp +The +.Fn pr_sigaction +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr sigaction 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_stat.3proc b/usr/src/man/man3proc/pr_stat.3proc new file mode 100644 index 0000000000..7c6f26ff4a --- /dev/null +++ b/usr/src/man/man3proc/pr_stat.3proc @@ -0,0 +1,196 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_STAT 3PROC +.Os +.Sh NAME +.Nm pr_fstat , +.Nm pr_fstat64 +.Nm pr_lstat , +.Nm pr_lstat64 , +.Nm pr_stat , +.Nm pr_stat64 +.Nd inject stat system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_fstat +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "struct stat *buf" +.Fc +.Ft int +.Fo pr_fstat64 +.Fa "struct ps_prochandle *P" +.Fa "int fd" +.Fa "struct stat64 *buf" +.Fc +.Ft int +.Fo pr_lstat +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "struct stat *buf" +.Fc +.Ft int +.Fo pr_lstat64 +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "struct stat64 *buf" +.Fc +.Ft int +.Fo pr_stat +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "struct stat *buf" +.Fc +.Ft int +.Fo pr_stat64 +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "struct stat64 *buf" +.Fc +.Sh DESCRIPTION +The +.Fn pr_stat , +.Fn pr_lstat , +and +.Fn pr_fast +functions inject the +.Xr stat 2 , +.Xr lstat 2 , +and +.Xr fstat 2 +system calls respectively into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr stat 2 , +.Xr lstat 2 , +or +.Xr fstat 2 +on the currently running process. +.Pp +The arguments +.Fa path , +and +.Fa buf +to the +.Fn pr_stat +function have the same meaning as in +.Xr stat 2 . +See +.Xr stat 2 +for the full description and purpose of the +.Sy stat +system call and its arguments. +.Pp +The arguments +.Fa fd , +and +.Fa buf +to the +.Fn pr_fstat +function have the same meaning as in +.Xr fstat 2 , +see +.Xr fstat 2 +for the full description and purpose of the +.Sy fstat +system call and its arguments. +.Pp +The arguments +.Fa path , +and +.Fa buf +to the +.Fn pr_lstat +function have the same meaning as in +.Xr lstat 2 , +see +.Xr lstat 2 +for the full description and purpose of the +.Sy lstat +system call and its arguments. +.Pp +The +.Fn pr_stat , +.Fn pr_lstat , +and +.Fn pr_fstat +functions only work on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Pp +The +.Fn pr_stat64 , +.Fn pr_fstat64 , +and +.Fn pr_lstat64 +functions are equivalent to +.Fn pr_stat , +.Fn pr_fstat , +and +.Fn pr_lstat +respectively; however, rather than having the stat information be +subject to the data model of the target process, they always provide +64-bit stat information. See +.Xr lf64 5 +for more information. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_stat +function's return value is that described in +.Xr stat 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr stat 2 . +.Pp +The +.Fn pr_stat +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr stat 2 , +.Xr libproc 3LIB , +.Xr proc 4 , +.Xr lf64 5 diff --git a/usr/src/man/man3proc/pr_statvfs.3proc b/usr/src/man/man3proc/pr_statvfs.3proc new file mode 100644 index 0000000000..05dc23cf00 --- /dev/null +++ b/usr/src/man/man3proc/pr_statvfs.3proc @@ -0,0 +1,102 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_STATVFS 3PROC +.Os +.Sh NAME +.Nm pr_statvfs +.Nd inject statvfs system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_statvfs +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fa "statvfs_t *buf" +.Fc +.Sh DESCRIPTION +The +.Fn pr_statvfs +function injects the +.Xr statvfs 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr statvfs 2 +on the currently running process. +.Pp +The arguments +.Fa path +and +.Fa buf +have the same meaning as in +.Xr statvfs 2 . +See +.Xr statvfs 2 +for the full description and purpose of the +.Sy statvfs +system call and its arguments. +.Pp +The +.Fn pr_statvfs +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_statvfs +function's return value is that described in +.Xr statvfs 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr statvfs 2 . +.Pp +The +.Fn pr_statvfs +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr statvfs 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_unlink.3proc b/usr/src/man/man3proc/pr_unlink.3proc new file mode 100644 index 0000000000..b1f96a2384 --- /dev/null +++ b/usr/src/man/man3proc/pr_unlink.3proc @@ -0,0 +1,99 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_UNLINK 3PROC +.Os +.Sh NAME +.Nm pr_unlink +.Nd inject unlink system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_unlink +.Fa "struct ps_prochandle *P" +.Fa "const char *path" +.Fc +.Sh DESCRIPTION +The +.Fn pr_unlink +function injects the +.Xr unlink 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr unlink 2 +on the currently running process. +.Pp +The argument +.Fa path +has the same meaning as in +.Xr unlink 2 . +See +.Xr unlink 2 +for the full description and purpose of the +.Sy unlink +system call and its arguments. +.Pp +The +.Fn pr_unlink +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_unlink +function's return value is that described in +.Xr unlink 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr unlink 2 . +.Pp +The +.Fn pr_unlink +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr unlink 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/pr_waitid.3proc b/usr/src/man/man3proc/pr_waitid.3proc new file mode 100644 index 0000000000..0efd563722 --- /dev/null +++ b/usr/src/man/man3proc/pr_waitid.3proc @@ -0,0 +1,106 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PR_WAITID 3PROC +.Os +.Sh NAME +.Nm pr_waitid +.Nd inject waitid system call into victim process +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo pr_waitid +.Fa "struct ps_prochandle *P" +.Fa "idtype_t idtype" +.Fa "id_t id" +.Fa "siginfo_t *infop" +.Fa "int options" +.Fc +.Sh DESCRIPTION +The +.Fn pr_waitid +function injects the +.Xr waitid 2 +system call into the target process +.Fa P +by means of the agent LWP. +If the process handle +.Fa P +is the value +.Dv NULL +then this will be equivalent to calling +.Xr waitid 2 +on the currently running process. +.Pp +The arguments +.Fa idtype , +.Fa id , +.Fa infop , +and +.Fa options +have the same meaning as in +.Xr waitid 2 . +See +.Xr waitid 2 +for the full description and purpose of the +.Sy waitid +system call and its arguments. +.Pp +The +.Fn pr_waitid +function only works on active processes. Process handles that correspond +to core files, zombie processes, or ELF objects do not support system +call injection. +.Sh RETURN VALUES +Upon successful completion, the +.Fn pr_waitid +function's return value is that described in +.Xr waitid 2 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is set to +.Er ENOSYS +to indicate that the system call could not be injected. +.Sh ERRORS +For the full list of errors see the +.Sy ERRORS +section in +.Xr waitid 2 . +.Pp +The +.Fn pr_waitid +function will fail if: +.Bl -tag -width Er +.It Er ENOSYS +An error occurred while trying to invoke the agent LWP and inject a +system call in the process handle +.Fa P +or the process handle +.Fa P +does not support system call injection. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +See +.Sy LOCKING +in +.Xr libproc 3LIB . +.Sh SEE ALSO +.Xr waitid 2 , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_arg_grab.3proc b/usr/src/man/man3proc/proc_arg_grab.3proc new file mode 100644 index 0000000000..be9c7c1b02 --- /dev/null +++ b/usr/src/man/man3proc/proc_arg_grab.3proc @@ -0,0 +1,161 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_ARG_GRAB 3PROC +.Os +.Sh NAME +.Nm proc_arg_grab , +.Nm proc_arg_xrgab +.Nd process grabbing utility function +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "struct ps_prochandle" +.Fo proc_arg_grag +.Fa "const char *arg" +.Fa "int oflag" +.Fa "int gflag" +.Fa "int *perr" +.Fc +.Ft "struct ps_prochandle" +.Fo proc_arg_xgrab +.Fa "const char *arg" +.Fa "const char *path" +.Fa "int oflag" +.Fa "int gflag" +.Fa "int *perr" +.Fa "const char **lwps" +.Fc +.Sh DESCRIPTION +The +.Fn proc_arg_grab +and +.Fn proc_arg_xgrab +functions are utility functions which process arguments pointing to a +currently active process or a core file and returns a process handle to +it. +.Pp +The string +.Fa arg +contains the name of something to try and open. How it is interpreted +depends on the value of +.Fa oflag . +The following values may be passed in as a bitwise-exclusive-OR for +.Fa oflag : +.Bl -tag -width Dv -offset indent +.It Dv PR_ARG_PIDS +Allows +.Fa arg +to specify process IDs and /proc arguments. +.It Dv PR_ARG_CORES +Allows +.Fa arg +to specify core files. +.It PR_ARG_ANY +Encompasses all of the previous opens. +.El +.Pp +The argument +.Fa gflag +controls the behavior when the corresponding process grabbing function +is called by the underlying system. For a list of flags that may be +passed in here, see +.Xr Pgrab 3PROC +and +.Xr Pgrab_core 3PROC . +.Pp +The argument +.Fa perr +must be a +.Pf non- Dv NULL +pointer and in the event that the +.Fn proc_arg_grab +or +.Fn proc_arg_xgrab +functions fail, then +.Fa perr +will be updated with a more detailed error number. +.Pp +The +.Fa path +argument allows a search path for its binaries to be specified in case a +core file is found and opened. +.Pp +If the +.Fa lwps +argument is +.Pf non- Dv NULL , +then if there is a thread specification present in +.Fa arg , +it will be validated to see if it is a valid range and then a pointer to +the start of the thread specification will be stored in +.Fa lwps . +For more information on determining process range validity, see +.Xr proc_lwp_range_valid 3PROC +for more information on valid and invalid tread specifications. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_arg_grab +and +.Fn proc_arg_xgrab +functions return a pointer to the process handle is returned. +Otherwise, +.Dv NULL +is returned and +.Fa perr +is set to include a more specific error. +.Sh ERRORS +For a full list of additional errors, see the +.Sy ERRORS +section in +.Xr Pgrab 3PROC +and +.Xr Pgrab_core 3PROC . +.Pp +The +.Fn proc_arg_grab +and +.Fn proc_arg_xgrab +function will fail if: +.Bl -tag -width Er +.It Er G_BADLWPS +.Fa arg +contains an invalid thread specification. +.It Er G_NOCORE +.Dv PR_ARG_CORES +was set and no core file could be found corresponding to +.Fa arg . +.It Er G_NOPROC +.Dv PR_ARG_PIDS +was set and no process could be found corresponding to +.Fa arg . +.It Er G_NOPROCORCORE +Both +.Dv PR_ARG_CORES +and +.Dv PR_ARG_NOPROC +were set and no process or core file could be found corresponding to +.Fa arg . +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Prelease 3PROC , +.Xr proc_lwp_range_valid 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_arg_psinfo.3proc b/usr/src/man/man3proc/proc_arg_psinfo.3proc new file mode 100644 index 0000000000..40af3572a3 --- /dev/null +++ b/usr/src/man/man3proc/proc_arg_psinfo.3proc @@ -0,0 +1,142 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_ARG_PSINFO 3PROC +.Os +.Sh NAME +.Nm proc_arg_psinfo , +.Nm proc_arg_xpsinfo +.Nd process ps information utility function +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft pid_t +.Fo proc_arg_psinfo +.Fa "const char *arg" +.Fa "int oflag" +.Fa "psinfo_t *psp" +.Fa "int *perr" +.Fc +.Ft pid_t +.Fo proc_arg_xpsinfo +.Fa "const char *arg" +.Fa "int oflag" +.Fa "psinfo_t *psp" +.Fa "int *perr" +.Fa "const char **lwps" +.Fc +.Sh DESCRIPTION +The +.Fn proc_arg_psinfo +and +.Fn proc_arg_xpsinfo +functions are utility functions which process an argument that may +refer to a currently active process or core file and attempts to obtain the +.Xr ps 1 +information from the process or core and fills it into +.Fa psp . +.Pp +The string +.Fa arg +contains the name of something to try and open. How it is interpreted +depends on the value of +.Fa oflag . +The following values may be passed in as a bitwise-exclusive-OR for +.Fa oflag : +.Bl -tag -width Dv -offset indent +.It Dv PR_ARG_PIDS +Allows +.Fa arg +to specify process IDs and /proc arguments. +.It Dv PR_ARG_CORES +Allows +.Fa arg +to specify core files. +.It PR_ARG_ANY +Encompasses all of the previous opens. +.El +.Pp +The argument +.Fa perr +must be a +.Pf non- Dv NULL +pointer and in the event that the +.Fn proc_arg_psinfo +or +.Fn proc_arg_xpsinfo +functions fail, then +.Fa perr +will be updated with a more detailed error number. +.Pp +If the +.Fa lwps +argument is +.Pf non- Dv NULL , +then if there is a thread specification present in +.Fa arg , +it will be validated to see if it is a valid range and then a pointer to +the start of the thread specification will be stored in +.Fa lwps . +For more information on determining process range validity, see +.Xr proc_lwp_range_valid 3PROC +for more information on valid and invalid tread specifications. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_arg_psinfo +and +.Fn proc_arg_xpsinfo +functions return the process identifier and fill in +.Fa psp +with the ps information of the process. Otherwise, +.Sy -1 +is returned and +.Fa perr +is filled in with the error's details. +.Sh ERRORS +For a full list of additional errors, see the +.Sy ERRORS +section in +.Xr Pgrab_core 3PROC . +.Bl -tag -width Er +.It Er G_BADLWPS +.Fa arg +contains an invalid thread specification. +.It Er G_NOCORE +.Dv PR_ARG_CORES +was set and no core file could be found corresponding to +.Fa arg . +.It Er G_NOPROC +.Dv PR_ARG_PIDS +was set and no process could be found corresponding to +.Fa arg . +.It Er G_NOPROCORCORE +Both +.Dv PR_ARG_CORES +and +.Dv PR_ARG_NOPROC +were set and no process or core file could be found corresponding to +.Fa arg . +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr ps 1 , +.Xr libproc 3LIB , +.Xr Pgrab 3PROC , +.Xr Pgrab_core 3PROC , +.Xr Prelease 3PROC , +.Xr proc_lwp_range_valid 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_content2str.3proc b/usr/src/man/man3proc/proc_content2str.3proc new file mode 100644 index 0000000000..01f3b6a979 --- /dev/null +++ b/usr/src/man/man3proc/proc_content2str.3proc @@ -0,0 +1,90 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_CONTENT2STR 3PROC +.Os +.Sh NAME +.Nm proc_content2str , +.Nm proc_str2content +.Nd convert a string to and from a core_content_t +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_content2str +.Fa "core_content_t content" +.Fa "char *buf" +.Fa "size_t size" +.Fc +.Ft int +.Fo proc_str2content +.Fa "const char *str" +.Fa "core_content_t *cp" +.Fc +.Sh DESCRIPTION +The +.Fn proc_content2str +function converts the contents of a process (whether active or a core +file) from +.Fa content +into a string and writes up to +.Fa size +characters, including the null-terminator, into +.Fa buf . +.Pp +A content string will be a series of one or more tokens concatenated +together with the +.Sy + +or +.Sy - +characters, indicating that the subsequent token should be added or +subtracted from the previous ones. The full list of tokens and constants +is available in the +.Sy core_content_t +portion of the +.Sy TYPES +section in +.Xr libproc 3LIB . +.Pp +The +.Fn proc_str2content +function takes the character string +.Fa str +and based on the format described in the previous paragraph, converts it +back into a +.Vt core_content_t +which is placed into +.Fa cp . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_content2str +function will return the number of characters written into +.Fa buf , +excluding the terminating null character. +.Pp +Upon successful completion, the +.Fn proc_str2content +function will return +.Sy 0 . +Otherwise, +.Sy -1 +will be returned to indicate an unknown string. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr coreadm 1M , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_fltname.3proc b/usr/src/man/man3proc/proc_fltname.3proc new file mode 100644 index 0000000000..1dc563b714 --- /dev/null +++ b/usr/src/man/man3proc/proc_fltname.3proc @@ -0,0 +1,89 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_FLTNAME 3PROC +.Os +.Sh NAME +.Nm proc_fltname , +.Nm proc_signame , +.Nm proc_sysname +.Nd convert a fault, signal, and system call to a name +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo proc_fltname +.Fa "int flt" +.Fa "char *buf" +.Fa "size_t bufsz" +.Fc +.Ft "char *" +.Fo proc_signame +.Fa "int sig" +.Fa "char *buf" +.Fa "size_t bufsz" +.Fc +.Ft "char *" +.Fo proc_sysname +.Fa "int sys" +.Fa "char *buf" +.Fa "size_t bufsz" +.Fc +.Sh DESCRIPTION +The +.Fn proc_fltname , +.Fn proc_signame , +and +.Fn proc_sysname +functions respectively convert the fault, signal, and system call in +.Fa flt , +.Fa sig , +and +.Fa sys +to a human-readable name and place the corresponding string in +.Fa buf . +Up to +.Fa bufsz +characters, including the null terminator, will be written into +.Fa buf . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_fltname , +.Fn proc_signame , +and +.Fn proc_sysname +functions return a pointer to +.Fa buf . +The contents of +.Fa buf +are always null terminated. +Otherwise, +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc_fltset2str 3PROC , +.Xr proc_sigset2str 3PROC , +.Xr proc_str2flt 3PROC , +.Xr proc_str2fltset 3PROC , +.Xr proc_str2sig 3PROC , +.Xr proc_str2sigset 3PROC , +.Xr proc_str2sys 3PROC , +.Xr proc_str2sysset 3PROC , +.Xr proc_sysset2str 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_fltset2str.3proc b/usr/src/man/man3proc/proc_fltset2str.3proc new file mode 100644 index 0000000000..08e43c531f --- /dev/null +++ b/usr/src/man/man3proc/proc_fltset2str.3proc @@ -0,0 +1,117 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_FLTSET2STR 3PROC +.Os +.Sh NAME +.Nm proc_fltset2str , +.Nm proc_sigset2str , +.Nm proc_sysset2str +.Nd convert a fault, signal, or system call set to a string +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "char *" +.Fo proc_fltset2str +.Fa "const fltset_t *set" +.Fa "const char *delim" +.Fa "int members" +.Fa "char *buf" +.Fa "size_t buflen" +.Fc +.Ft "char *" +.Fo proc_sigset2str +.Fa "const sigset_t *set" +.Fa "const char *delim" +.Fa "int members" +.Fa "char *buf" +.Fa "size_t buflen" +.Fc +.Ft "char *" +.Fo proc_sysset2str +.Fa "const sysset_t *set" +.Fa "const char *delim" +.Fa "int members" +.Fa "char *buf" +.Fa "size_t buflen" +.Fc +.Sh DESCRIPTION +The +.Fn proc_fltset2str , +.Fn proc_sigset2str , +and +.Fn proc_sysset2str +functions respectively convert the fault, signal, and system call sets in +.Fa fltset , +.Fa sigset , +and +.Fa sysset +to a human-readable name and place the corresponding string in +.Fa buf . +.Pp +Up to +.Fa buflen +characters will be placed in +.Fa buf , +including the null terminator. If +.Fa buf +is not large enough to hold the entire string, then an error +will be returned. +.Pp +The +.Fa members +argument controls which members of the set are written out. If +.Fa members +is +.Sy 1 , +then the sets member are placed in +.Fa buf . +If +.Fa members +is +.Sy 0 , +then the members which are not in the set are placed in +.Fa buf . +.Pp +The string +.Fa delim +will be placed in-between every member of the set. It will not come after +the last entry in the set. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_fltset2str , +.Fn proc_sigset2str , +and +.Fn proc_sysset2str +functions return +.Fa buf . +Otherwise, +.Dv NULL +is returned. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc_fltname 3PROC , +.Xr proc_signame 3PROC , +.Xr proc_str2flt 3PROC , +.Xr proc_str2fltset 3PROC , +.Xr proc_str2sig 3PROC , +.Xr proc_str2sigset 3PROC , +.Xr proc_str2sys 3PROC , +.Xr proc_str2sysset 3PROC , +.Xr proc_sysname 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_get_auxv.3proc b/usr/src/man/man3proc/proc_get_auxv.3proc new file mode 100644 index 0000000000..8f2ec70299 --- /dev/null +++ b/usr/src/man/man3proc/proc_get_auxv.3proc @@ -0,0 +1,52 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROG_GET_AUXV 3PROC +.Os +.Sh NAME +.Nm proc_get_auxv +.Nd get process auxiliary vector +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_get_auxv +.Fa "pid_t proc" +.Fa "auxv_t *pauxv" +.Fa "int naux" +.Fc +.Sh DESCRIPTION +The +.Fn proc_get_auxv +function is a convenient way to read the /proc auxv file for the process +.Fa proc . +Up to +.Fa naux +vectors will be read and written into +.Fa pauxv . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_get_auxv +function returns the number of auxiliary vectors read into +.Fa pauxv. +Otherwise, +.Sy -1 +is returned to indicate an error occurred. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_get_cred.3proc b/usr/src/man/man3proc/proc_get_cred.3proc new file mode 100644 index 0000000000..dbdb08c379 --- /dev/null +++ b/usr/src/man/man3proc/proc_get_cred.3proc @@ -0,0 +1,66 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROG_GET_CRED 3PROC +.Os +.Sh NAME +.Nm proc_get_cred +.Nd get process credentials +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_get_cred +.Fa "pid_t proc" +.Fa "prcred_t *credp" +.Fa "int ngroups" +.Fc +.Sh DESCRIPTION +The +.Fn proc_get_cred +function is a convenient way to read the /proc cred file for the process +.Fa proc . +.Pp +Up to +.Fa ngroups +supplemental groups will be read and written into +.Fa credp +in addition to the normal information. If +.Fa ngroups +is more than one, than it is up to the caller to have allocated enough +space for +.Fa credp . +Callers could allocate it, using an expression similar to: +.Pp +.Dl credp = malloc(sizeof (prcred_t) + (ngroups - 1) * sizeof (gid_t)); +.Pp +The definition of the +.Sy prcred_t +structure may be found in +.Xr proc 4 . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_get_cred +function returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned to indicate an error occurred. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_get_priv.3proc b/usr/src/man/man3proc/proc_get_priv.3proc new file mode 100644 index 0000000000..bc83a7d604 --- /dev/null +++ b/usr/src/man/man3proc/proc_get_priv.3proc @@ -0,0 +1,72 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_GET_PRIV 3PROC +.Os +.Sh NAME +.Nm proc_get_priv , +.Nm proc_free_priv +.Nd get process privileges +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft "prpriv_t *" +.Fo proc_get_priv +.Fa "pid_t pid" +.Fc +.Ft void +.Fo proc_free_priv +.Fa "prpriv_t *prp" +.Fc +.Sh DESCRIPTION +The +.Fn proc_get_priv +function is a convenient way to read the /proc privilege file for the +process +.Fa pid . +The +.Fn proc_get_priv +function takes care of allocating memory for the privilege set and +ensures that it is large enough to hold all of the privilege sets. The +definition of the +.Sy prpriv_t +structure may be found in +.Xr proc 4 . +.Pp +The +.Fn proc_free_priv +function releases the memory that was allocated by a call to +.Fn proc_get_priv . +It is safe to pass the +.Dv NULL +pointer in as +.Fa prp , +the function will simply return without taking any action in that case. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_get_priv +function returns a pointer to an allocated +.Sy prpriv_t +with the privileges of +.Fa pid . +Otherwise, +.Dv NULL +is returned to indicate an error occurred. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_get_psinfo.3proc b/usr/src/man/man3proc/proc_get_psinfo.3proc new file mode 100644 index 0000000000..cc2201b237 --- /dev/null +++ b/usr/src/man/man3proc/proc_get_psinfo.3proc @@ -0,0 +1,56 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_GET_PSINFO 3PROC +.Os +.Sh NAME +.Nm proc_get_psinfo +.Nd get process ps information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_get_psinfo +.Fa "pid_t pid" +.Fa "psinfo_t *psp" +.Fc +.Sh DESCRIPTION +The +.Fn proc_get_psinfo +function is a convenient way to read the /proc psinfo file for the +process +.Fa pid . +The +.Xr ps 1 +related information of the process will be filled into +.Fa psp . +The definition of the +.Sy psinfo_t +structure may be found in +.Xr proc 4 . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_get_psinfo +function returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned to indicate an error occurred. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_get_status.3proc b/usr/src/man/man3proc/proc_get_status.3proc new file mode 100644 index 0000000000..45393a76bc --- /dev/null +++ b/usr/src/man/man3proc/proc_get_status.3proc @@ -0,0 +1,54 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_GET_STATUS 3PROC +.Os +.Sh NAME +.Nm proc_get_pstatus +.Nd get process status information +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_get_pstatus +.Fa "pid_t pid" +.Fa "pstatus_t *psp" +.Fc +.Sh DESCRIPTION +The +.Fn proc_get_pstatus +function is a convenient way to read the /proc status file for the +process +.Fa pid . +The status information of the process will be filled into +.Fa psp . +The definition of the +.Sy pstatus_t +structure may be found in +.Xr proc 4 . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_get_pstatus +function returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned to indicate an error occurred. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_initstdio.3proc b/usr/src/man/man3proc/proc_initstdio.3proc new file mode 100644 index 0000000000..315f717f81 --- /dev/null +++ b/usr/src/man/man3proc/proc_initstdio.3proc @@ -0,0 +1,107 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_INITSTDIO 3PROC +.Os +.Sh NAME +.Nm proc_initstdio , +.Nm proc_flushstdio , +.Nm proc_finistdio +.Nd stdio buffering functions +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_initstdio +.Fa void +.Fc +.Ft int +.Fo proc_flushstdio +.Fa void +.Fc +.Ft int +.Fo proc_finistdio +.Fa void +.Fc +.Sh DESCRIPTION +The +.Fn proc_initstdio , +.Fn proc_flushstdio , +and +.Fn proc_finistdio +functions are utilities provided to aid with the possibility of deadlock +while doing I/O operations. If a process is trying to do I/O, but +holding the process handle that would consume that I/O, then eventually +the program holding the process handle will block as none of its I/O has +been drained. However, because it is holding a process handle to that +process, it will never be drained. +.Pp +Consider, for example, the following invocation: +.Li pfiles `pgrep xterm` +where the command was launched from a shell on an xterm. Because the +xterm is stopped, it will not be able to write out any of the standard +out that gets passed to it, leading to a deadlock. The +.Li pfiles +program cannot release the +.Li xterm +process because it still has pending I/O, but the I/O cannot be drained +due to the same hold. +.Pp +To address this, these functions duplicate the standard output and +standard error of the process to temporary files and then flushes it out +to the original file descriptors and streams later. When finished, the +original file descriptors are restored as standard out and standard +error. +.Pp +The +.Fn proc_initstdio +function initializes a new standard out and standard error file +descriptors and retains the originals. +.Pp +The +.Fn proc_flushstdio +functions flushes all of the cached data from the temporary standard out +and standard error back to the underlying ones. This function should +only be called after all process handles have been released. For +example, if iterating on multiple processes, calling this after handling +each one is safe. +.Pp +The +.Fn proc_finistdio +flushes any outstanding I/O and restores the original standard output +and standard error. +.Pp +Once called, the +.Fn proc_initstdio +function must not be called again until a successful call to +.Fn proc_finistdio . +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_initstdio , +.Fn proc_flushstdio , +and +.Fn proc_finistdio +functions all return +.Sy 0 . +Otherwise, +.Sy -1 +is returned to indicate failure. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy Unsafe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr Pgrab 3PROC , +.Xr Prelease 3PROC diff --git a/usr/src/man/man3proc/proc_lwp_in_set.3proc b/usr/src/man/man3proc/proc_lwp_in_set.3proc new file mode 100644 index 0000000000..62f3596d6e --- /dev/null +++ b/usr/src/man/man3proc/proc_lwp_in_set.3proc @@ -0,0 +1,120 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_LWP_IN_SET 3PROC +.Os +.Sh NAME +.Nm proc_lwp_in_set , +.Nm proc_lwp_range_valid +.Nd test and validate thread ranges +.Sh SYNOPSIS +.Lb libproc +.Ft int +.Fo proc_lwp_in_set +.Fa "const char *set" +.Fa "lwpid_t lwpid" +.Fc +.Ft int +.Fo proc_lwp_range_valid +.Fa "const char *set" +.Fc +.Sh DESCRIPTION +The +.Fn proc_lwp_in_set +and +.Fn proc_lwp_range_valid +functions provide means for testing the validity of thread ranges and +whether a thread is in a range. +.Pp +A thread range is a series of one or more series of range identifiers +which describe a collection of threads. These are often used by programs +such as +.Xr pbind 1M , +.Xr pstack 1 , +.Xr prun 1 , +.Xr pstop 1 , +and others as a means for a user to specify a selection of threads from +inside of a process. +.Pp +More formally, the thread range may be described as: +.Bd -literal -offset indent +lwp_range[,lwp_range]* +.Ed +.Pp +An LWP range may be specified as one of the following four strings. The +following table shows the string formats and the corresponding set of +valid threads that match it: +.Bl -column -offset indent ".Sy n-m" "n <= lwpid <= m" +.It Sy -n Ta lwpid <= n +.It Sy n-m Ta n <= lwpid <= m +.It Sy n- Ta lwpid >= n +.It Sy n Ta lwpid == n +.El +.Pp +For example, the thread range +.Sy -2,4-5,7,8- +matches thread with IDs 0-2, 4-5, 7, and any thread id 8 or greater. +.Pp +The +.Fn proc_lwp_range_valid +function determines whether or not the character string +.Fa set +is a valid thread range based on the rules above. Note, the empty +string, the +.Dv NULL +pointer, or otherwise are not valid. +.Pp +The +.Fn proc_lwp_in_set +function determines whether the thread identifier +.Fa lwpid +is contained in the set described by +.Fa set . +If +.Fa set +is the +.Dv NULL +pointer, then every thread matches the set. +.Sh RETURN VALUES +Upon successful completion, the +.Fa proc_lwp_in_set +function returns +.Sy 1 +to indicate +.Fa lwpid +is in +.Fa set . +Otherwise, +.Sy 0 +is returned to indicate that +.Fa lwpid +is not in +.Fa set . +.Pp +Upon successful completion, the +.Fa proc_lwp_range_valid +function returns +.Sy 0 +to indicate +.Fa set +is valid. Otherwise, +.Sy -1 +is returned to indicate that the set is invalid. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_service.3proc b/usr/src/man/man3proc/proc_service.3proc index a088af2b9d..ce819d4dab 100644 --- a/usr/src/man/man3proc/proc_service.3proc +++ b/usr/src/man/man3proc/proc_service.3proc @@ -158,7 +158,6 @@ proc_service \- process service interfaces .fi .SH DESCRIPTION -.sp .LP Every program that links \fBlibthread_db\fR or \fBlibrtld_db\fR must provide a set of process control primitives that allow \fBlibthread_db\fR and @@ -173,7 +172,6 @@ a functional specification that clients of \fBlibthread_db\fR and \fBlibrtld_db\fR can use to implement this required interface. The <\fBproc_service.h\fR> header lists the C declarations of these routines. .SH FUNCTIONS -.sp .ne 2 .na \fB\fBps_pdmodel()\fR\fR @@ -334,7 +332,8 @@ Sets the \fBLWP`s\fR floating point register set. \fB\fBps_pauxv()\fR\fR .ad .RS 23n -Returns a pointer to a read-only copy of the target process's auxiliary vector. +Returns a pointer to a read-only copy of the auxiliary vector of the target +process. .RE .sp @@ -365,7 +364,6 @@ Logs a message. .RE .SS "SPARC" -.sp .ne 2 .na \fB\fBps_lgetxregsize()\fR\fR @@ -393,7 +391,6 @@ Sets the extra state registers of the \fBLWP\fR. .RE .SS "x86" -.sp .ne 2 .na \fB\fBps_lgetLDT()\fR\fR @@ -403,7 +400,6 @@ Reads the local descriptor table of the \fBLWP\fR. .RE .SH ATTRIBUTES -.sp .LP See \fBattributes\fR(5) for description of the following attributes: .sp @@ -419,7 +415,6 @@ MT Level Safe .TE .SH SEE ALSO -.sp .LP \fBlibc_db\fR(3LIB), \fBlibrtld_db\fR(3LIB), \fBps_pread\fR(3PROC), \fBrtld_db\fR(3EXT), \fBattributes\fR(5) diff --git a/usr/src/man/man3proc/proc_str2flt.3proc b/usr/src/man/man3proc/proc_str2flt.3proc new file mode 100644 index 0000000000..672fbf98bb --- /dev/null +++ b/usr/src/man/man3proc/proc_str2flt.3proc @@ -0,0 +1,83 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_STR2FLT 3PROC +.Os +.Sh NAME +.Nm proc_str2flt , +.Nm proc_str2sig , +.Nm proc_str2sys +.Nd convert a string to a fault, signal, or system call +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_str2flt +.Fa "const char *str" +.Fa "int *fltnum" +.Fc +.Ft int +.Fo proc_str2sig +.Fa "const char *str" +.Fa "int *signum" +.Fc +.Ft int +.Fo proc_str2sys +.Fa "const char *sys" +.Fa "int *sysnum" +.Fc +.Sh DESCRIPTION +The +.Fn proc_str2flt , +.Fn proc_str2sig , +and +.Fn proc_str2sys +functions convert a string into the corresponding fault, signal, and +system call number respectively and stores the resulting value in +.Fa fltnum , +.Fa signum , +or +.Fa sysnum +respectively. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_str2flt , +.Fn proc_str2sig , +and +.Fn proc_str2sys +functions return +.Sy 0 +and update +.Fa fltnum , +.Fa signum , +and +.Fa sysnum +respectively. Otherwise, +.Sy -1 +is returned to indicate that a conversion could not take place. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc_fltname 3PROC , +.Xr proc_fltset2str 3PROC , +.Xr proc_signame 3PROC , +.Xr proc_sigset2str 3PROC , +.Xr proc_str2fltset 3PROC , +.Xr proc_str2sigset 3PROC , +.Xr proc_str2sysset 3PROC , +.Xr proc_sysset2str 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_str2fltset.3proc b/usr/src/man/man3proc/proc_str2fltset.3proc new file mode 100644 index 0000000000..ebc8e60be5 --- /dev/null +++ b/usr/src/man/man3proc/proc_str2fltset.3proc @@ -0,0 +1,125 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_STR2FLTSET 3PROC +.Os +.Sh NAME +.Nm proc_str2fltset , +.Nm proc_str2sigset , +.Nm proc_str2sysset +.Nd convert a string to a fault, signal, or system call set +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft char * +.Fo proc_str2fltset +.Fa "const char *str" +.Fa "const char *delim" +.Fa "int members" +.Fa "fltset_t *set" +.Fc +.Ft char * +.Fo proc_str2sigset +.Fa "const char *str" +.Fa "const char *delim" +.Fa "int members" +.Fa "sigset_t *set" +.Fc +.Ft char * +.Fo proc_str2sysset +.Fa "const char *str" +.Fa "const char *delim" +.Fa "int members" +.Fa "sysset_t *set" +.Fc +.Sh DESCRIPTION +The +.Fn proc_str2fltset , +.Fn proc_str2sigset , +and +.Fn proc_str2sysset +functions translate a character string, +.Fa str , +into the corresponding fault set, signal set, and system call set +respectively. +.Pp +The character string +.Fa delim +will be used as a delimiter between subsequent entries in the string +.Fa set . +The value of +.Fa members +determines whether the entries in +.Fa str +enable or disable entries in +.Fa set . +If +.Fa members +is zero, then +.Fa set +is filled in entirely and then each entry in +.Fa str +causes the corresponding entry to be disabled in +.Fa set. +If +.Fa members +is non-zero, then +.Fa set +is empty initially and for each entry in +.Fa str +the corresponding entry in +.Fa set +will be enabled. +.Pp +If an unknown entry is encountered in +.Fa str +then the conversion will fail and a pointer to the first unknown +character will be returned. +.Sh RETURN VALUES +Upon successful completion, +.Dv NULL +is returned and +.Fa set +is filled in. Otherwise, a pointer to the first unknown character is +returned and +.Sy errno +is set to indicate the error. +.Sh ERRORS +The +.Fn proc_str2fltset , +.Fn proc_str2sigset , +and +.Fn proc_str2sigset +functions will fail if: +.Bl -tag -width Er +.It Er EINVAL +.Fa str +contains an unrecognized set name. +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc_fltname 3PROC , +.Xr proc_fltset2str 3PROC , +.Xr proc_signame 3PROC , +.Xr proc_sigset2str 3PROC , +.Xr proc_str2flt 3PROC , +.Xr proc_str2sig 3PROC , +.Xr proc_str2sys 3PROC , +.Xr proc_sysname 3PROC , +.Xr proc_sysset2str 3PROC , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_unctrl_psinfo.3proc b/usr/src/man/man3proc/proc_unctrl_psinfo.3proc new file mode 100644 index 0000000000..f5bff350a6 --- /dev/null +++ b/usr/src/man/man3proc/proc_unctrl_psinfo.3proc @@ -0,0 +1,53 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_UNCTRL_PSINFO 3PROC +.Os +.Sh NAME +.Nm proc_unctrl_psinfo +.Nd fix unprintable characters in a psinfo structures +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft void +.Fo proc_unctrl_psinfo +.Fa "psinfo_t *psp" +.Fc +.Sh DESCRIPTION +The +.Fn proc_uncctrl_psinfo +function walks the process arguments of the +.Fa psp +structure (the +.Sy pr_psargs +member) converting unprintable characters into spaces. The conversion +continues until a null character is encountered. Note, this routine only +will correctly handle 7-bit ASCII characters. Characters in other +encodings, e.g. UTF-8, may be misinterpreted as unprintable. +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +with exceptions. +.Pp +Note, the +.Fn proc_unctrl_psinfo +function is +.Sy UNSAFE +if the same value for +.Fa psp +is passed in from multiple threads. +.Sh SEE ALSO +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/proc_walk.3proc b/usr/src/man/man3proc/proc_walk.3proc new file mode 100644 index 0000000000..cc9a831bec --- /dev/null +++ b/usr/src/man/man3proc/proc_walk.3proc @@ -0,0 +1,121 @@ +.\" +.\" This file and its contents are supplied under the terms of the +.\" Common Development and Distribution License ("CDDL"), version 1.0. +.\" You may only use this file in accordance with the terms of version +.\" 1.0 of the CDDL. +.\" +.\" A full copy of the text of the CDDL should have accompanied this +.\" source. A copy of the CDDL is also available via the Internet at +.\" http://www.illumos.org/license/CDDL. +.\" +.\" +.\" Copyright 2015 Joyent, Inc. +.\" +.Dd May 11, 2016 +.Dt PROC_WALK 3PROC +.Os +.Sh NAME +.Nm proc_walk +.Nd walk all processes or threads in /proc +.Sh SYNOPSIS +.Lb libproc +.In libproc.h +.Ft int +.Fo proc_walk +.Fa "proc_walk_f *func" +.Fa "void *arg" +.Fa "int flag" +.Fc +.Sh DESCRIPTION +The +.Fn proc_walk +function walks all threads and processes in /proc and calls the callback +function +.Fa func +once for each one with the user specified +.Fa arg . +The definition of the +.Sy proc_walk_f +is available in +.Xr libproc 3LIB . +.Pp +.Fa func +will be called once for each process and will always have its first +argument filled in with the value of the +.Sy psinfo +file of the process. +The value of +.Fa flag +controls whether or not information about the threads in the process are +included and how many times the callback function +.Fa func +is called. The following values may be passed in for +.Fa flag : +.Bl -tag -width Dv -offset indent +.It Dv PR_WALK_PROC +Indicates that the walker is only concerned with the process. +.Fa func +will be called once for each process in the system. Only the +.Sy psinfo +will be read for the process and passed to +.Fa func . +The second argument, the one for the +.Sy lwpsinfo_t , +will be passed as +.Dv NULL . +.It Dv PR_WALK_LWP +The caller wants both process and thread information. +.Fa func +will be called once for each thread in the system. In addition to the +process +.Sy psinfo +information, the ps specific information for a given thread will be +included in the +.Fa lwpsinfo_t +argument. +.El +.Pp +The return value of the caller's +.Fa func +function determines whether or not iteration will continue. If +.Fa func +returns a non-zero value, then iteration will terminate and that +return value will be returned to the caller. To distinguish between +system errors and caller errors, it is recommended that the function +only return positive integers in the event of an error. +.Sh RETURN VALUES +Upon successful completion, the +.Fn proc_walk +function returns +.Sy 0 . +Otherwise, +.Sy -1 +is returned and +.Sy errno +is updated to reflect the error that occurred. +.Sh ERRORS +In addition to the errors listed below, the +.Fn proc_walk +function may fail for the same reasons as the +.Xr opendir 3C , +.Xr readdir 3C , +and +.Xr malloc 3C +functions. +.Bl -tag -width Er +.It Er EINVAL +.Fa flag is not one of +.Dv PR_WALK_PROC +or +.Dv PR_WALK_LWP . +.El +.Sh INTERFACE STABILITY +.Sy Uncommitted +.Sh MT-LEVEL +.Sy MT-Safe +.Sh SEE ALSO +.Xr malloc 3C , +.Xr opendir 3C , +.Xr readdir 3C , +.Xr libproc 3LIB , +.Xr proc 4 diff --git a/usr/src/man/man3proc/ps_lgetregs.3proc b/usr/src/man/man3proc/ps_lgetregs.3proc index 6f80838005..2ae19d7ff4 100644 --- a/usr/src/man/man3proc/ps_lgetregs.3proc +++ b/usr/src/man/man3proc/ps_lgetregs.3proc @@ -54,7 +54,6 @@ in libthread_db .fi .SH DESCRIPTION -.sp .LP \fBps_lgetregs()\fR, \fBps_lsetregs()\fR, \fBps_lgetfpregs()\fR, \fBps_lsetfpregs()\fR, \fBps_lgetxregsize()\fR, \fBps_lgetxregs()\fR, @@ -64,7 +63,6 @@ in libthread_db \fIlid\fR, and \fBps_lsetregs()\fR sets them. \fBps_lgetfpregs()\fR gets the \fBLWP\fR's floating point register set, while \fBps_lsetfpregs()\fR sets it. .SS "SPARC Only" -.sp .LP \fBps_lgetxregsize()\fR,\fBps_lgetxregs()\fR, and\fBps_lsetxregs()\fR are SPARC-specific. They do not need to be defined by a controlling process on @@ -73,7 +71,6 @@ non-SPARC architecture. \fBps_lgetxregsize()\fR returns in registers. \fBps_lgetxregs()\fR gets the extra state registers, and \fBps_lsetxregs()\fR sets them. .SH RETURN VALUES -.sp .ne 2 .na \fB\fBPS_OK\fR \fR @@ -111,7 +108,6 @@ The function did not return successfully. .RE .SH ATTRIBUTES -.sp .LP See \fBattributes\fR(5) for description of the following attributes: .sp @@ -127,7 +123,6 @@ MT Level Safe .TE .SH SEE ALSO -.sp .LP \fBlibc_db\fR(3LIB), \fBproc_service\fR(3PROC), \fBattributes\fR(5), \fBthreads\fR(5) diff --git a/usr/src/man/man3proc/ps_pglobal_lookup.3proc b/usr/src/man/man3proc/ps_pglobal_lookup.3proc index 8175869cb2..664d340baf 100644 --- a/usr/src/man/man3proc/ps_pglobal_lookup.3proc +++ b/usr/src/man/man3proc/ps_pglobal_lookup.3proc @@ -25,7 +25,6 @@ the load object in the target process .fi .SH DESCRIPTION -.sp .LP \fBps_pglobal_lookup()\fR looks up the symbol \fIsym_name\fR in the symbol table of the load object \fIobject_name\fR in the target process identified by @@ -39,7 +38,6 @@ of the load object \fIobject_name\fR in the target process identified by the symbol table entry is the symbol's value as an address in the target process. .SH RETURN VALUES -.sp .ne 2 .na \fB\fBPS_OK\fR \fR @@ -67,7 +65,6 @@ The function did not return successfully. .RE .SH ATTRIBUTES -.sp .LP See \fBattributes\fR(5) for description of the following attributes: .sp @@ -83,7 +80,6 @@ MT Level Safe .TE .SH SEE ALSO -.sp .LP \fBkill\fR(2), \fBlibc_db\fR(3LIB), \fBproc_service\fR(3PROC), \fBattributes\fR(5), \fBthreads\fR(5) diff --git a/usr/src/man/man3proc/ps_pread.3proc b/usr/src/man/man3proc/ps_pread.3proc index 7769fadb25..25bae238b7 100644 --- a/usr/src/man/man3proc/ps_pread.3proc +++ b/usr/src/man/man3proc/ps_pread.3proc @@ -47,14 +47,13 @@ in libthread_db that target process memory access .fi .SH DESCRIPTION -.sp .LP -These routines copy data between the target process's address space and the -controlling process. \fBps_pread()\fR copies \fIsize\fR bytes from address -\fIaddr\fR in the target process into \fIbuf\fR in the controlling process. -\fBpr_pwrite()\fR is like \fBps_pread()\fR except that the direction of the -copy is reversed; data is copied from the controlling process to the target -process. +These routines copy data between the address space of the target process +and the controlling process. \fBps_pread()\fR copies \fIsize\fR bytes from +address \fIaddr\fR in the target process into \fIbuf\fR in the controlling +process. \fBpr_pwrite()\fR is like \fBps_pread()\fR except that the +direction of the copy is reversed; data is copied from the controlling +process to the target process. .sp .LP \fBps_pdread()\fR and \fBps_ptread()\fR behave identically to \fBps_pread()\fR. @@ -63,7 +62,6 @@ process. corresponding primary functions. They are artifacts of history that must be maintained. .SH RETURN VALUES -.sp .ne 2 .na \fB\fBPS_OK\fR\fR @@ -79,8 +77,8 @@ The call returned successfully. \fIsize\fR bytes were copied. .ad .RS 14n Some part of the address range from \fIaddr\fR through -\fIaddr\fR+\fIsize\fR\(mi\fB1\fR is not part of the target process's address -space. +\fIaddr\fR+\fIsize\fR\(mi\fB1\fR is not part of the address space of the +target process. .RE .sp @@ -93,7 +91,6 @@ The function did not return successfully. .RE .SH ATTRIBUTES -.sp .LP See \fBattributes\fR(5) for description of the following attributes: .sp @@ -109,7 +106,6 @@ MT Level Safe .TE .SH SEE ALSO -.sp .LP \fBlibc_db\fR(3LIB), \fBlibrtld_db\fR(3LIB), \fBproc_service\fR(3PROC), \fBrtld_db\fR(3EXT), \fBattributes\fR(5), \fBthreads\fR(5) diff --git a/usr/src/man/man3proc/ps_pstop.3proc b/usr/src/man/man3proc/ps_pstop.3proc index 4769e072a9..9932acb9cb 100644 --- a/usr/src/man/man3proc/ps_pstop.3proc +++ b/usr/src/man/man3proc/ps_pstop.3proc @@ -43,7 +43,6 @@ process and LWP control in libthread_db .fi .SH DESCRIPTION -.sp .LP \fBThe ps_pstop()\fR function stops the target process identified by \fIph\fR, while the \fBps_pcontinue()\fR function allows it to resume. @@ -83,7 +82,6 @@ The \fBps_kill()\fR function directs the signal \fIsignum\fR to the target process for which the handle is \fIph\fR. It has the same semantics as \fBkill\fR(2). .SH RETURN VALUES -.sp .ne 2 .na \fB\fBPS_OK\fR \fR @@ -100,7 +98,7 @@ process is stopped. .ad .RS 14n For \fBps_lstop()\fR, \fBps_lcontinue()\fR and \fBps_lrolltoaddr()\fR; there is -no \fBLWP\fR with id \fIlwipd\fR in the target process. +no \fBLWP\fR with id \fIlwpid\fR in the target process. .RE .sp @@ -113,7 +111,6 @@ The function did not return successfully. .RE .SH ATTRIBUTES -.sp .LP See \fBattributes\fR(5) for description of the following attributes: .sp @@ -129,7 +126,6 @@ MT Level Safe .TE .SH SEE ALSO -.sp .LP \fBkill\fR(2), \fBlibc_db\fR(3LIB), \fBproc_service\fR(3PROC), \fBattributes\fR(5), \fBthreads\fR(5) diff --git a/usr/src/pkg/manifests/developer-library-lint.mf b/usr/src/pkg/manifests/developer-library-lint.mf index b513373f6e..452abff215 100644 --- a/usr/src/pkg/manifests/developer-library-lint.mf +++ b/usr/src/pkg/manifests/developer-library-lint.mf @@ -74,6 +74,7 @@ file path=lib/$(ARCH64)/llib-lmd5.ln file path=lib/$(ARCH64)/llib-lnsl.ln file path=lib/$(ARCH64)/llib-lnvpair.ln file path=lib/$(ARCH64)/llib-lpam.ln +file path=lib/$(ARCH64)/llib-lproc.ln file path=lib/$(ARCH64)/llib-lpthread.ln file path=lib/$(ARCH64)/llib-lrcm.ln file path=lib/$(ARCH64)/llib-lresolv.ln @@ -156,6 +157,8 @@ file path=lib/llib-lnwam file path=lib/llib-lnwam.ln file path=lib/llib-lpam file path=lib/llib-lpam.ln +file path=lib/llib-lproc +file path=lib/llib-lproc.ln file path=lib/llib-lpthread file path=lib/llib-lpthread.ln file path=lib/llib-lrcm diff --git a/usr/src/pkg/manifests/system-header.mf b/usr/src/pkg/manifests/system-header.mf index 9cdcf6db6e..1e9a01fc0b 100644 --- a/usr/src/pkg/manifests/system-header.mf +++ b/usr/src/pkg/manifests/system-header.mf @@ -497,6 +497,7 @@ file path=usr/include/libipp.h file path=usr/include/libnvpair.h file path=usr/include/libnwam.h file path=usr/include/libpolkit/libpolkit.h +file path=usr/include/libproc.h file path=usr/include/librcm.h file path=usr/include/libscf.h file path=usr/include/libscf_priv.h diff --git a/usr/src/pkg/manifests/system-library.man3lib.inc b/usr/src/pkg/manifests/system-library.man3lib.inc index 32f4a7c62f..c552648c8f 100644 --- a/usr/src/pkg/manifests/system-library.man3lib.inc +++ b/usr/src/pkg/manifests/system-library.man3lib.inc @@ -57,6 +57,7 @@ file path=usr/share/man/man3lib/libnvpair.3lib file path=usr/share/man/man3lib/libpam.3lib file path=usr/share/man/man3lib/libpanel.3lib file path=usr/share/man/man3lib/libpkcs11.3lib +file path=usr/share/man/man3lib/libproc.3lib file path=usr/share/man/man3lib/libproject.3lib file path=usr/share/man/man3lib/libpthread.3lib file path=usr/share/man/man3lib/libresolv.3lib diff --git a/usr/src/pkg/manifests/system-library.man3proc.inc b/usr/src/pkg/manifests/system-library.man3proc.inc new file mode 100644 index 0000000000..f5f3713c01 --- /dev/null +++ b/usr/src/pkg/manifests/system-library.man3proc.inc @@ -0,0 +1,236 @@ +# +# This file and its contents are supplied under the terms of the +# Common Development and Distribution License ("CDDL"), version 1.0. +# You may only use this file in accordance with the terms of version +# 1.0 of the CDDL. +# +# A full copy of the text of the CDDL should have accompanied this +# source. A copy of the CDDL is also available via the Internet +# at http://www.illumos.org/license/CDDL. +# + +# +# Copyright 2015 Joyent, Inc. +# + + +file path=usr/share/man/man3proc/Lctlfd.3proc +file path=usr/share/man/man3proc/Lfree.3proc +file path=usr/share/man/man3proc/Lgrab_error.3proc +file path=usr/share/man/man3proc/Lgrab.3proc +file path=usr/share/man/man3proc/Lprochandle.3proc +file path=usr/share/man/man3proc/Lpsinfo.3proc +file path=usr/share/man/man3proc/Lstate.3proc +file path=usr/share/man/man3proc/Lstatus.3proc +file path=usr/share/man/man3proc/Paddr_to_ctf.3proc +file path=usr/share/man/man3proc/Paddr_to_loadobj.3proc +file path=usr/share/man/man3proc/Paddr_to_map.3proc +file path=usr/share/man/man3proc/Pasfd.3proc +file path=usr/share/man/man3proc/Pclearfault.3proc +file path=usr/share/man/man3proc/Pclearsig.3proc +file path=usr/share/man/man3proc/Pcontent.3proc +file path=usr/share/man/man3proc/Pcreate_agent.3proc +file path=usr/share/man/man3proc/Pcreate_error.3proc +file path=usr/share/man/man3proc/Pcreate.3proc +file path=usr/share/man/man3proc/Pcred.3proc +file path=usr/share/man/man3proc/Pctlfd.3proc +file path=usr/share/man/man3proc/Pdelbkpt.3proc +file path=usr/share/man/man3proc/Pdelwapt.3proc +file path=usr/share/man/man3proc/Pdestroy_agent.3proc +file path=usr/share/man/man3proc/Penv_iter.3proc +file path=usr/share/man/man3proc/Perror_printf.3proc +file path=usr/share/man/man3proc/Pexecname.3proc +file path=usr/share/man/man3proc/Pfault.3proc +file path=usr/share/man/man3proc/Pfdinfo_iter.3proc +file path=usr/share/man/man3proc/Pgcore.3proc +file path=usr/share/man/man3proc/Pgetareg.3proc +file path=usr/share/man/man3proc/Pgetauxval.3proc +file path=usr/share/man/man3proc/Pgetauxvec.3proc +file path=usr/share/man/man3proc/Pgetenv.3proc +file path=usr/share/man/man3proc/Pgrab_core.3proc +file path=usr/share/man/man3proc/Pgrab_error.3proc +file path=usr/share/man/man3proc/Pgrab_file.3proc +file path=usr/share/man/man3proc/Pgrab.3proc +file path=usr/share/man/man3proc/Pisprocdir.3proc +file path=usr/share/man/man3proc/Pissyscall.3proc +file path=usr/share/man/man3proc/Pldt.3proc +file path=usr/share/man/man3proc/Plmid.3proc +file path=usr/share/man/man3proc/Plookup_by_addr.3proc +file path=usr/share/man/man3proc/Plwp_getasrs.3proc +file path=usr/share/man/man3proc/Plwp_getgwindows.3proc +file path=usr/share/man/man3proc/Plwp_getpsinfo.3proc +file path=usr/share/man/man3proc/Plwp_getregs.3proc +file path=usr/share/man/man3proc/Plwp_getspymaster.3proc +file path=usr/share/man/man3proc/Plwp_getxregs.3proc +file path=usr/share/man/man3proc/Plwp_iter.3proc +file path=usr/share/man/man3proc/Plwp_stack.3proc +file path=usr/share/man/man3proc/Pmapping_iter.3proc +file path=usr/share/man/man3proc/Pobjname.3proc +file path=usr/share/man/man3proc/Pplatform.3proc +file path=usr/share/man/man3proc/Ppltdest.3proc +file path=usr/share/man/man3proc/Ppriv.3proc +file path=usr/share/man/man3proc/Ppsinfo.3proc +file path=usr/share/man/man3proc/pr_access.3proc +file path=usr/share/man/man3proc/pr_close.3proc +file path=usr/share/man/man3proc/pr_creat.3proc +file path=usr/share/man/man3proc/pr_door_info.3proc +file path=usr/share/man/man3proc/pr_exit.3proc +file path=usr/share/man/man3proc/pr_fcntl.3proc +file path=usr/share/man/man3proc/pr_fstatvfs.3proc +file path=usr/share/man/man3proc/pr_getitimer.3proc +file path=usr/share/man/man3proc/pr_getpeername.3proc +file path=usr/share/man/man3proc/pr_getpeerucred.3proc +file path=usr/share/man/man3proc/pr_getprojid.3proc +file path=usr/share/man/man3proc/pr_getrctl.3proc +file path=usr/share/man/man3proc/pr_getrlimit.3proc +file path=usr/share/man/man3proc/pr_getsockname.3proc +file path=usr/share/man/man3proc/pr_getsockopt.3proc +file path=usr/share/man/man3proc/pr_gettaskid.3proc +file path=usr/share/man/man3proc/pr_getzoneid.3proc +file path=usr/share/man/man3proc/pr_ioctl.3proc +file path=usr/share/man/man3proc/pr_link.3proc +file path=usr/share/man/man3proc/pr_llseek.3proc +file path=usr/share/man/man3proc/pr_lseek.3proc +file path=usr/share/man/man3proc/pr_memcntl.3proc +file path=usr/share/man/man3proc/pr_meminfo.3proc +file path=usr/share/man/man3proc/pr_mmap.3proc +file path=usr/share/man/man3proc/pr_munmap.3proc +file path=usr/share/man/man3proc/pr_open.3proc +file path=usr/share/man/man3proc/pr_processor_bind.3proc +file path=usr/share/man/man3proc/pr_rename.3proc +file path=usr/share/man/man3proc/pr_setitimer.3proc +file path=usr/share/man/man3proc/pr_setrctl.3proc +file path=usr/share/man/man3proc/pr_setrlimit.3proc +file path=usr/share/man/man3proc/pr_settaskid.3proc +file path=usr/share/man/man3proc/pr_sigaction.3proc +file path=usr/share/man/man3proc/pr_stat.3proc +file path=usr/share/man/man3proc/pr_statvfs.3proc +file path=usr/share/man/man3proc/pr_unlink.3proc +file path=usr/share/man/man3proc/pr_waitid.3proc +file path=usr/share/man/man3proc/Prd_agent.3proc +file path=usr/share/man/man3proc/Pread.3proc +file path=usr/share/man/man3proc/Prelease.3proc +file path=usr/share/man/man3proc/Preopen.3proc +file path=usr/share/man/man3proc/Preset_maps.3proc +file path=usr/share/man/man3proc/proc_arg_grab.3proc +file path=usr/share/man/man3proc/proc_arg_psinfo.3proc +file path=usr/share/man/man3proc/proc_content2str.3proc +file path=usr/share/man/man3proc/proc_fltname.3proc +file path=usr/share/man/man3proc/proc_fltset2str.3proc +file path=usr/share/man/man3proc/proc_get_auxv.3proc +file path=usr/share/man/man3proc/proc_get_cred.3proc +file path=usr/share/man/man3proc/proc_get_priv.3proc +file path=usr/share/man/man3proc/proc_get_psinfo.3proc +file path=usr/share/man/man3proc/proc_get_status.3proc +file path=usr/share/man/man3proc/proc_initstdio.3proc +file path=usr/share/man/man3proc/proc_lwp_in_set.3proc +file path=usr/share/man/man3proc/proc_str2flt.3proc +file path=usr/share/man/man3proc/proc_str2fltset.3proc +file path=usr/share/man/man3proc/proc_unctrl_psinfo.3proc +file path=usr/share/man/man3proc/proc_walk.3proc +file path=usr/share/man/man3proc/Psetbkpt.3proc +file path=usr/share/man/man3proc/Psetcred.3proc +file path=usr/share/man/man3proc/Psetfault.3proc +file path=usr/share/man/man3proc/Psetflags.3proc +file path=usr/share/man/man3proc/Psetpriv.3proc +file path=usr/share/man/man3proc/Psetrun.3proc +file path=usr/share/man/man3proc/Psetsignal.3proc +file path=usr/share/man/man3proc/Psetsysentry.3proc +file path=usr/share/man/man3proc/Psetwapt.3proc +file path=usr/share/man/man3proc/Psetzoneid.3proc +file path=usr/share/man/man3proc/Psignal.3proc +file path=usr/share/man/man3proc/Pstack_iter.3proc +file path=usr/share/man/man3proc/Pstate.3proc +file path=usr/share/man/man3proc/Pstatus.3proc +file path=usr/share/man/man3proc/Pstopstatus.3proc +file path=usr/share/man/man3proc/Psymbol_iter.3proc +file path=usr/share/man/man3proc/Psync.3proc +file path=usr/share/man/man3proc/Psysentry.3proc +file path=usr/share/man/man3proc/Puname.3proc +file path=usr/share/man/man3proc/Pupdate_maps.3proc +file path=usr/share/man/man3proc/Pupdate_syms.3proc +file path=usr/share/man/man3proc/Pwrite.3proc +file path=usr/share/man/man3proc/Pxecbkpt.3proc +file path=usr/share/man/man3proc/Pzonename.3proc +link path=usr/share/man/man3proc/Lalt_stack.3proc target=Plwp_stack.3proc +link path=usr/share/man/man3proc/Lclearfault.3proc target=Pclearfault.3proc +link path=usr/share/man/man3proc/Lclearsig.3proc target=Pclearsig.3proc +link path=usr/share/man/man3proc/Ldstop.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Lgetareg.3proc target=Pgetareg.3proc +link path=usr/share/man/man3proc/Lmain_stack.3proc target=Plwp_stack.3proc +link path=usr/share/man/man3proc/Lputareg.3proc target=Pgetareg.3proc +link path=usr/share/man/man3proc/Lsetrun.3proc target=Psetrun.3proc +link path=usr/share/man/man3proc/Lstack.3proc target=Plwp_stack.3proc +link path=usr/share/man/man3proc/Lstop.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Lsync.3proc target=Psync.3proc +link path=usr/share/man/man3proc/Lwait.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Lxecbkpt.3proc target=Pxecbkpt.3proc +link path=usr/share/man/man3proc/Lxecwapt.3proc target=Pxecbkpt.3proc +link path=usr/share/man/man3proc/Paddr_to_text_map.3proc target=Paddr_to_map.3proc +link path=usr/share/man/man3proc/Pcreate_callback.3proc target=Pcreate.3proc +link path=usr/share/man/man3proc/Pdstop.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Pfgcore.3proc target=Pgcore.3proc +link path=usr/share/man/man3proc/Pfgrab_core.3proc target=Pgrab_core.3proc +link path=usr/share/man/man3proc/Pfree.3proc target=Prelease.3proc +link path=usr/share/man/man3proc/Pissyscall_prev.3proc target=Pissyscall.3proc +link path=usr/share/man/man3proc/Plmid_to_ctf.3proc target=Paddr_to_ctf.3proc +link path=usr/share/man/man3proc/Plmid_to_loadobj.3proc target=Paddr_to_loadobj.3proc +link path=usr/share/man/man3proc/Plmid_to_map.3proc target=Paddr_to_map.3proc +link path=usr/share/man/man3proc/Plookup_by_name.3proc target=Plookup_by_addr.3proc +link path=usr/share/man/man3proc/Plwp_alt_stack.3proc target=Plwp_stack.3proc +link path=usr/share/man/man3proc/Plwp_getfpregs.3proc target=Plwp_getregs.3proc +link path=usr/share/man/man3proc/Plwp_iter_all.3proc target=Plwp_iter.3proc +link path=usr/share/man/man3proc/Plwp_main_stack.3proc target=Plwp_stack.3proc +link path=usr/share/man/man3proc/Plwp_setasrs.3proc target=Plwp_getasrs.3proc +link path=usr/share/man/man3proc/Plwp_setfpregs.3proc target=Plwp_getregs.3proc +link path=usr/share/man/man3proc/Plwp_setregs.3proc target=Plwp_getregs.3proc +link path=usr/share/man/man3proc/Plwp_setxregs.3proc target=Plwp_getxregs.3proc +link path=usr/share/man/man3proc/Pmapping_iter_resolved.3proc target=Pmapping_iter.3proc +link path=usr/share/man/man3proc/Pname_to_ctf.3proc target=Paddr_to_ctf.3proc +link path=usr/share/man/man3proc/Pname_to_loadobj.3proc target=Paddr_to_loadobj.3proc +link path=usr/share/man/man3proc/Pname_to_map.3proc target=Paddr_to_map.3proc +link path=usr/share/man/man3proc/Pobject_iter_resolved.3proc target=Pmapping_iter.3proc +link path=usr/share/man/man3proc/Pobject_iter.3proc target=Pmapping_iter.3proc +link path=usr/share/man/man3proc/Pobjname_resolved.3proc target=Pobjname.3proc +link path=usr/share/man/man3proc/Ppriv_free.3proc target=Ppriv.3proc +link path=usr/share/man/man3proc/Pputareg.3proc target=Pgetareg.3proc +link path=usr/share/man/man3proc/pr_fstat.3proc target=pr_stat.3proc +link path=usr/share/man/man3proc/pr_fstat64.3proc target=pr_stat.3proc +link path=usr/share/man/man3proc/pr_getrlimit64.3proc target=pr_getrlimit.3proc +link path=usr/share/man/man3proc/pr_lstat.3proc target=pr_stat.3proc +link path=usr/share/man/man3proc/pr_lstat64.3proc target=pr_stat.3proc +link path=usr/share/man/man3proc/pr_setrlimit64.3proc target=pr_setrlimit.3proc +link path=usr/share/man/man3proc/pr_stat64.3proc target=pr_stat.3proc +link path=usr/share/man/man3proc/Pread_string.3proc target=Pread.3proc +link path=usr/share/man/man3proc/proc_arg_xgrab.3proc target=proc_arg_grab.3proc +link path=usr/share/man/man3proc/proc_arg_xpsinfo.3proc target=proc_arg_psinfo.3proc +link path=usr/share/man/man3proc/proc_finistdio.3proc target=proc_initstdio.3proc +link path=usr/share/man/man3proc/proc_flushstdio.3proc target=proc_initstdio.3proc +link path=usr/share/man/man3proc/proc_free_priv.3proc target=proc_get_priv.3proc +link path=usr/share/man/man3proc/proc_get_ldt.3proc target=Pldt.3proc +link path=usr/share/man/man3proc/proc_lwp_range_valid.3proc target=proc_lwp_in_set.3proc +link path=usr/share/man/man3proc/proc_signame.3proc target=proc_fltname.3proc +link path=usr/share/man/man3proc/proc_sigset2str.3proc target=proc_fltset2str.3proc +link path=usr/share/man/man3proc/proc_str2content.3proc target=proc_content2str.3proc +link path=usr/share/man/man3proc/proc_str2sig.3proc target=proc_str2flt.3proc +link path=usr/share/man/man3proc/proc_str2sigset.3proc target=proc_str2fltset.3proc +link path=usr/share/man/man3proc/proc_str2sys.3proc target=proc_str2flt.3proc +link path=usr/share/man/man3proc/proc_str2sysset.3proc target=proc_str2fltset.3proc +link path=usr/share/man/man3proc/proc_sysname.3proc target=proc_fltname.3proc +link path=usr/share/man/man3proc/proc_sysset2str.3proc target=proc_fltset2str.3proc +link path=usr/share/man/man3proc/Psetsysexit.3proc target=Psetsysentry.3proc +link path=usr/share/man/man3proc/Pstop.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Psymbol_iter_by_addr.3proc target=Psymbol_iter.3proc +link path=usr/share/man/man3proc/Psymbol_iter_by_lmid.3proc target=Psymbol_iter.3proc +link path=usr/share/man/man3proc/Psymbol_iter_by_name.3proc target=Psymbol_iter.3proc +link path=usr/share/man/man3proc/Psysexit.3proc target=Psysentry.3proc +link path=usr/share/man/man3proc/Punsetflags.3proc target=Psetflags.3proc +link path=usr/share/man/man3proc/Pwait.3proc target=Pstopstatus.3proc +link path=usr/share/man/man3proc/Pxcreate.3proc target=Pcreate.3proc +link path=usr/share/man/man3proc/Pxecwapt.3proc target=Pxecbkpt.3proc +link path=usr/share/man/man3proc/Pxlookup_by_addr_resolved.3proc target=Plookup_by_addr.3proc +link path=usr/share/man/man3proc/Pxlookup_by_addr.3proc target=Plookup_by_addr.3proc +link path=usr/share/man/man3proc/Pxlookup_by_name.3proc target=Plookup_by_addr.3proc +link path=usr/share/man/man3proc/Pxsymbol_iter.3proc target=Psymbol_iter.3proc +link path=usr/share/man/man3proc/Pzonepath.3proc target=Pzonename.3proc +link path=usr/share/man/man3proc/Pzoneroot.3proc target=Pzonename.3proc diff --git a/usr/src/pkg/manifests/system-library.mf b/usr/src/pkg/manifests/system-library.mf index e468a18091..1842a62f06 100644 --- a/usr/src/pkg/manifests/system-library.mf +++ b/usr/src/pkg/manifests/system-library.mf @@ -54,6 +54,7 @@ <include system-library.man3nsl.inc> <include system-library.man3nvpair.inc> <include system-library.man3pam.inc> +<include system-library.man3proc.inc> <include system-library.man3scf.inc> <include system-library.man3sec.inc> <include system-library.man3secdb.inc> |