2 * Copyright (c) 1996 Barton P. Miller
4 * We provide the Paradyn Parallel Performance Tools (below
5 * described as Paradyn") on an AS IS basis, and do not warrant its
6 * validity or performance. We reserve the right to update, modify,
7 * or discontinue this software at any time. We shall have no
8 * obligation to supply such updates or modifications or any other
9 * form of support to you.
11 * This license is for research uses. For such uses, there is no
12 * charge. We define "research use" to mean you may freely use it
13 * inside your organization for whatever purposes you see fit. But you
14 * may not re-distribute Paradyn or parts of Paradyn, in any form
15 * source or binary (including derivatives), electronic or otherwise,
16 * to any other organization or entity without our permission.
18 * (for other uses, please contact us at paradyn@cs.wisc.edu)
20 * All warranties, including without limitation, any warranty of
21 * merchantability or fitness for a particular purpose, are hereby
24 * By your use of Paradyn, you understand and agree that we (or any
25 * other person or entity with proprietary rights in Paradyn) are
26 * under no obligation to provide either maintenance services,
27 * update services, notices of latent defects, or correction of
28 * defects for Paradyn.
30 * Even if advised of the possibility of such damages, under no
31 * circumstances shall we (or any other person or entity with
32 * proprietary rights in the software licensed hereunder) be liable
33 * to you or any third party for direct, indirect, or consequential
34 * damages of any character regardless of type of action, including,
35 * without limitation, loss of profits, loss of use, loss of good
36 * will, or computer failure or malfunction. You agree to indemnify
37 * us (and any other person or entity with proprietary rights in the
38 * software licensed hereunder) for any and all liability it may
39 * incur to third parties resulting from your use of Paradyn.
42 * $Log: BPatch_thread.h,v $
43 * Revision 1.1 1997/03/18 19:43:37 buck
44 * first commit of dyninst library. Also includes:
45 * moving templates from paradynd to dyninstAPI
46 * converting showError into a function (in showerror.C)
47 * many ifdefs for BPATCH_LIBRARY in dyinstAPI/src.
52 #ifndef _BPatch_thread_h_
53 #define _BPatch_thread_h_
55 #include "BPatch_Vector.h"
56 #include "BPatch_image.h"
57 #include "BPatch_snippet.h"
62 * Used to specify whether a snippet is to be called before the instructions
63 * at the point where it is inserted, or after.
72 * Used to specify whether a snippet should be installed before other snippets
73 * that have previously been inserted at the same point, or after.
78 } BPatch_snippetOrder;
82 friend bool pollForStatusChange();
84 static BPatch_Vector<BPatch_thread*> threadVec;
86 static BPatch_thread *pidToThread(int pid);
87 static bool lib_inited;
96 BPatch_thread(char *path, char *argv[], char *envp[] = NULL);
97 BPatch_thread(char *path, int pid);
100 BPatch_image *getImage() { return image; }
102 bool stopExecution();
103 bool continueExecution();
104 bool terminateExecution();
110 bool dumpCore(const char *file, bool terminate);
112 BPatch_variableExpr *malloc(int n);
113 BPatch_variableExpr *malloc(const BPatch_type &type);
114 void free(const BPatch_variableExpr &ptr);
116 bool insertSnippet(const BPatch_snippet &expr,
117 const BPatch_point &point,
118 BPatch_callWhen when = BPatch_callBefore,
119 BPatch_snippetOrder order = BPatch_firstSnippet);
120 bool insertSnippet(const BPatch_snippet &expr,
121 const BPatch_Vector<BPatch_point *> &points,
122 BPatch_callWhen when = BPatch_callBefore,
123 BPatch_snippetOrder order = BPatch_firstSnippet);
126 extern bool pollForStatusChange();
128 #endif /* BPatch_thread_h_ */