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

📄 dt_impl.h

📁 Sun Solaris 10 中的 DTrace 组件的源代码。请参看: http://www.sun.com/software/solaris/observability.jsp
💻 H
📖 第 1 页 / 共 2 页
字号:
};/* * Values for the user arg of the ECB. */#define	DT_ECB_DEFAULT		0#define	DT_ECB_ERROR		1/* * Values for the dt_linkmode property, which is used by the assembler when * processing external symbol references.  User can set using -xlink=<mode>. */#define	DT_LINK_KERNEL	0	/* kernel syms static, user syms dynamic */#define	DT_LINK_PRIMARY	1	/* primary kernel syms static, others dynamic */#define	DT_LINK_DYNAMIC	2	/* all symbols dynamic */#define	DT_LINK_STATIC	3	/* all symbols static *//* * Values for the dt_stdcmode property, which is used by the compiler when * running cpp to determine the presence and setting of the __STDC__ macro. */#define	DT_STDC_XA	0	/* ISO C + K&R C compat w/o ISO: __STDC__=0 */#define	DT_STDC_XC	1	/* Strict ISO C: __STDC__=1 */#define	DT_STDC_XS	2	/* K&R C: __STDC__ not defined */#define	DT_STDC_XT	3	/* ISO C + K&R C compat with ISO: __STDC__=0 *//* * Macro to test whether a given pass bit is set in the dt_treedump bit-vector. * If the bit for pass 'p' is set, the D compiler displays the parse tree for * the program by printing it to stderr at the end of compiler pass 'p'. */#define	DT_TREEDUMP_PASS(dtp, p)	((dtp)->dt_treedump & (1 << ((p) - 1)))/* * Macros for accessing the cached CTF container and type ID for the common * types "int", "string", and <DYN>, which we need to use frequently in the D * compiler.  The DT_INT_* macro relies upon "int" being at index 0 in the * _dtrace_ints_* tables in dt_open.c; the others are also set up there. */#define	DT_INT_CTFP(dtp)	((dtp)->dt_ints[0].did_ctfp)#define	DT_INT_TYPE(dtp)	((dtp)->dt_ints[0].did_type)#define	DT_FUNC_CTFP(dtp)	((dtp)->dt_ddefs->dm_ctfp)#define	DT_FUNC_TYPE(dtp)	((dtp)->dt_type_func)#define	DT_FPTR_CTFP(dtp)	((dtp)->dt_ddefs->dm_ctfp)#define	DT_FPTR_TYPE(dtp)	((dtp)->dt_type_fptr)#define	DT_STR_CTFP(dtp)	((dtp)->dt_ddefs->dm_ctfp)#define	DT_STR_TYPE(dtp)	((dtp)->dt_type_str)#define	DT_DYN_CTFP(dtp)	((dtp)->dt_ddefs->dm_ctfp)#define	DT_DYN_TYPE(dtp)	((dtp)->dt_type_dyn)#define	DT_STACK_CTFP(dtp)	((dtp)->dt_ddefs->dm_ctfp)#define	DT_STACK_TYPE(dtp)	((dtp)->dt_type_stack)typedef struct dt_stmt {	dt_list_t ds_list;	/* list forward/back pointers */	dtrace_stmtdesc_t *ds_desc; /* pointer to statement description */} dt_stmt_t;struct dtrace_prog {	dt_list_t dp_list;	/* list forward/back pointers */	dt_list_t dp_stmts;	/* linked list of dt_stmt_t's */};#define	DT_ACT_PRINTF		0	/* printf() action */#define	DT_ACT_TRACE		1	/* trace() action */#define	DT_ACT_TRACEMEM		2	/* tracemem() action */#define	DT_ACT_STACK		3	/* stack() action */#define	DT_ACT_STOP		4	/* stop() action */#define	DT_ACT_BREAKPOINT	5	/* breakpoint() action */#define	DT_ACT_PANIC		6	/* panic() action */#define	DT_ACT_SPECULATE	7	/* speculate() action */#define	DT_ACT_COMMIT		8	/* commit() action */#define	DT_ACT_DISCARD		9	/* discard() action */#define	DT_ACT_CHILL		10	/* chill() action */#define	DT_ACT_EXIT		11	/* exit() action */#define	DT_ACT_USTACK		12	/* ustack() action */#define	DT_ACT_PRINTA		13	/* printa() action */#define	DT_ACT_RAISE		14	/* raise() action */#define	DT_ACT_CLEAR		15	/* clear() action */#define	DT_ACT_NORMALIZE	16	/* normalize() action */#define	DT_ACT_DENORMALIZE	17	/* denormalize() action */#define	DT_ACT_TRUNC		18	/* trunc() action */#define	DT_ACT_SYSTEM		19	/* system() action */#define	DT_ACT_JSTACK		20	/* jstack() action */#define	DT_ACT_FTRUNCATE	21	/* ftruncate() action */#define	EDT_BASE	1000	/* base value for libdtrace errnos */enum {	EDT_VERSION = EDT_BASE,	/* client is requesting unsupported version */	EDT_VERSINVAL,		/* version string is invalid or overflows */	EDT_VERSUNDEF,		/* requested API version is not defined */	EDT_VERSREDUCED,	/* requested API version has been reduced */	EDT_CTF,		/* libctf called failed (dt_ctferr has more) */	EDT_COMPILER,		/* error in D program compilation */	EDT_NOREG,		/* register allocation failure */	EDT_NOTUPREG,		/* tuple register allocation failure */	EDT_NOMEM,		/* memory allocation failure */	EDT_INT2BIG,		/* integer limit exceeded */	EDT_STR2BIG,		/* string limit exceeded */	EDT_NOMOD,		/* unknown module name */	EDT_NOPROV,		/* unknown provider name */	EDT_NOSYM,		/* unknown symbol name */	EDT_NOSYMADDR,		/* no symbol corresponds to address */	EDT_NOTYPE,		/* unknown type name */	EDT_NOVAR,		/* unknown variable name */	EDT_NOAGG,		/* unknown aggregation name */	EDT_BADSCOPE,		/* improper use of type name scoping operator */	EDT_BADSPEC,		/* overspecified probe description */	EDT_BADSPCV,		/* bad macro variable in probe description */	EDT_BADID,		/* invalid probe identifier */	EDT_NOTLOADED,		/* module is not currently loaded */	EDT_NOCTF,		/* module does not contain any CTF data */	EDT_DATAMODEL,		/* module and program data models don't match */	EDT_DIFVERS,		/* library has newer DIF version than driver */	EDT_BADAGG,		/* unrecognized aggregating action */	EDT_FIO,		/* file i/o error */	EDT_DIFINVAL,		/* invalid DIF program */	EDT_DIFSIZE,		/* invalid DIF size */	EDT_DIFFAULT,		/* failed to copyin DIF program */	EDT_BADPROBE,		/* bad probe description */	EDT_NOSCOPE,		/* declaration scope stack underflow */	EDT_NODECL,		/* declaration stack underflow */	EDT_DMISMATCH,		/* record list does not match statement */	EDT_DOFFSET,		/* record data offset error */	EDT_DALIGN,		/* record data alignment error */	EDT_BADOPTNAME,		/* invalid dtrace_setopt option name */	EDT_BADOPTVAL,		/* invalid dtrace_setopt option value */	EDT_BADOPTCTX,		/* invalid dtrace_setopt option context */	EDT_CPPFORK,		/* failed to fork preprocessor */	EDT_CPPEXEC,		/* failed to exec preprocessor */	EDT_CPPENT,		/* preprocessor not found */	EDT_CPPERR,		/* unknown preprocessor error */	EDT_SYMOFLOW,		/* external symbol table overflow */	EDT_ACTIVE,		/* operation illegal when tracing is active */	EDT_DESTRUCTIVE,	/* destructive actions not allowed */	EDT_NOANON,		/* no anonymous tracing state */	EDT_ISANON,		/* can't claim anon state and enable probes */	EDT_ENDTOOBIG,		/* END enablings exceed size of prncpl buffer */	EDT_NOCONV,		/* failed to load type for printf conversion */	EDT_BADCONV,		/* incomplete printf conversion */	EDT_BADERROR,		/* invalid library ERROR action */	EDT_ERRABORT,		/* abort due to error */	EDT_DROPABORT,		/* abort due to drop */	EDT_DIRABORT,		/* abort explicitly directed */	EDT_BADRVAL,		/* invalid return value from callback */	EDT_BADNORMAL,		/* invalid normalization */	EDT_BUFTOOSMALL,	/* enabling exceeds size of buffer */	EDT_BADTRUNC,		/* invalid truncation */	EDT_BUSY,		/* device busy (active kernel debugger) */	EDT_ACCESS,		/* insufficient privileges to use DTrace */	EDT_GNOENT,		/* dtrace device not available in global zone */	EDT_ZNOENT,		/* dtrace device not available in local zone */	EDT_BRICKED,		/* abort due to systemic unresponsiveness */	EDT_HARDWIRE,		/* failed to load hard-wired definitions */	EDT_ELFVERSION,		/* libelf is out-of-date w.r.t libdtrace */	EDT_NOBUFFERED		/* attempt to buffer output without handler */};/* * Interfaces for parsing and comparing DTrace attribute tuples, which describe * stability and architectural binding information.  The dtrace_attribute_t * structure and associated constant definitions are found in <sys/dtrace.h>. */extern dtrace_attribute_t dt_attr_min(dtrace_attribute_t, dtrace_attribute_t);extern dtrace_attribute_t dt_attr_max(dtrace_attribute_t, dtrace_attribute_t);extern char *dt_attr_str(dtrace_attribute_t, char *, size_t);extern int dt_attr_cmp(dtrace_attribute_t, dtrace_attribute_t);/* * Interfaces for parsing and handling DTrace version strings.  Version binding * is a feature of the D compiler that is handled completely independently of * the DTrace kernel infrastructure, so the definitions are here in libdtrace. * Version strings are compiled into an encoded uint32_t which can be compared * using C comparison operators.  Version definitions are found in dt_open.c. */#define	DT_VERSION_STRMAX	16	/* enough for "255.4095.4095\0" */#define	DT_VERSION_MAJMAX	0xFF	/* maximum major version number */#define	DT_VERSION_MINMAX	0xFFF	/* maximum minor version number */#define	DT_VERSION_MICMAX	0xFFF	/* maximum micro version number */#define	DT_VERSION_NUMBER(M, m, u) \	((((M) & 0xFF) << 24) | (((m) & 0xFFF) << 12) | ((u) & 0xFFF))#define	DT_VERSION_MAJOR(v)	(((v) & 0xFF000000) >> 24)#define	DT_VERSION_MINOR(v)	(((v) & 0x00FFF000) >> 12)#define	DT_VERSION_MICRO(v)	((v) & 0x00000FFF)extern char *dt_version_num2str(dt_version_t, char *, size_t);extern int dt_version_str2num(const char *, dt_version_t *);extern int dt_version_defined(dt_version_t);/* * Miscellaneous internal libdtrace interfaces.  The definitions below are for * libdtrace routines that do not yet merit their own separate header file. */extern char *dt_cpp_add_arg(dtrace_hdl_t *, const char *);extern char *dt_cpp_pop_arg(dtrace_hdl_t *);extern int dt_set_errno(dtrace_hdl_t *, int);extern void dt_set_errmsg(dtrace_hdl_t *, const char *, const char *,    const char *, int, const char *, va_list);extern int dt_ioctl(dtrace_hdl_t *, int, void *);extern int dt_status(dtrace_hdl_t *, processorid_t);extern long dt_sysconf(dtrace_hdl_t *, int);extern ssize_t dt_write(dtrace_hdl_t *, int, const void *, size_t);extern int dt_printf(dtrace_hdl_t *, FILE *, const char *, ...);extern void *dt_zalloc(dtrace_hdl_t *, size_t);extern void *dt_alloc(dtrace_hdl_t *, size_t);extern void dt_free(dtrace_hdl_t *, void *);extern char *dt_basename(char *);extern int dt_buffered_enable(dtrace_hdl_t *);extern int dt_buffered_flush(dtrace_hdl_t *, dtrace_probedata_t *,    dtrace_recdesc_t *, dtrace_aggdata_t *);extern void dt_buffered_disable(dtrace_hdl_t *);extern void dt_buffered_destroy(dtrace_hdl_t *);extern int dt_rw_read_held(pthread_rwlock_t *);extern int dt_rw_write_held(pthread_rwlock_t *);extern int dt_mutex_held(pthread_mutex_t *);#define	DT_RW_READ_HELD(x)	dt_rw_read_held(x)#define	DT_RW_WRITE_HELD(x)	dt_rw_write_held(x)#define	DT_RW_LOCK_HELD(x)	(DT_RW_READ_HELD(x) || DT_RW_WRITE_HELD(x))#define	DT_MUTEX_HELD(x)	dt_mutex_held(x)extern int dt_options_load(dtrace_hdl_t *);extern void dt_dprintf(const char *, ...);extern void dt_setcontext(dtrace_hdl_t *, dtrace_probedesc_t *);extern void dt_endcontext(dtrace_hdl_t *);extern void dt_pragma(dt_node_t *);extern int dt_reduce(dtrace_hdl_t *, dt_version_t);extern void dt_cg(dt_pcb_t *, dt_node_t *);extern dtrace_difo_t *dt_as(dt_pcb_t *);extern int dt_aggregate_go(dtrace_hdl_t *);extern int dt_aggregate_init(dtrace_hdl_t *);extern void dt_aggregate_destroy(dtrace_hdl_t *);extern int dt_epid_lookup(dtrace_hdl_t *, dtrace_epid_t,    dtrace_eprobedesc_t **, dtrace_probedesc_t **);extern void dt_epid_destroy(dtrace_hdl_t *);extern int dt_aggid_lookup(dtrace_hdl_t *, dtrace_aggid_t, dtrace_aggdesc_t **);extern void dt_aggid_destroy(dtrace_hdl_t *);extern void *dt_format_lookup(dtrace_hdl_t *, int);extern void dt_format_destroy(dtrace_hdl_t *);extern int dt_print_quantize(dtrace_hdl_t *, FILE *,    const void *, size_t, uint64_t);extern int dt_print_lquantize(dtrace_hdl_t *, FILE *,    const void *, size_t, uint64_t);extern int dt_print_agg(dtrace_aggdata_t *, void *);extern int dt_handle(dtrace_hdl_t *, dtrace_probedata_t *);extern int dt_handle_cpudrop(dtrace_hdl_t *, processorid_t,    dtrace_dropkind_t, uint64_t);extern int dt_handle_status(dtrace_hdl_t *,    dtrace_status_t *, dtrace_status_t *);extern dt_pcb_t *yypcb;		/* pointer to current parser control block */extern char yyintprefix;	/* int token prefix for macros (+/-) */extern char yyintsuffix[4];	/* int token suffix ([uUlL]*) */extern int yyintdecimal;	/* int token is decimal (1) or octal/hex (0) */extern char yytext[];		/* lex input buffer */extern int yylineno;		/* lex line number */extern int yydebug;		/* lex debugging */extern dt_node_t *yypragma;	/* lex token list for control lines */extern const dtrace_attribute_t _dtrace_maxattr; /* maximum attributes */extern const dtrace_attribute_t _dtrace_defattr; /* default attributes */extern const dtrace_attribute_t _dtrace_symattr; /* symbol ref attributes */extern const dtrace_attribute_t _dtrace_typattr; /* type ref attributes */extern const dtrace_attribute_t _dtrace_prvattr; /* provider attributes */extern const dt_version_t _dtrace_versions[];	 /* array of valid versions */extern const char *const _dtrace_version;	 /* current version string */extern int _dtrace_strbuckets;		/* number of hash buckets for strings */extern int _dtrace_intbuckets;		/* number of hash buckets for ints */extern uint_t _dtrace_stkindent;	/* default indent for stack/ustack */extern uint_t _dtrace_pidbuckets;	/* number of hash buckets for pids */extern uint_t _dtrace_pidlrulim;	/* number of proc handles to cache */extern int _dtrace_debug;		/* debugging messages enabled */extern const char *_dtrace_libdir;	/* default library directory */extern const char *_dtrace_moddir;	/* default kernel module directory */#ifdef	__cplusplus}#endif#endif	/* _DT_IMPL_H */

⌨️ 快捷键说明

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