Unix/Linux Go Back    


NetBSD 6.1.5 - man page for ras_fork (netbsd section 9)

Linux & Unix Commands - Search Man Pages
Man Page or Keyword Search:   man
Select Man Page Set:       apropos Keyword Search (sections above)


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 checking the set of restartable atomic sequences
     registered for a process during cpu_switchto(9).  If a process is found to have been pre-
     empted 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 dis-
     cussed in this page and a machine-dependent component in cpu_switchto(9).	A port which sup-
     ports restartable atomic sequences will define __HAVE_RAS in <machine/types.h> for machine-
     independent 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 registered 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 struc-
     tures and function prototypes for the framework are located in <sys/ras.h>.  Machine-depen-
     dent 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
Unix & Linux Commands & Man Pages : ©2000 - 2018 Unix and Linux Forums


All times are GMT -4. The time now is 07:00 PM.