te
Copyright (c) 2007 by 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]
PROC_SERVICE 3PROC "Jan 23, 2023"
NAME
proc_service - process service interfaces
SYNOPSIS
#include <proc_service.h>

ps_err_e ps_pdmodel(struct ps_prochandle *ph,
 int *data_model);

ps_err_e ps_pglobal_lookup(struct ps_prochandle *ph,
 const char *object_name, const char *sym_name,
 psaddr_t *sym_addr);

ps_err_e ps_pglobal_sym(struct ps_prochandle *ph,
 const char *object_name, const char *sym_name,
 ps_sym_t *sym);

ps_err_e ps_pread(struct ps_prochandle *ph, psaddr_t addr,
 void *buf, size_t size);

ps_err_e ps_pwrite(struct ps_prochandle *ph, psaddr_t addr,
 const void *buf, size_t size);

ps_err_e ps_pdread(struct ps_prochandle *ph, psaddr_t addr,
 void *buf, size_t size);

ps_err_e ps_pdwrite(struct ps_prochandle *ph, psaddr_t addr,
 const void *buf, size_t size);

ps_err_e ps_ptread(struct ps_prochandle *ph, psaddr_t addr,
 void *buf, size_t size);

ps_err_e ps_ptwrite(struct ps_prochandle *ph, psaddr_t addr,
 const void *buf, size_t size);

ps_err_e ps_pstop(struct ps_prochandle *ph);

ps_err_e ps_pcontinue(struct ps_prochandle *ph);

ps_err_e ps_lstop(struct ps_prochandle *ph, lwpid_t lwpid);

ps_err_e ps_lcontinue(struct ps_prochandle *ph, lwpid_t lwpid);

ps_err_e ps_lgetregs(struct ps_prochandle *ph, lwpid_t lwpid,
 prgregset_t gregset);

ps_err_e ps_lsetregs(struct ps_prochandle *ph, lwpid_t lwpid,
 const prgregset_t gregset);

ps_err_e ps_lgetfpregs(struct ps_prochandle *ph, lwpid_t lwpid,
 prfpregset_t *fpregset);

ps_err_e ps_lsetfpregs(struct ps_prochandle *ph, lwpid_t lwpid,
 const prfpregset_t *fpregset);

ps_err_e ps_pauxv(struct ps_prochandle *ph,
 const auxv_t **auxp);

ps_err_e ps_kill(struct ps_prochandle *ph, int sig);

ps_err_e ps_lrolltoaddr(struct ps_prochandle *ph,
 lwpid_t lwpid, psaddr_t go_addr, psaddr_t stop_addr);

void ps_plog(const char *fmt);

ps_err_e ps_lgetxregsize(struct ps_prochandle *ph,
 lwpid_t lwpid, int *xregsize);

ps_err_e ps_lgetxregs(struct ps_prochandle *ph,
 lwpid_t lwpid, caddr_t xregset);

ps_err_e ps_lsetxregs(struct ps_prochandle *ph,
 lwpid_t lwpid, caddr_t xregset);
"x86"
ps_err_e ps_lgetLDT(struct ps_prochandle *ph, lwpid_t lwpid,
 struct ssd *ldt);
DESCRIPTION
Every program that links libthread_db or librtld_db must provide a set of process control primitives that allow libthread_db and librtld_db to access memory and registers in the target process, to start and to stop the target process, and to look up symbols in the target process. See libc_db(3LIB). For information on librtld_db, refer to the Linker and Libraries Guide.

Refer to the individual reference manual pages that describe these routines for a functional specification that clients of libthread_db and librtld_db can use to implement this required interface. The <proc_service.h> header lists the C declarations of these routines.

FUNCTIONS
ps_pdmodel()

Returns the data model of the target process.

ps_pglobal_lookup()

Looks up the symbol in the symbol table of the load object in the target process and returns its address.

ps_pglobal_sym()

Looks up the symbol in the symbol table of the load object in the target process and returns its symbol table entry.

ps_pread()

Copies size bytes from the target process to the controlling process.

ps_pwrite()

Copies size bytes from the controlling process to the target process.

ps_pdread()

Identical to ps_pread().

ps_pdwrite()

Identical to ps_pwrite().

ps_ptread()

Identical to ps_pread().

ps_ptwrite()

Identical to ps_pwrite().

ps_pstop()

Stops the target process.

ps_pcontinue()

Resumes target process.

ps_lstop()

Stops a single lightweight process ( LWP ) within the target process.

ps_lcontinue()

Resumes a single LWP within the target process.

ps_lgetregs()

Gets the general registers of the LWP.

ps_lsetregs()

Sets the general registers of the LWP.

ps_lgetfpregs()

Gets the LWP`s floating point register set.

ps_lsetfpregs()

Sets the LWP`s floating point register set.

ps_pauxv()

Returns a pointer to a read-only copy of the auxiliary vector of the target process.

ps_kill()

Sends signal to target process.

ps_lrolltoaddr()

Rolls the LWP out of a critical section when the process is stopped.

ps_plog()

Logs a message.

ps_lgetxregsize()

Returns the size of the architecture-dependent extra state registers.

ps_lgetxregs()

Gets the extra state registers of the LWP.

ps_lsetxregs()

Sets the extra state registers of the LWP.

"x86"
ps_lgetLDT()

Reads the local descriptor table of the LWP.

ATTRIBUTES
See attributes(7) for description of the following attributes:
ATTRIBUTE TYPE ATTRIBUTE VALUE
MT Level Safe
SEE ALSO
rtld_db (3EXT), libc_db (3LIB), librtld_db (3LIB), ps_pread (3PROC), attributes (7)

Linker and Libraries Guide