Mercurial > ecos
annotate packages/hal/common/current/include/dbg-threads-api.h @ 156:b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
| author | jlarmour |
|---|---|
| date | Fri, 06 Apr 2001 17:20:13 +0000 |
| parents | 5a0cc6c243a9 |
| children | e0c0827131d1 |
| rev | line source |
|---|---|
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
1 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
2 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
3 // dbg-threads-api.h |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
4 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
5 // Supports thread-aware debugging |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
6 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
7 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
8 //####COPYRIGHTBEGIN#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
9 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
10 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
11 // The contents of this file are subject to the Red Hat eCos Public License |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
12 // Version 1.1 (the "License"); you may not use this file except in |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
13 // compliance with the License. You may obtain a copy of the License at |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
14 // http://www.redhat.com/ |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
15 // |
|
66
bf00f99aec69
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
jlarmour
parents:
64
diff
changeset
|
16 // Software distributed under the License is distributed on an "AS IS" |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
17 // basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
18 // License for the specific language governing rights and limitations under |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
19 // the License. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
20 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
21 // The Original Code is eCos - Embedded Configurable Operating System, |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
22 // released September 30, 1998. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
23 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
24 // The Initial Developer of the Original Code is Red Hat. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
25 // Portions created by Red Hat are |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
26 // Copyright (C) 1998, 1999, 2000 Red Hat, Inc. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
27 // All Rights Reserved. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
28 // ------------------------------------------- |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
29 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
30 //####COPYRIGHTEND#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
31 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
32 //#####DESCRIPTIONBEGIN#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
33 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
34 // Author(s): Red Hat, nickg |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
35 // Contributors: Red Hat, nickg |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
36 // Date: 1998-08-25 |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
37 // Purpose: |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
38 // Description: These are the calls used to extract operating system |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
39 // specific information used in supporting thread aware |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
40 // debugging. The Operating Environment being debugged |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
41 // needs to supply these functions. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
42 // Usage: This header is not to be included by user code. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
43 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
44 //####DESCRIPTIONEND#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
45 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
46 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
47 |
| 0 | 48 #if !defined(DBG_THREADS_API_INCLUDED) |
| 49 #define DBG_THREADS_API_INCLUDED 1 | |
| 50 | |
| 2 | 51 #include <cyg/infra/cyg_type.h> /* externC */ |
| 52 | |
| 0 | 53 #define has_thread_void 0 |
| 54 #define has_thread_current 1 | |
| 55 #define has_thread_registers 2 | |
| 56 #define has_thread_reg_change 4 | |
| 57 #define has_thread_list 8 | |
| 58 #define has_thread_info 16 | |
| 59 | |
| 60 typedef unsigned char threadref[8] ; | |
| 61 | |
| 62 struct dbg_capabilities | |
| 63 { | |
| 64 unsigned long mask1 ; | |
| 65 } ; | |
| 66 | |
| 67 | |
| 68 /* fill in the list of thread aware capabilities */ | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
69 externC int dbg_thread_capabilities(struct dbg_capabilities * cbp) ; |
| 0 | 70 |
| 71 | |
| 72 /* Fillin the identifier of the current thread */ | |
| 73 /* return 1 if defined, 0 if not defined */ | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
74 externC int dbg_currthread(threadref * varparm) ; |
| 0 | 75 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
76 /* Return the unique ID number of a given thread. */ |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
77 /* Return 0 if not valid. */ |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
78 externC int dbg_thread_id(threadref *threadid); |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
79 |
| 0 | 80 /* Return the unique ID number of the current thread. */ |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
81 externC int dbg_currthread_id(void); |
| 0 | 82 |
| 83 /* get the first or next member of the list of known threads */ | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
84 externC int dbg_threadlist(int startflag, |
|
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
85 threadref * lastthreadid, |
|
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
86 threadref * next_thread |
|
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
87 ) ; |
| 0 | 88 |
| 89 /* return 1 if next_threadid has been filled in with a value */ | |
| 90 /* return 0 if there are none or no more */ | |
| 91 | |
| 92 /* The O.S can fill in the following information about a thread when queried. | |
| 93 The structure of thise strings is determined by the O.S. | |
| 94 It is display oriented, so figure out what the users need to see. | |
| 95 Nulls are OK but GDB will fill some not so meaningful data. | |
| 96 These pointers may be in the calles private structures, the info will | |
| 97 get copied immediatly after the call to retreive it. | |
| 98 */ | |
| 99 struct cygmon_thread_debug_info | |
| 100 { | |
| 101 threadref thread_id ; | |
| 102 int context_exists ; /* To the point where examining its state, | |
| 2 | 103 registers and stack makes sense to GDB */ |
| 0 | 104 char * thread_display ; /* As shown in thread status window, name, state */ |
| 105 char * unique_thread_name ; /* human readable identifier, window label */ | |
| 106 char * more_display ; /* more detailed info about thread. | |
| 2 | 107 priority, queuedepth, state, stack usage, statistics */ |
| 0 | 108 } ; |
| 109 | |
| 110 | |
| 111 | |
| 112 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
113 externC int dbg_threadinfo( |
| 2 | 114 threadref * threadid, |
| 115 struct cygmon_thread_debug_info * info) ; | |
| 0 | 116 |
| 117 /* Return 1 if threadid is defined and info copied, 0 otherwise */ | |
| 118 | |
| 119 /* The O.S should fillin the array of registers using values from the | |
| 120 saves context. The array MUST be in GDB register save order even if | |
| 121 the saved context is different or smaller. Do not alter the values of | |
| 122 registers which are NOT in the O.S. thread context. Their default values | |
| 123 have already been assigned. | |
| 124 */ | |
| 125 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
126 externC int dbg_getthreadreg( |
| 2 | 127 threadref * osthreadid, |
| 128 int regcount, /* count of registers in the array */ | |
| 129 void * regval) ; /* fillin this array */ | |
| 0 | 130 |
| 131 | |
| 132 /* The O.S. should scan through this list of registers which are in | |
| 133 GDB order and the O.S. should replace the values of all registers | |
| 134 which are defined in the saved context of thread or process identified | |
| 135 by osthreadid. Return 0 if the threadis does not map to a known | |
| 136 process or other error. Return 1 if the setting is successful. */ | |
| 137 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
138 externC int dbg_setthreadreg( |
| 2 | 139 threadref * osthreadid, |
| 140 int regcount , /* number of registers */ | |
| 141 void * regval) ; | |
| 142 | |
| 143 /* Control over OS scheduler. With the scheduler locked it should not | |
| 144 perform any rescheduling in response to interrupts. */ | |
| 145 externC int dbg_scheduler( | |
| 146 threadref * osthreadid, | |
| 147 int lock, /* 0 == unlock, 1 == lock */ | |
| 148 int mode); /* 0 == step, 1 == continue */ | |
| 149 | |
| 150 | |
| 0 | 151 |
| 152 #endif /* DBG_THREADS_API_INCLUDED */ |
