Mercurial > nand-ecoscentric
annotate packages/hal/common/current/include/dbg-threads-api.h @ 66:bf00f99aec69 ecos-sw-2000-02-02
Merge from eCos master repository on 2000-02-02-19:16:44-GMT
| author | jlarmour |
|---|---|
| date | Wed, 02 Feb 2000 19:57:02 +0000 |
| parents | c38311975d4f |
| children | 5a0cc6c243a9 |
| 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 */ | |
| 69 extern int dbg_thread_capabilities(struct dbg_capabilities * cbp) ; | |
| 70 | |
| 71 | |
| 72 /* Fillin the identifier of the current thread */ | |
| 73 /* return 1 if defined, 0 if not defined */ | |
| 74 extern int dbg_currthread(threadref * varparm) ; | |
| 75 | |
| 76 /* Return the unique ID number of the current thread. */ | |
| 77 extern int dbg_currthread_id(void); | |
| 78 | |
| 79 /* get the first or next member of the list of known threads */ | |
| 80 extern int dbg_threadlist(int startflag, | |
| 2 | 81 threadref * lastthreadid, |
| 82 threadref * next_thread | |
| 83 ) ; | |
| 0 | 84 |
| 85 /* return 1 if next_threadid has been filled in with a value */ | |
| 86 /* return 0 if there are none or no more */ | |
| 87 | |
| 88 /* The O.S can fill in the following information about a thread when queried. | |
| 89 The structure of thise strings is determined by the O.S. | |
| 90 It is display oriented, so figure out what the users need to see. | |
| 91 Nulls are OK but GDB will fill some not so meaningful data. | |
| 92 These pointers may be in the calles private structures, the info will | |
| 93 get copied immediatly after the call to retreive it. | |
| 94 */ | |
| 95 struct cygmon_thread_debug_info | |
| 96 { | |
| 97 threadref thread_id ; | |
| 98 int context_exists ; /* To the point where examining its state, | |
| 2 | 99 registers and stack makes sense to GDB */ |
| 0 | 100 char * thread_display ; /* As shown in thread status window, name, state */ |
| 101 char * unique_thread_name ; /* human readable identifier, window label */ | |
| 102 char * more_display ; /* more detailed info about thread. | |
| 2 | 103 priority, queuedepth, state, stack usage, statistics */ |
| 0 | 104 } ; |
| 105 | |
| 106 | |
| 107 | |
| 108 | |
| 109 extern int dbg_threadinfo( | |
| 2 | 110 threadref * threadid, |
| 111 struct cygmon_thread_debug_info * info) ; | |
| 0 | 112 |
| 113 /* Return 1 if threadid is defined and info copied, 0 otherwise */ | |
| 114 | |
| 115 /* The O.S should fillin the array of registers using values from the | |
| 116 saves context. The array MUST be in GDB register save order even if | |
| 117 the saved context is different or smaller. Do not alter the values of | |
| 118 registers which are NOT in the O.S. thread context. Their default values | |
| 119 have already been assigned. | |
| 120 */ | |
| 121 | |
| 122 extern int dbg_getthreadreg( | |
| 2 | 123 threadref * osthreadid, |
| 124 int regcount, /* count of registers in the array */ | |
| 125 void * regval) ; /* fillin this array */ | |
| 0 | 126 |
| 127 | |
| 128 /* The O.S. should scan through this list of registers which are in | |
| 129 GDB order and the O.S. should replace the values of all registers | |
| 130 which are defined in the saved context of thread or process identified | |
| 131 by osthreadid. Return 0 if the threadis does not map to a known | |
| 132 process or other error. Return 1 if the setting is successful. */ | |
| 133 | |
| 134 extern int dbg_setthreadreg( | |
| 2 | 135 threadref * osthreadid, |
| 136 int regcount , /* number of registers */ | |
| 137 void * regval) ; | |
| 138 | |
| 139 /* Control over OS scheduler. With the scheduler locked it should not | |
| 140 perform any rescheduling in response to interrupts. */ | |
| 141 externC int dbg_scheduler( | |
| 142 threadref * osthreadid, | |
| 143 int lock, /* 0 == unlock, 1 == lock */ | |
| 144 int mode); /* 0 == step, 1 == continue */ | |
| 145 | |
| 146 | |
| 0 | 147 |
| 148 #endif /* DBG_THREADS_API_INCLUDED */ |
