Museum

Home

Lab Overview

Retrotechnology Articles

⇒ Online Manual

Media Vault

Software Library

Restoration Projects

Artifacts Sought

Related Articles

kill(2)

libthread(3T)

libthread_db(3T)

proc_service(3T)

libthread_db(4)

attributes(5)

ps_pstop(3T)

NAME

ps_pstop, ps_pcontinue, ps_lstop, ps_lcontinue, ps_lrolltoaddr, ps_kill − process and LWP control in libthread_db

SYNOPSIS

#include <proc_service.h>

ps_err_e ps_pstop(const struct ps_prochandle ∗ph)

ps_err_e ps_pcontinue(const struct ps_prochandle ∗ph)

ps_err_e ps_lstop(const struct ps_prochandle ∗ph, lwpid_t lwpid)

ps_err_e ps_lcontinue(const struct ps_prochandle ∗ph, lwpid_t lwpid)

ps_err_e ps_lrolltoaddr(const struct ps_prochandle ∗ph,

lwpid_t lwpid, psaddr_t go_addr, psaddr_t stop_addr)

ps_err_e ps_kill(const struct ps_prochandle ∗ph, int signum)

DESCRIPTION

ps_pstop() stops the target process identified by ph, while ps_pcontinue() allows it to resume. 

libthread_db uses ps_pstop() to freeze the target process while it is under inspection.  Within the scope of any single call from outside libthread_db to a libthread_db routine, libthread_db will call ps_pstop(), at most once.  If it does, it will call ps_pcontinue() within the scope of the same routine. 

The controlling process may already have stopped the target process when it calls libthread_db.  In that case, it is not obligated to resume the target process when libthread_db calls ps_pcontinue().  In other words, ps_pstop() is mandatory, while ps_pcontinue() is advisory.  After ps_pstop(), the target process must be stopped; after ps_pcontinue(), the target process may be running. 

ps_lstop() and ps_lcontinue() stop and resume a single lightweight process ( LWP ) within the target process ph.  They are not currently used by libthread_db. 

ps_lrolltoaddr() is used to roll an LWP forward out of a critical section when the process is stopped. It is also used to run the libthread_db agent thread on behalf of libthread.  ps_lrolltoaddr() is always called with the target process stopped, that is, there has been a preceding call to ps_pstop().  The specified LWP must be continued at the address go_addr, or at its current address if go_addr is NULL. It should then be stopped when its execution reaches stop_addr.  This routine does not return until the LWP has stopped at stop_addr. 

ps_kill() directs the signal signum to the target process for which the handle is ph. ps_kill() has the same semantics as kill(2). 

RETURN VALUES

PS_OK The call completed successfully. In the case of ps_pstop, the target process is stopped. 

PS_BADLID For ps_lstop and ps_lcontinue only: there is no LWP with id lwipd in the target process. 

PS_ERR The function did not return successfully. 

ATTRIBUTES

See attributes(5) for description of the following attributes:

ATTRIBUTE TYPE ATTRIBUTE VALUE
MT Level Safe

SEE ALSO

kill(2), libthread(3T), libthread_db(3T), proc_service(3T), libthread_db(4), attributes(5)

SunOS 5.6  —  Last change: 4 Feb 1997

Typewritten Software • bear@typewritten.org • Edmonds, WA 98026