/* 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$ */