Mercurial > ecos
annotate packages/hal/common/current/include/dbg-threads-api.h @ 54:f10165814f1e ecos-sw-1999-11-19
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
| author | jlarmour |
|---|---|
| date | Fri, 19 Nov 1999 23:37:56 +0000 |
| parents | 443894e2e912 |
| children | c38311975d4f |
| rev | line source |
|---|---|
| 0 | 1 #if !defined(DBG_THREADS_API_INCLUDED) |
| 2 #define DBG_THREADS_API_INCLUDED 1 | |
| 3 /* These are the calls used to extract operating system specific information | |
|
54
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
2
diff
changeset
|
4 * used in supporting thread aware debugging. |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
2
diff
changeset
|
5 * The Operating Environment being debugged needs to supply these functions. |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
2
diff
changeset
|
6 * |
|
f10165814f1e
Merge from eCos master repository on 1999-11-19-22:24:39-GMT
jlarmour
parents:
2
diff
changeset
|
7 * This header is not to be included by user code |
| 0 | 8 */ |
| 9 | |
| 10 /* | |
| 2 | 11 * Copyright (c) 1998,1999 Cygnus Solutions |
| 0 | 12 * |
| 13 * The authors hereby grant permission to use, copy, modify, distribute, | |
| 14 * and license this software and its documentation for any purpose, provided | |
| 15 * that existing copyright notices are retained in all copies and that this | |
| 16 * notice is included verbatim in any distributions. No written agreement, | |
| 17 * license, or royalty fee is required for any of the authorized uses. | |
| 18 * Modifications to this software may be copyrighted by their authors | |
| 19 * and need not follow the licensing terms described here, provided that | |
| 20 * the new terms are clearly indicated on the first page of each file where | |
| 21 * they apply. | |
| 22 */ | |
| 23 | |
| 2 | 24 #include <cyg/infra/cyg_type.h> /* externC */ |
| 25 | |
| 0 | 26 #define has_thread_void 0 |
| 27 #define has_thread_current 1 | |
| 28 #define has_thread_registers 2 | |
| 29 #define has_thread_reg_change 4 | |
| 30 #define has_thread_list 8 | |
| 31 #define has_thread_info 16 | |
| 32 | |
| 33 typedef unsigned char threadref[8] ; | |
| 34 | |
| 35 struct dbg_capabilities | |
| 36 { | |
| 37 unsigned long mask1 ; | |
| 38 } ; | |
| 39 | |
| 40 | |
| 41 /* fill in the list of thread aware capabilities */ | |
| 42 extern int dbg_thread_capabilities(struct dbg_capabilities * cbp) ; | |
| 43 | |
| 44 | |
| 45 /* Fillin the identifier of the current thread */ | |
| 46 /* return 1 if defined, 0 if not defined */ | |
| 47 extern int dbg_currthread(threadref * varparm) ; | |
| 48 | |
| 49 /* Return the unique ID number of the current thread. */ | |
| 50 extern int dbg_currthread_id(void); | |
| 51 | |
| 52 /* get the first or next member of the list of known threads */ | |
| 53 extern int dbg_threadlist(int startflag, | |
| 2 | 54 threadref * lastthreadid, |
| 55 threadref * next_thread | |
| 56 ) ; | |
| 0 | 57 |
| 58 /* return 1 if next_threadid has been filled in with a value */ | |
| 59 /* return 0 if there are none or no more */ | |
| 60 | |
| 61 /* The O.S can fill in the following information about a thread when queried. | |
| 62 The structure of thise strings is determined by the O.S. | |
| 63 It is display oriented, so figure out what the users need to see. | |
| 64 Nulls are OK but GDB will fill some not so meaningful data. | |
| 65 These pointers may be in the calles private structures, the info will | |
| 66 get copied immediatly after the call to retreive it. | |
| 67 */ | |
| 68 struct cygmon_thread_debug_info | |
| 69 { | |
| 70 threadref thread_id ; | |
| 71 int context_exists ; /* To the point where examining its state, | |
| 2 | 72 registers and stack makes sense to GDB */ |
| 0 | 73 char * thread_display ; /* As shown in thread status window, name, state */ |
| 74 char * unique_thread_name ; /* human readable identifier, window label */ | |
| 75 char * more_display ; /* more detailed info about thread. | |
| 2 | 76 priority, queuedepth, state, stack usage, statistics */ |
| 0 | 77 } ; |
| 78 | |
| 79 | |
| 80 | |
| 81 | |
| 82 extern int dbg_threadinfo( | |
| 2 | 83 threadref * threadid, |
| 84 struct cygmon_thread_debug_info * info) ; | |
| 0 | 85 |
| 86 /* Return 1 if threadid is defined and info copied, 0 otherwise */ | |
| 87 | |
| 88 /* The O.S should fillin the array of registers using values from the | |
| 89 saves context. The array MUST be in GDB register save order even if | |
| 90 the saved context is different or smaller. Do not alter the values of | |
| 91 registers which are NOT in the O.S. thread context. Their default values | |
| 92 have already been assigned. | |
| 93 */ | |
| 94 | |
| 95 extern int dbg_getthreadreg( | |
| 2 | 96 threadref * osthreadid, |
| 97 int regcount, /* count of registers in the array */ | |
| 98 void * regval) ; /* fillin this array */ | |
| 0 | 99 |
| 100 | |
| 101 /* The O.S. should scan through this list of registers which are in | |
| 102 GDB order and the O.S. should replace the values of all registers | |
| 103 which are defined in the saved context of thread or process identified | |
| 104 by osthreadid. Return 0 if the threadis does not map to a known | |
| 105 process or other error. Return 1 if the setting is successful. */ | |
| 106 | |
| 107 extern int dbg_setthreadreg( | |
| 2 | 108 threadref * osthreadid, |
| 109 int regcount , /* number of registers */ | |
| 110 void * regval) ; | |
| 111 | |
| 112 /* Control over OS scheduler. With the scheduler locked it should not | |
| 113 perform any rescheduling in response to interrupts. */ | |
| 114 externC int dbg_scheduler( | |
| 115 threadref * osthreadid, | |
| 116 int lock, /* 0 == unlock, 1 == lock */ | |
| 117 int mode); /* 0 == step, 1 == continue */ | |
| 118 | |
| 119 | |
| 0 | 120 |
| 121 #endif /* DBG_THREADS_API_INCLUDED */ |
