Mercurial > flash_v2
diff packages/hal/common/current/include/dbg-threads-api.h @ 0:3111d98ba7b3 ecos-v1_1-release
Initial commit of eCos version 1.1
| author | jlarmour |
|---|---|
| date | Tue, 11 May 1999 11:16:07 +0000 |
| parents | |
| children | 443894e2e912 |
line wrap: on
line diff
new file mode 100644 --- /dev/null +++ b/packages/hal/common/current/include/dbg-threads-api.h @@ -0,0 +1,108 @@ +#if !defined(DBG_THREADS_API_INCLUDED) +#define DBG_THREADS_API_INCLUDED 1 +/* These are the calls used to extract operating system specific information + used in supporting thread aware debugging. + The Operating Environment being debugged needs to supply these functions. + */ + +/* + * Copyright (c) 1998 Cygnus Support + * + * The authors hereby grant permission to use, copy, modify, distribute, + * and license this software and its documentation for any purpose, provided + * that existing copyright notices are retained in all copies and that this + * notice is included verbatim in any distributions. No written agreement, + * license, or royalty fee is required for any of the authorized uses. + * Modifications to this software may be copyrighted by their authors + * and need not follow the licensing terms described here, provided that + * the new terms are clearly indicated on the first page of each file where + * they apply. + */ + +#define has_thread_void 0 +#define has_thread_current 1 +#define has_thread_registers 2 +#define has_thread_reg_change 4 +#define has_thread_list 8 +#define has_thread_info 16 + +typedef unsigned char threadref[8] ; + +struct dbg_capabilities +{ + unsigned long mask1 ; +} ; + + +/* fill in the list of thread aware capabilities */ +extern int dbg_thread_capabilities(struct dbg_capabilities * cbp) ; + + +/* Fillin the identifier of the current thread */ +/* return 1 if defined, 0 if not defined */ +extern int dbg_currthread(threadref * varparm) ; + +/* Return the unique ID number of the current thread. */ +extern int dbg_currthread_id(void); + +/* get the first or next member of the list of known threads */ +extern int dbg_threadlist(int startflag, + threadref * lastthreadid, + threadref * next_thread + ) ; + +/* return 1 if next_threadid has been filled in with a value */ +/* return 0 if there are none or no more */ + +/* The O.S can fill in the following information about a thread when queried. + The structure of thise strings is determined by the O.S. + It is display oriented, so figure out what the users need to see. + Nulls are OK but GDB will fill some not so meaningful data. + These pointers may be in the calles private structures, the info will + get copied immediatly after the call to retreive it. + */ +struct cygmon_thread_debug_info +{ + threadref thread_id ; + int context_exists ; /* To the point where examining its state, + registers and stack makes sense to GDB */ + char * thread_display ; /* As shown in thread status window, name, state */ + char * unique_thread_name ; /* human readable identifier, window label */ + char * more_display ; /* more detailed info about thread. + priority, queuedepth, state, stack usage, statistics */ +} ; + + + + +extern int dbg_threadinfo( + threadref * threadid, + struct cygmon_thread_debug_info * info) ; + +/* Return 1 if threadid is defined and info copied, 0 otherwise */ + +/* The O.S should fillin the array of registers using values from the +saves context. The array MUST be in GDB register save order even if +the saved context is different or smaller. Do not alter the values of +registers which are NOT in the O.S. thread context. Their default values +have already been assigned. +*/ + +extern int dbg_getthreadreg( + threadref * osthreadid, + int regcount, /* count of registers in the array */ + void * regval) ; /* fillin this array */ + + +/* The O.S. should scan through this list of registers which are in +GDB order and the O.S. should replace the values of all registers +which are defined in the saved context of thread or process identified +by osthreadid. Return 0 if the threadis does not map to a known +process or other error. Return 1 if the setting is successful. */ + +extern int dbg_setthreadreg( + threadref * osthreadid, + int regcount , /* number of registers */ + void * regval) ; + +#endif /* DBG_THREADS_API_INCLUDED */
