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

📄 sdt.h

📁 Sun Solaris 10 中的 DTrace 组件的源代码。请参看: http://www.sun.com/software/solaris/observability.jsp
💻 H
字号:
/* * Copyright 2005 Sun Microsystems, Inc.  All rights reserved. * * The contents of this file are subject to the terms of the * Common Development and Distribution License, Version 1.0 only. * See the file usr/src/LICENSING.NOTICE in this distribution or * http://www.opensolaris.org/license/ for details. */#ifndef _SYS_SDT_H#define	_SYS_SDT_H#pragma ident	"@(#)sdt.h	1.6	04/10/06 SMI"#ifdef	__cplusplusextern "C" {#endif#ifndef _KERNEL#define	DTRACE_PROBE(provider, name) {					\	extern void __dtrace_##provider##___##name(void);		\	__dtrace_##provider##___##name();				\}#define	DTRACE_PROBE1(provider, name, arg1) {				\	extern void __dtrace_##provider##___##name(unsigned long);	\	__dtrace_##provider##___##name((unsigned long)arg1);		\}#define	DTRACE_PROBE2(provider, name, arg1, arg2) {			\	extern void __dtrace_##provider##___##name(unsigned long,	\	    unsigned long);						\	__dtrace_##provider##___##name((unsigned long)arg1,		\	    (unsigned long)arg2);					\}#define	DTRACE_PROBE3(provider, name, arg1, arg2, arg3) {		\	extern void __dtrace_##provider##___##name(unsigned long,	\	    unsigned long, unsigned long);				\	__dtrace_##provider##___##name((unsigned long)arg1,		\	    (unsigned long)arg2, (unsigned long)arg3);			\}#define	DTRACE_PROBE4(provider, name, arg1, arg2, arg3, arg4) {		\	extern void __dtrace_##provider##___##name(unsigned long,	\	    unsigned long, unsigned long, unsigned long);		\	__dtrace_##provider##___##name((unsigned long)arg1,		\	    (unsigned long)arg2, (unsigned long)arg3,			\	    (unsigned long)arg4);					\}#define	DTRACE_PROBE5(provider, name, arg1, arg2, arg3, arg4, arg5) {	\	extern void __dtrace_##provider##___##name(unsigned long,	\	    unsigned long, unsigned long, unsigned long, unsigned long);\	__dtrace_##provider##___##name((unsigned long)arg1,		\	    (unsigned long)arg2, (unsigned long)arg3,			\	    (unsigned long)arg4, (unsigned long)arg5);			\}#else /* _KERNEL */#define	DTRACE_PROBE(name)	{					\	extern void __dtrace_probe_##name(void);			\	__dtrace_probe_##name();					\}#define	DTRACE_PROBE1(name, type1, arg1) {				\	extern void __dtrace_probe_##name(uintptr_t);			\	__dtrace_probe_##name((uintptr_t)(arg1));			\}#define	DTRACE_PROBE2(name, type1, arg1, type2, arg2) {			\	extern void __dtrace_probe_##name(uintptr_t, uintptr_t);	\	__dtrace_probe_##name((uintptr_t)(arg1), (uintptr_t)(arg2));	\}#define	DTRACE_PROBE3(name, type1, arg1, type2, arg2, type3, arg3) {	\	extern void __dtrace_probe_##name(uintptr_t, uintptr_t, uintptr_t); \	__dtrace_probe_##name((uintptr_t)(arg1), (uintptr_t)(arg2),	\	    (uintptr_t)(arg3));						\}#define	DTRACE_PROBE4(name, type1, arg1, type2, arg2, 			\    type3, arg3, type4, arg4) {						\	extern void __dtrace_probe_##name(uintptr_t, uintptr_t,		\	    uintptr_t, uintptr_t);					\	__dtrace_probe_##name((uintptr_t)(arg1), (uintptr_t)(arg2),	\	    (uintptr_t)(arg3), (uintptr_t)(arg4));			\}#define	DTRACE_SCHED(name)						\	DTRACE_PROBE(__sched_##name);#define	DTRACE_SCHED1(name, type1, arg1)				\	DTRACE_PROBE1(__sched_##name, type1, arg1);#define	DTRACE_SCHED2(name, type1, arg1, type2, arg2)			\	DTRACE_PROBE2(__sched_##name, type1, arg1, type2, arg2);#define	DTRACE_SCHED3(name, type1, arg1, type2, arg2, type3, arg3)	\	DTRACE_PROBE3(__sched_##name, type1, arg1, type2, arg2, type3, arg3);#define	DTRACE_SCHED4(name, type1, arg1, type2, arg2, 			\    type3, arg3, type4, arg4)						\	DTRACE_PROBE4(__sched_##name, type1, arg1, type2, arg2, 	\	    type3, arg3, type4, arg4);#define	DTRACE_PROC(name)						\	DTRACE_PROBE(__proc_##name);#define	DTRACE_PROC1(name, type1, arg1)					\	DTRACE_PROBE1(__proc_##name, type1, arg1);#define	DTRACE_PROC2(name, type1, arg1, type2, arg2)			\	DTRACE_PROBE2(__proc_##name, type1, arg1, type2, arg2);#define	DTRACE_PROC3(name, type1, arg1, type2, arg2, type3, arg3)	\	DTRACE_PROBE3(__proc_##name, type1, arg1, type2, arg2, type3, arg3);#define	DTRACE_PROC4(name, type1, arg1, type2, arg2, 			\    type3, arg3, type4, arg4)						\	DTRACE_PROBE4(__proc_##name, type1, arg1, type2, arg2, 		\	    type3, arg3, type4, arg4);#define	DTRACE_IO(name)							\	DTRACE_PROBE(__io_##name);#define	DTRACE_IO1(name, type1, arg1)					\	DTRACE_PROBE1(__io_##name, type1, arg1);#define	DTRACE_IO2(name, type1, arg1, type2, arg2)			\	DTRACE_PROBE2(__io_##name, type1, arg1, type2, arg2);#define	DTRACE_IO3(name, type1, arg1, type2, arg2, type3, arg3)	\	DTRACE_PROBE3(__io_##name, type1, arg1, type2, arg2, type3, arg3);#define	DTRACE_IO4(name, type1, arg1, type2, arg2, 			\    type3, arg3, type4, arg4)						\	DTRACE_PROBE4(__io_##name, type1, arg1, type2, arg2, 		\	    type3, arg3, type4, arg4);#endif /* _KERNEL */extern const char *sdt_prefix;typedef struct sdt_probedesc {	char			*sdpd_name;	/* name of this probe */	unsigned long		sdpd_offset;	/* offset of call in text */	struct sdt_probedesc	*sdpd_next;	/* next static probe */} sdt_probedesc_t;#ifdef	__cplusplus}#endif#endif	/* _SYS_SDT_H */

⌨️ 快捷键说明

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