Mercurial > ecos
annotate packages/hal/common/current/include/dbg-threads-api.h @ 208:e0c0827131d1 ecos
Merge from eCos master repository on 2002-05-20-20:11:54-BST
| author | jlarmour |
|---|---|
| date | Mon, 20 May 2002 22:19:26 +0000 |
| parents | b939e9cada46 |
| children | d2c90368aeef |
| 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 //======================================================================== |
|
208
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
8 //####ECOSGPLCOPYRIGHTBEGIN#### |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
9 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
10 // This file is part of eCos, the Embedded Configurable Operating System. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
11 // Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
12 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
13 // eCos is free software; you can redistribute it and/or modify it under |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
14 // the terms of the GNU General Public License as published by the Free |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
15 // Software Foundation; either version 2 or (at your option) any later version. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
16 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
17 // eCos is distributed in the hope that it will be useful, but WITHOUT ANY |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
18 // WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
19 // FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
20 // for more details. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
21 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
22 // You should have received a copy of the GNU General Public License along |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
23 // with eCos; if not, write to the Free Software Foundation, Inc., |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
24 // 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
25 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
26 // As a special exception, if other files instantiate templates or use macros |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
27 // or inline functions from this file, or you compile this file and link it |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
28 // with other works to produce a work based on this file, this file does not |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
29 // by itself cause the resulting work to be covered by the GNU General Public |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
30 // License. However the source code for this file must still be made available |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
31 // in accordance with section (3) of the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
32 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
33 // This exception does not invalidate any other reasons why a work based on |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
34 // this file might be covered by the GNU General Public License. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
35 // |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
36 // Alternative licenses for eCos may be arranged by contacting Red Hat, Inc. |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
37 // at http://sources.redhat.com/ecos/ecos-license |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
38 // ------------------------------------------- |
|
e0c0827131d1
Merge from eCos master repository on 2002-05-20-20:11:54-BST
jlarmour
parents:
156
diff
changeset
|
39 //####ECOSGPLCOPYRIGHTEND#### |
|
64
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
40 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
41 //#####DESCRIPTIONBEGIN#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
42 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
43 // Author(s): Red Hat, nickg |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
44 // Contributors: Red Hat, nickg |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
45 // Date: 1998-08-25 |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
46 // Purpose: |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
47 // 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
|
48 // 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
|
49 // 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
|
50 // needs to supply these functions. |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
51 // 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
|
52 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
53 //####DESCRIPTIONEND#### |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
54 // |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
55 //======================================================================== |
|
c38311975d4f
Merge from eCos master repository on 2000-01-28-04:28:11-GMT
jlarmour
parents:
54
diff
changeset
|
56 |
| 0 | 57 #if !defined(DBG_THREADS_API_INCLUDED) |
| 58 #define DBG_THREADS_API_INCLUDED 1 | |
| 59 | |
| 2 | 60 #include <cyg/infra/cyg_type.h> /* externC */ |
| 61 | |
| 0 | 62 #define has_thread_void 0 |
| 63 #define has_thread_current 1 | |
| 64 #define has_thread_registers 2 | |
| 65 #define has_thread_reg_change 4 | |
| 66 #define has_thread_list 8 | |
| 67 #define has_thread_info 16 | |
| 68 | |
| 69 typedef unsigned char threadref[8] ; | |
| 70 | |
| 71 struct dbg_capabilities | |
| 72 { | |
| 73 unsigned long mask1 ; | |
| 74 } ; | |
| 75 | |
| 76 | |
| 77 /* 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
|
78 externC int dbg_thread_capabilities(struct dbg_capabilities * cbp) ; |
| 0 | 79 |
| 80 | |
| 81 /* Fillin the identifier of the current thread */ | |
| 82 /* 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
|
83 externC int dbg_currthread(threadref * varparm) ; |
| 0 | 84 |
|
156
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
85 /* 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
|
86 /* Return 0 if not valid. */ |
|
b939e9cada46
Merge from eCos master repository on 2001-03-29-21:44:39-BST
jlarmour
parents:
105
diff
changeset
|
87 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
|
88 |
| 0 | 89 /* 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
|
90 externC int dbg_currthread_id(void); |
| 0 | 91 |
| 92 /* 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
|
93 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
|
94 threadref * lastthreadid, |
|
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
95 threadref * next_thread |
|
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
96 ) ; |
| 0 | 97 |
| 98 /* return 1 if next_threadid has been filled in with a value */ | |
| 99 /* return 0 if there are none or no more */ | |
| 100 | |
| 101 /* The O.S can fill in the following information about a thread when queried. | |
| 102 The structure of thise strings is determined by the O.S. | |
| 103 It is display oriented, so figure out what the users need to see. | |
| 104 Nulls are OK but GDB will fill some not so meaningful data. | |
| 105 These pointers may be in the calles private structures, the info will | |
| 106 get copied immediatly after the call to retreive it. | |
| 107 */ | |
| 108 struct cygmon_thread_debug_info | |
| 109 { | |
| 110 threadref thread_id ; | |
| 111 int context_exists ; /* To the point where examining its state, | |
| 2 | 112 registers and stack makes sense to GDB */ |
| 0 | 113 char * thread_display ; /* As shown in thread status window, name, state */ |
| 114 char * unique_thread_name ; /* human readable identifier, window label */ | |
| 115 char * more_display ; /* more detailed info about thread. | |
| 2 | 116 priority, queuedepth, state, stack usage, statistics */ |
| 0 | 117 } ; |
| 118 | |
| 119 | |
| 120 | |
| 121 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
122 externC int dbg_threadinfo( |
| 2 | 123 threadref * threadid, |
| 124 struct cygmon_thread_debug_info * info) ; | |
| 0 | 125 |
| 126 /* Return 1 if threadid is defined and info copied, 0 otherwise */ | |
| 127 | |
| 128 /* The O.S should fillin the array of registers using values from the | |
| 129 saves context. The array MUST be in GDB register save order even if | |
| 130 the saved context is different or smaller. Do not alter the values of | |
| 131 registers which are NOT in the O.S. thread context. Their default values | |
| 132 have already been assigned. | |
| 133 */ | |
| 134 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
135 externC int dbg_getthreadreg( |
| 2 | 136 threadref * osthreadid, |
| 137 int regcount, /* count of registers in the array */ | |
| 138 void * regval) ; /* fillin this array */ | |
| 0 | 139 |
| 140 | |
| 141 /* The O.S. should scan through this list of registers which are in | |
| 142 GDB order and the O.S. should replace the values of all registers | |
| 143 which are defined in the saved context of thread or process identified | |
| 144 by osthreadid. Return 0 if the threadis does not map to a known | |
| 145 process or other error. Return 1 if the setting is successful. */ | |
| 146 | |
|
105
5a0cc6c243a9
Merge from eCos master repository on 2000-06-30-08:18:49-BST
jlarmour
parents:
66
diff
changeset
|
147 externC int dbg_setthreadreg( |
| 2 | 148 threadref * osthreadid, |
| 149 int regcount , /* number of registers */ | |
| 150 void * regval) ; | |
| 151 | |
| 152 /* Control over OS scheduler. With the scheduler locked it should not | |
| 153 perform any rescheduling in response to interrupts. */ | |
| 154 externC int dbg_scheduler( | |
| 155 threadref * osthreadid, | |
| 156 int lock, /* 0 == unlock, 1 == lock */ | |
| 157 int mode); /* 0 == step, 1 == continue */ | |
| 158 | |
| 159 | |
| 0 | 160 |
| 161 #endif /* DBG_THREADS_API_INCLUDED */ |
