⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cma_deb_core.h

📁 这个是LINUX下的GDB调度工具的源码
💻 H
字号:
/*  * (c) Copyright 1990-1996 OPEN SOFTWARE FOUNDATION, INC. * (c) Copyright 1990-1996 HEWLETT-PACKARD COMPANY * (c) Copyright 1990-1996 DIGITAL EQUIPMENT CORPORATION * (c) Copyright 1991, 1992 Siemens-Nixdorf Information Systems * To anyone who acknowledges that this file is provided "AS IS" without * any express or implied warranty: permission to use, copy, modify, and * distribute this file for any purpose is hereby granted without fee, * provided that the above copyright notices and this notice appears in * all source code copies, and that none of the names listed above be used * in advertising or publicity pertaining to distribution of the software * without specific, written prior permission.  None of these organizations * makes any representations about the suitability of this software for * any purpose. *//* *	This file defines the internal interface to the core of CMA  * 	debugging services. (The client interface to debugging services *	is provided by cma_debug_client.h). */#ifndef CMA_DEB_CORE#define CMA_DEB_CORE/* *  INCLUDE FILES */#include <cma.h>#include <cma_mutex.h>#include <cma_queue.h>#include <cma_tcb_defs.h>#include <cma_util.h>/* * CONSTANTS AND MACROS *//* * TYPEDEFS *//*FIX-ME* Need to use sizes that are platform specific */typedef long int cma___t_debug_ctx[17];/* * Type defing the format of known object lists */typedef struct CMA__T_KNOWN_OBJECT {    cma__t_queue	queue;		/* Queue header for known objects */    cma__t_int_mutex	*mutex;		/* Mutex to control access to queue */    } cma__t_known_object;/* * Type defining the registration for one debug client (e.g. Ada) */typedef struct CMA__T_DEB_REGISTRY {    cma_t_address	entry;		/* Client's debug entry point */    cma_t_key		key;		/* Client's context key */    cma_t_integer	fac;		/* Client's debug facility number */    cma_t_boolean 	has_prolog;	/* Client's TCBs have std prolog */    } cma__t_deb_registry;#define cma__c_deb_max_clients	10/*  * Type defining the global debugging state for all threads. */typedef struct CMA__T_DEBUG_STATE {    /*      * The following flag is set if changes were made while in the     * debugger that may make the ready lists inconsistent.  For      * example, if a thread priority is changed in the debugger, the     * thread is not moved between queues.  Making things consistent     * is deferred to when the dispatcher is next invoked -- which we     * try to make very soon.     */    cma_t_boolean 	is_inconsistency;   /* Ready lists are inconsistent */    cma_t_boolean 	events_enabled;	    /* Set if _any_ event is enabled */    cma_t_boolean	flags[cma__c_debevt__dim]; 						    /* Which events are enabled */    cma__t_int_tcb	*next_to_run;	    /* TCB of thread to run next */     cma__t_int_mutex	*mutex;		    /* Mutex for registering clients */    cma_t_integer	client_count;	    /* Count of debug clients */    cma__t_deb_registry	clients[cma__c_deb_max_clients+1];					    /* Array of current debug clients */    } cma__t_debug_state;/*  * Routine that will symbolize and address and print it. */typedef void	(*cma__t_print_symbol) (cma_t_address);/* *  GLOBAL DATA *//*  * Variable holding the global debugging state  * * (This is primarily written by the debugger interface and read * by the thread dispatcher). */extern cma__t_debug_state	cma__g_debug_state;/*  * Known object queues */extern cma__t_known_object	cma__g_known_atts;extern cma__t_known_object	cma__g_known_cvs;extern cma__t_known_object	cma__g_known_mutexes;extern cma__t_known_object	cma__g_known_threads;/* * INTERNAL INTERFACES *//* Get information while in debugger context */extern void cma__deb_get            (cma__t_int_tcb *,cma_t_debug_get,cma_t_address,cma_t_integer,cma_t_integer);/* Set information while in debugger context */extern void cma__deb_set (cma__t_int_tcb *,cma_t_debug_set,cma_t_address,cma_t_integer);extern void cma__init_debug (void);extern void cma__reinit_debug (cma_t_integer);extern void cma__deb_anytcb_to_tcb (cma_t_tcb_header *,cma__t_int_tcb **);extern void cma__deb_fac_to_client (cma_t_integer,cma_t_key *);extern void cma__deb_get_client_info (cma_t_key,cma_t_address *,cma_t_boolean *);extern void cma__deb_get_context (cma__t_int_tcb *,cma_t_key,cma_t_address *);extern cma__t_int_tcb *cma__deb_get_self_tcb (void);extern void cma__deb_get_time_slice (cma_t_interval *);extern cma__t_int_tcb *cma__deb_next_tcb             (cma__t_int_tcb *,cma_t_integer *,cma_t_integer *,cma_t_boolean *);extern cma_t_boolean cma__deb_set_alert (cma__t_int_tcb *);extern void cma__deb_set_next_thread (cma__t_int_tcb *);	extern void cma__deb_set_force_dispatch (cma_t_address );extern void cma__deb_set_time_slice (cma_t_interval);extern void cma__deb_show_thread      (cma__t_int_tcb *,cma_t_boolean,cma_t_boolean,cma___t_debug_ctx,cma__t_eol_routine,                cma__t_eol_routine,cma__t_print_symbol);extern voidcma__deb_show_stats (cma__t_int_tcb *,cma_t_boolean,cma_t_boolean,cma__t_eol_routine,cma__t_eol_routine,cma__t_print_symbol);#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -