/*
Copyright (c) 1993 Xerox Corporation. All rights reserved.
*/
/*
$Id$
$Date$
*
* PCR Debugger public interface.
*/
#ifndef ←←PCR←Dbg←h
#define ←←PCR←Dbg←h 1
#include <config/PCR←StdDefs.h>
#include <th/PCR←Th.h>
/*
* Debugger client (debuggee)
*/
extern long
PCR←Dbg←Call(PCR←Any key, PCR←Any arg);
/*
Invoke the debugger.
The value of key identifies the (real) type of arg.
Caller is suspended in such a way that its state may be examined
(or even modified) by the debugger.
*/
/*
* Debugger
*/
struct PCR←Dbg←CallInfoRep {
PCR←Th←T *ci←t;
PCR←Any ci←key;
PCR←Any ci←arg;
};
typedef struct PCR←Dbg←CallInfoRep PCR←Dbg←CallInfo;
extern PCR←ERes
PCR←Dbg←AwaitCall(
PCR←Dbg←CallInfo **cip,
const PCR←sigset←t *sigMask,
PCR←Msec wakeup
);
/*
Wait for a thread to call debugger, fill in *cip.
Success:
PCR←ERes←okay
Failure:
PCR←ETIMEDOUT
*/
extern PCR←ERes
PCR←Dbg←Restart(PCR←Dbg←CallInfo *ci, long ans);
/*
Restart the debuggee represented by ci, returning ans as the
result of his invocation of PCR←Dbg←Call.
The callinfo ci must have been acquired using PCR←Dbg←AwaitCall.
*/
#endif /* ! ←←PCR←Dbg←h */
/*
$Log$
*/