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

📄 dtrace.h

📁 Sun Solaris 10 中的 DTrace 组件的源代码。请参看: http://www.sun.com/software/solaris/observability.jsp
💻 H
📖 第 1 页 / 共 2 页
字号:
typedef enum {	DTRACEDROP_PRINCIPAL,			/* drop to principal buffer */	DTRACEDROP_AGGREGATION,			/* drop to aggregation buffer */	DTRACEDROP_DYNAMIC,			/* dynamic drop */	DTRACEDROP_DYNRINSE,			/* dyn drop due to rinsing */	DTRACEDROP_DYNDIRTY,			/* dyn drop due to dirty */	DTRACEDROP_SPEC,			/* speculative drop */	DTRACEDROP_SPECBUSY,			/* spec drop due to busy */	DTRACEDROP_SPECUNAVAIL			/* spec drop due to unavail */} dtrace_dropkind_t;typedef struct dtrace_dropdata {	dtrace_hdl_t *dtdda_handle;		/* handle to DTrace library */	processorid_t dtdda_cpu;		/* CPU, if any */	dtrace_dropkind_t dtdda_kind;		/* kind of drop */	uint64_t dtdda_drops;			/* number of drops */	uint64_t dtdda_total;			/* total drops */	const char *dtdda_msg;			/* preconstructed message */} dtrace_dropdata_t;typedef int dtrace_handle_drop_f(dtrace_dropdata_t *, void *);extern int dtrace_handle_drop(dtrace_hdl_t *, dtrace_handle_drop_f *, void *);typedef void dtrace_handle_proc_f(struct ps_prochandle *, void *);extern int dtrace_handle_proc(dtrace_hdl_t *, dtrace_handle_proc_f *, void *);typedef struct dtrace_bufdata {	dtrace_hdl_t *dtbda_handle;		/* handle to DTrace library */	const char *dtbda_buffered;		/* buffered output */	dtrace_probedata_t *dtbda_probe;	/* probe data */	dtrace_recdesc_t *dtbda_recdesc;	/* record description */	dtrace_aggdata_t *dtbda_aggdata;	/* aggregation data, if agg. */} dtrace_bufdata_t;typedef int dtrace_handle_buffered_f(dtrace_bufdata_t *, void *);extern int dtrace_handle_buffered(dtrace_hdl_t *,    dtrace_handle_buffered_f *, void *);/* * DTrace Aggregate Interface */#define	DTRACE_A_PERCPU		0x0001#define	DTRACE_A_KEEPDELTA	0x0002#define	DTRACE_A_ANONYMOUS	0x0004#define	DTRACE_AGGWALK_ERROR		-1	/* error while processing */#define	DTRACE_AGGWALK_NEXT		0	/* proceed to next element */#define	DTRACE_AGGWALK_ABORT		1	/* abort aggregation walk */#define	DTRACE_AGGWALK_CLEAR		2	/* clear this element */#define	DTRACE_AGGWALK_NORMALIZE	3	/* normalize this element */#define	DTRACE_AGGWALK_DENORMALIZE	4	/* denormalize this element */#define	DTRACE_AGGWALK_REMOVE		5	/* remove this element */struct dtrace_aggdata {	dtrace_hdl_t *dtada_handle;		/* handle to DTrace library */	dtrace_aggdesc_t *dtada_desc;		/* aggregation description */	dtrace_eprobedesc_t *dtada_edesc;	/* enabled probe description */	dtrace_probedesc_t *dtada_pdesc;	/* probe description */	caddr_t dtada_data;			/* pointer to raw data */	uint64_t dtada_normal;			/* the normal -- 1 for denorm */	size_t dtada_size;			/* total size of the data */	caddr_t dtada_delta;			/* delta data, if available */	caddr_t *dtada_percpu;			/* per CPU data, if avail */	caddr_t *dtada_percpu_delta;		/* per CPU delta, if avail */};typedef int dtrace_aggregate_f(dtrace_aggdata_t *, void *);typedef int dtrace_aggregate_walk_f(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern void dtrace_aggregate_clear(dtrace_hdl_t *);extern int dtrace_aggregate_snap(dtrace_hdl_t *);extern int dtrace_aggregate_print(dtrace_hdl_t *, FILE *,    dtrace_aggregate_walk_f *);extern int dtrace_aggregate_walk(dtrace_hdl_t *, dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_keysorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_valsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_keyvarsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_valvarsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_keyrevsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_valrevsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_keyvarrevsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);extern int dtrace_aggregate_walk_valvarrevsorted(dtrace_hdl_t *,    dtrace_aggregate_f *, void *);#define	DTRACE_AGD_PRINTED	0x1	/* aggregation printed in program *//* * DTrace Process Control Interface * * Library clients who wish to have libdtrace create or grab processes for * monitoring of their symbol table changes may use these interfaces to * request that libdtrace obtain control of the process using libproc. */extern struct ps_prochandle *dtrace_proc_create(dtrace_hdl_t *,    const char *, char *const *);extern struct ps_prochandle *dtrace_proc_grab(dtrace_hdl_t *, pid_t, int);extern void dtrace_proc_release(dtrace_hdl_t *, struct ps_prochandle *);extern void dtrace_proc_continue(dtrace_hdl_t *, struct ps_prochandle *);/* * DTrace DIF Object (DIFO) Interface * * Library clients who wish to create their own custom DIF programs can use * the functions below to create a DIFO from a C string containing a D * expression statement.  Clients may also create raw DIF on-the-fly without * invoking the D compiler by simply constructing the dtrace_difo_t by hand. */extern dtrace_difo_t *dtrace_difo_create(dtrace_hdl_t *, const char *,    dtrace_probedesc_t *);extern void dtrace_difo_print(const dtrace_difo_t *, FILE *);extern void dtrace_difo_hold(dtrace_difo_t *);extern void dtrace_difo_release(dtrace_difo_t *);/* * DTrace Object, Symbol, and Type Interfaces * * Library clients can use libdtrace to perform symbol and C type information * lookups by symbol name, symbol address, or C type name, or to lookup meta- * information cached for each of the program objects in use by DTrace.  The * resulting struct contain pointers to arbitrary-length strings, including * object, symbol, and type names, that are persistent until the next call to * dtrace_update().  Once dtrace_update() is called, any cached values must * be flushed and not used subsequently by the client program. */#define	DTRACE_OBJ_EXEC	 ((const char *)0L)	/* primary executable file */#define	DTRACE_OBJ_RTLD	 ((const char *)1L)	/* run-time link-editor */#define	DTRACE_OBJ_CDEFS ((const char *)2L)	/* C include definitions */#define	DTRACE_OBJ_DDEFS ((const char *)3L)	/* D program definitions */#define	DTRACE_OBJ_EVERY ((const char *)-1L)	/* all known objects */#define	DTRACE_OBJ_KMODS ((const char *)-2L)	/* all kernel objects */#define	DTRACE_OBJ_UMODS ((const char *)-3L)	/* all user objects */typedef struct dtrace_objinfo {	const char *dto_name;			/* object file scope name */	const char *dto_file;			/* object file path (if any) */	int dto_id;				/* object file id (if any) */	uint_t dto_flags;			/* object flags (see below) */	GElf_Addr dto_text_va;			/* address of text section */	GElf_Xword dto_text_size;		/* size of text section */	GElf_Addr dto_data_va;			/* address of data section */	GElf_Xword dto_data_size;		/* size of data section */	GElf_Addr dto_bss_va;			/* address of BSS */	GElf_Xword dto_bss_size;		/* size of BSS */} dtrace_objinfo_t;#define	DTRACE_OBJ_F_KERNEL	0x1		/* object is a kernel module */#define	DTRACE_OBJ_F_PRIMARY	0x2		/* object is a primary module */typedef int dtrace_obj_f(dtrace_hdl_t *, const dtrace_objinfo_t *, void *);extern int dtrace_object_iter(dtrace_hdl_t *, dtrace_obj_f *, void *);extern int dtrace_object_info(dtrace_hdl_t *, const char *, dtrace_objinfo_t *);typedef struct dtrace_syminfo {	const char *dts_object;			/* object name */	const char *dts_name;			/* symbol name */	ulong_t dts_id;				/* symbol id */} dtrace_syminfo_t;extern int dtrace_lookup_by_name(dtrace_hdl_t *, const char *, const char *,    GElf_Sym *, dtrace_syminfo_t *);extern int dtrace_lookup_by_addr(dtrace_hdl_t *, GElf_Addr addr,    GElf_Sym *, dtrace_syminfo_t *);typedef struct dtrace_typeinfo {	const char *dtt_object;			/* object containing type */	ctf_file_t *dtt_ctfp;			/* CTF container handle */	ctf_id_t dtt_type;			/* CTF type identifier */} dtrace_typeinfo_t;extern int dtrace_lookup_by_type(dtrace_hdl_t *, const char *, const char *,    dtrace_typeinfo_t *);extern int dtrace_symbol_type(dtrace_hdl_t *, const GElf_Sym *,    const dtrace_syminfo_t *, dtrace_typeinfo_t *);extern int dtrace_provider_modules(dtrace_hdl_t *,    const char **provmods, int nmods);/* * DTrace Vector Interface * * The DTrace library normally speaks directly to dtrace(7D).  However, * this communication may be vectored elsewhere.  Consumers who wish to * perform a vectored open must fill in the vector, and use the dtrace_vopen() * entry point to obtain a library handle. */struct dtrace_vector {	int (*dtv_ioctl)(void *, int, void *);	int (*dtv_lookup_by_addr)(void *, GElf_Addr, GElf_Sym *,	    dtrace_syminfo_t *);	int (*dtv_status)(void *, processorid_t);	long (*dtv_sysconf)(void *, int);};/* * DTrace Utility Functions * * Library clients can use these functions to convert between string and * integer probe descriptions and the dtrace_probedesc_t representation * and to perform similar conversions on stability attributes. */extern int dtrace_xstr2desc(dtrace_hdl_t *, dtrace_probespec_t,    const char *, int, char *const [], dtrace_probedesc_t *);extern int dtrace_str2desc(dtrace_hdl_t *, dtrace_probespec_t,    const char *, dtrace_probedesc_t *);extern int dtrace_id2desc(dtrace_hdl_t *, dtrace_id_t, dtrace_probedesc_t *);#define	DTRACE_DESC2STR_MAX	1024	/* min buf size for dtrace_desc2str() */extern char *dtrace_desc2str(const dtrace_probedesc_t *, char *, size_t);#define	DTRACE_ATTR2STR_MAX	64	/* min buf size for dtrace_attr2str() */extern char *dtrace_attr2str(dtrace_attribute_t, char *, size_t);extern int dtrace_str2attr(const char *, dtrace_attribute_t *);extern const char *dtrace_stability_name(dtrace_stability_t);extern const char *dtrace_class_name(dtrace_class_t);extern const char *const _dtrace_version;extern int _dtrace_debug;#ifdef	__cplusplus}#endif#endif	/* _DTRACE_H */

⌨️ 快捷键说明

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