CPU_COREDUMP(9) BSD Kernel Developer's Manual CPU_COREDUMP(9)NAME
cpu_coredump -- machine-dependent process core dump interface
SYNOPSIS
#include <sys/signalvar.h>
int
cpu_coredump(struct lwp *l, void *iocookie, struct core *chdr);
int
cpu_coredump32(struct lwp *l, void *iocookie, struct core32 *chdr);
DESCRIPTION
cpu_coredump() is the machine-dependent interface invoked by machine-independent code to dump the machine-dependent header information at the
start of a process core dump. The header information primarily consists of the CPU and floating-point registers. l is the lwp structure of
the thread being dumped. iocookie is an opaque pointer to be passed to coredump_write(). Information about the machine-dependent header
sections are returned in chdr.
cpu_coredump() returns 0 on success and an appropriate error code on failure.
CODE REFERENCES
Process core dumps are initiated within the file sys/kern/kern_sig.c. Process core dumps for ELF NetBSD binaries are performed within the
files sys/kern/core_elf32.c or sys/kern/core_elf64.c. Process core dumps for other NetBSD binaries are performed within the file
sys/kern/core_netbsd.c.
SEE ALSO coredump_write(9)BSD December 24, 2005 BSD
Check Out this Related Man Page
RAS(9) BSD Kernel Developer's Manual RAS(9)NAME
ras_lookup, ras_fork, ras_purgeall -- restartable atomic sequences
SYNOPSIS
#include <sys/types.h>
#include <sys/proc.h>
#include <sys/ras.h>
void *
ras_lookup(struct proc *p, void *addr);
int
ras_fork(struct proc *p1, struct proc *p2);
int
ras_purgeall(struct proc *p);
DESCRIPTION
Restartable atomic sequences are user code sequences which are guaranteed to execute without preemption. This property is assured by check-
ing the set of restartable atomic sequences registered for a process during cpu_switchto(9). If a process is found to have been preempted
during a restartable sequence, then its execution is rolled-back to the start of the sequence by resetting its program counter saved in its
process control block (PCB).
The RAS functionality is provided by a combination of the machine-independent routines discussed in this page and a machine-dependent compo-
nent in cpu_switchto(9). A port which supports restartable atomic sequences will define __HAVE_RAS in <machine/types.h> for machine-indepen-
dent code to conditionally provide RAS support.
A complicated side-effect of restartable atomic sequences is their interaction with the machine-dependent ptrace(2) support. Specifically,
single-step traps and/or the emulation of single-stepping must carefully consider the effect on restartable atomic sequences. A general
solution is to ignore these traps or disable them within restartable atomic sequences.
FUNCTIONS
The functions which operate on restartable atomic sequences are:
ras_lookup(p, addr)
This function searches the registered restartable atomic sequences for process p which contain the user address addr. If the
address addr is found within a RAS, then the restart address of the RAS is returned, otherwise -1 is returned.
ras_fork(p1, p2)
This function is used to copy all registered restartable atomic sequences for process p1 to process p2. It is primarily called from
fork1(9) when the sequences are inherited from the parent by the child.
ras_purgeall(p)
This function is used to remove all registered restartable atomic sequences for process p. It is primarily used to remove all reg-
istered restartable atomic sequences for a process during exec(3) and by rasctl(2).
CODE REFERENCES
The RAS framework itself is implemented within the file sys/kern/kern_ras.c. Data structures and function prototypes for the framework are
located in <sys/ras.h>. Machine-dependent portions are implemented within cpu_switchto(9) in the machine-dependent file
sys/arch/<arch>/<arch>/locore.S.
SEE ALSO rasctl(2), cpu_switchto(9), fork1(9)
Gregory McGarry, "An Implementation of User-level Restartable Atomic Sequences on the NetBSD Operating System", Proceedings of the FREENIX
Track: 2003 USENIX Annual Technical Conference, USENIX Association,
http://www.usenix.org/publications/library/proceedings/usenix03/tech/freenix03/full_papers/mcgarry/mcgarry.pdf, 311-322, June 9-14, 2003.
HISTORY
The RAS functionality first appeared in NetBSD 2.0.
BSD April 17, 2010 BSD