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

📄 system.c

📁 linux进程跟踪的工具和源代码
💻 C
📖 第 1 页 / 共 4 页
字号:
			tprintf("%#lx", tcp->u_arg[1]);		else if (umoven(tcp, tcp->u_arg[1], sizeof(*arg1), (char *) arg1) < 0)			tprintf("???");		else {			tprintf("{");			printflags(capabilities, arg1->effective);			tprintf(", ");			printflags(capabilities, arg1->permitted);			tprintf(", ");			printflags(capabilities, arg1->inheritable);			tprintf("}");		} 	}	return 0;}#elseint sys_capget(tcp)struct tcb *tcp;{	return printargs(tcp);}int sys_capset(tcp)struct tcb *tcp;{	return printargs(tcp);}#endif#ifdef LINUXstatic struct xlat sysctl_root[] = {	{ CTL_KERN, "CTL_KERN" },	{ CTL_VM, "CTL_VM" },	{ CTL_NET, "CTL_NET" },	{ CTL_PROC, "CTL_PROC" },	{ CTL_FS, "CTL_FS" },	{ CTL_DEBUG, "CTL_DEBUG" },	{ CTL_DEV, "CTL_DEV" },	{ 0, NULL }};static struct xlat sysctl_kern[] = {	{ KERN_OSTYPE, "KERN_OSTYPE" },	{ KERN_OSRELEASE, "KERN_OSRELEASE" },	{ KERN_OSREV, "KERN_OSREV" },	{ KERN_VERSION, "KERN_VERSION" },	{ KERN_SECUREMASK, "KERN_SECUREMASK" },	{ KERN_PROF, "KERN_PROF" },	{ KERN_NODENAME, "KERN_NODENAME" },	{ KERN_DOMAINNAME, "KERN_DOMAINNAME" },#ifdef KERN_SECURELVL	{ KERN_SECURELVL, "KERN_SECURELVL" },#endif	{ KERN_PANIC, "KERN_PANIC" },#ifdef KERN_REALROOTDEV	{ KERN_REALROOTDEV, "KERN_REALROOTDEV" },#endif#ifdef KERN_JAVA_INTERPRETER	{ KERN_JAVA_INTERPRETER, "KERN_JAVA_INTERPRETER" },#endif#ifdef KERN_JAVA_APPLETVIEWER	{ KERN_JAVA_APPLETVIEWER, "KERN_JAVA_APPLETVIEWER" },#endif	{ KERN_SPARC_REBOOT, "KERN_SPARC_REBOOT" },	{ KERN_CTLALTDEL, "KERN_CTLALTDEL" },	{ KERN_PRINTK, "KERN_PRINTK" },	{ KERN_NAMETRANS, "KERN_NAMETRANS" },	{ KERN_PPC_HTABRECLAIM, "KERN_PPC_HTABRECLAIM" },	{ KERN_PPC_ZEROPAGED, "KERN_PPC_ZEROPAGED" },	{ KERN_PPC_POWERSAVE_NAP, "KERN_PPC_POWERSAVE_NAP" },	{ KERN_MODPROBE, "KERN_MODPROBE" },	{ KERN_SG_BIG_BUFF, "KERN_SG_BIG_BUFF" },	{ KERN_ACCT, "KERN_ACCT" },	{ KERN_PPC_L2CR, "KERN_PPC_L2CR" },	{ KERN_RTSIGNR, "KERN_RTSIGNR" },	{ KERN_RTSIGMAX, "KERN_RTSIGMAX" },	{ KERN_SHMMAX, "KERN_SHMMAX" },	{ KERN_MSGMAX, "KERN_MSGMAX" },	{ KERN_MSGMNB, "KERN_MSGMNB" },	{ KERN_MSGPOOL, "KERN_MSGPOOL" },	{ 0, NULL }};static struct xlat sysctl_vm[] = {	{ VM_SWAPCTL, "VM_SWAPCTL" },	{ VM_SWAPOUT, "VM_SWAPOUT" },	{ VM_FREEPG, "VM_FREEPG" },	{ VM_BDFLUSH, "VM_BDFLUSH" },	{ VM_OVERCOMMIT_MEMORY, "VM_OVERCOMMIT_MEMORY" },	{ VM_BUFFERMEM, "VM_BUFFERMEM" },	{ VM_PAGECACHE, "VM_PAGECACHE" },	{ VM_PAGERDAEMON, "VM_PAGERDAEMON" },	{ VM_PGT_CACHE, "VM_PGT_CACHE" },	{ VM_PAGE_CLUSTER, "VM_PAGE_CLUSTER" },	{ 0, NULL },};static struct xlat sysctl_net[] = {	{ NET_CORE, "NET_CORE" },	{ NET_ETHER, "NET_ETHER" },	{ NET_802, "NET_802" },	{ NET_UNIX, "NET_UNIX" },	{ NET_IPV4, "NET_IPV4" },	{ NET_IPX, "NET_IPX" },	{ NET_ATALK, "NET_ATALK" },	{ NET_NETROM, "NET_NETROM" },	{ NET_AX25, "NET_AX25" },	{ NET_BRIDGE, "NET_BRIDGE" },	{ NET_ROSE, "NET_ROSE" },	{ NET_IPV6, "NET_IPV6" },	{ NET_X25, "NET_X25" },	{ NET_TR, "NET_TR" },	{ NET_DECNET, "NET_DECNET" },	{ 0, NULL }};static struct xlat sysctl_net_core[] = {	{ NET_CORE_WMEM_MAX, "NET_CORE_WMEM_MAX" },	{ NET_CORE_RMEM_MAX, "NET_CORE_RMEM_MAX" },	{ NET_CORE_WMEM_DEFAULT, "NET_CORE_WMEM_DEFAULT" },	{ NET_CORE_RMEM_DEFAULT, "NET_CORE_RMEM_DEFAULT" },	{ NET_CORE_MAX_BACKLOG, "NET_CORE_MAX_BACKLOG" },	{ NET_CORE_FASTROUTE, "NET_CORE_FASTROUTE" },	{ NET_CORE_MSG_COST, "NET_CORE_MSG_COST" },	{ NET_CORE_MSG_BURST, "NET_CORE_MSG_BURST" },	{ NET_CORE_OPTMEM_MAX, "NET_CORE_OPTMEM_MAX" },	{ 0, NULL }};static struct xlat sysctl_net_unix[] = {	{ NET_UNIX_DESTROY_DELAY, "NET_UNIX_DESTROY_DELAY" },	{ NET_UNIX_DELETE_DELAY, "NET_UNIX_DELETE_DELAY" },	{ 0, NULL }};static struct xlat sysctl_net_ipv4[] = {	{ NET_IPV4_FORWARD, "NET_IPV4_FORWARD" },	{ NET_IPV4_DYNADDR, "NET_IPV4_DYNADDR" },	{ NET_IPV4_CONF, "NET_IPV4_CONF" },	{ NET_IPV4_NEIGH, "NET_IPV4_NEIGH" },	{ NET_IPV4_ROUTE, "NET_IPV4_ROUTE" },	{ NET_IPV4_FIB_HASH, "NET_IPV4_FIB_HASH" },	{ NET_IPV4_TCP_TIMESTAMPS, "NET_IPV4_TCP_TIMESTAMPS" },	{ NET_IPV4_TCP_WINDOW_SCALING, "NET_IPV4_TCP_WINDOW_SCALING" },	{ NET_IPV4_TCP_SACK, "NET_IPV4_TCP_SACK" },	{ NET_IPV4_TCP_RETRANS_COLLAPSE, "NET_IPV4_TCP_RETRANS_COLLAPSE" },	{ NET_IPV4_DEFAULT_TTL, "NET_IPV4_DEFAULT_TTL" },	{ NET_IPV4_AUTOCONFIG, "NET_IPV4_AUTOCONFIG" },	{ NET_IPV4_NO_PMTU_DISC, "NET_IPV4_NO_PMTU_DISC" },	{ NET_IPV4_TCP_SYN_RETRIES, "NET_IPV4_TCP_SYN_RETRIES" },	{ NET_IPV4_IPFRAG_HIGH_THRESH, "NET_IPV4_IPFRAG_HIGH_THRESH" },	{ NET_IPV4_IPFRAG_LOW_THRESH, "NET_IPV4_IPFRAG_LOW_THRESH" },	{ NET_IPV4_IPFRAG_TIME, "NET_IPV4_IPFRAG_TIME" },	{ NET_IPV4_TCP_MAX_KA_PROBES, "NET_IPV4_TCP_MAX_KA_PROBES" },	{ NET_IPV4_TCP_KEEPALIVE_TIME, "NET_IPV4_TCP_KEEPALIVE_TIME" },	{ NET_IPV4_TCP_KEEPALIVE_PROBES, "NET_IPV4_TCP_KEEPALIVE_PROBES" },	{ NET_IPV4_TCP_RETRIES1, "NET_IPV4_TCP_RETRIES1" },	{ NET_IPV4_TCP_RETRIES2, "NET_IPV4_TCP_RETRIES2" },	{ NET_IPV4_TCP_FIN_TIMEOUT, "NET_IPV4_TCP_FIN_TIMEOUT" },	{ NET_IPV4_IP_MASQ_DEBUG, "NET_IPV4_IP_MASQ_DEBUG" },	{ NET_TCP_SYNCOOKIES, "NET_TCP_SYNCOOKIES" },	{ NET_TCP_STDURG, "NET_TCP_STDURG" },	{ NET_TCP_RFC1337, "NET_TCP_RFC1337" },	{ NET_TCP_SYN_TAILDROP, "NET_TCP_SYN_TAILDROP" },	{ NET_TCP_MAX_SYN_BACKLOG, "NET_TCP_MAX_SYN_BACKLOG" },	{ NET_IPV4_LOCAL_PORT_RANGE, "NET_IPV4_LOCAL_PORT_RANGE" },	{ NET_IPV4_ICMP_ECHO_IGNORE_ALL, "NET_IPV4_ICMP_ECHO_IGNORE_ALL" },	{ NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS, "NET_IPV4_ICMP_ECHO_IGNORE_BROADCASTS" },	{ NET_IPV4_ICMP_SOURCEQUENCH_RATE, "NET_IPV4_ICMP_SOURCEQUENCH_RATE" },	{ NET_IPV4_ICMP_DESTUNREACH_RATE, "NET_IPV4_ICMP_DESTUNREACH_RATE" },	{ NET_IPV4_ICMP_TIMEEXCEED_RATE, "NET_IPV4_ICMP_TIMEEXCEED_RATE" },	{ NET_IPV4_ICMP_PARAMPROB_RATE, "NET_IPV4_ICMP_PARAMPROB_RATE" },	{ NET_IPV4_ICMP_ECHOREPLY_RATE, "NET_IPV4_ICMP_ECHOREPLY_RATE" },	{ NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES, "NET_IPV4_ICMP_IGNORE_BOGUS_ERROR_RESPONSES" },	{ NET_IPV4_IGMP_MAX_MEMBERSHIPS, "NET_IPV4_IGMP_MAX_MEMBERSHIPS" },	{  0, NULL }};static struct xlat sysctl_net_ipv4_route[] = {	{ NET_IPV4_ROUTE_FLUSH, "NET_IPV4_ROUTE_FLUSH" },	{ NET_IPV4_ROUTE_MIN_DELAY, "NET_IPV4_ROUTE_MIN_DELAY" },	{ NET_IPV4_ROUTE_MAX_DELAY, "NET_IPV4_ROUTE_MAX_DELAY" },	{ NET_IPV4_ROUTE_GC_THRESH, "NET_IPV4_ROUTE_GC_THRESH" },	{ NET_IPV4_ROUTE_MAX_SIZE, "NET_IPV4_ROUTE_MAX_SIZE" },	{ NET_IPV4_ROUTE_GC_MIN_INTERVAL, "NET_IPV4_ROUTE_GC_MIN_INTERVAL" },	{ NET_IPV4_ROUTE_GC_TIMEOUT, "NET_IPV4_ROUTE_GC_TIMEOUT" },	{ NET_IPV4_ROUTE_GC_INTERVAL, "NET_IPV4_ROUTE_GC_INTERVAL" },	{ NET_IPV4_ROUTE_REDIRECT_LOAD, "NET_IPV4_ROUTE_REDIRECT_LOAD" },	{ NET_IPV4_ROUTE_REDIRECT_NUMBER, "NET_IPV4_ROUTE_REDIRECT_NUMBER" },	{ NET_IPV4_ROUTE_REDIRECT_SILENCE, "NET_IPV4_ROUTE_REDIRECT_SILENCE" },	{ NET_IPV4_ROUTE_ERROR_COST, "NET_IPV4_ROUTE_ERROR_COST" },	{ NET_IPV4_ROUTE_ERROR_BURST, "NET_IPV4_ROUTE_ERROR_BURST" },	{ NET_IPV4_ROUTE_GC_ELASTICITY, "NET_IPV4_ROUTE_GC_ELASTICITY" },	{ 0, NULL }};static struct xlat sysctl_net_ipv4_conf[] = {	{ NET_IPV4_CONF_FORWARDING, "NET_IPV4_CONF_FORWARDING" },	{ NET_IPV4_CONF_MC_FORWARDING, "NET_IPV4_CONF_MC_FORWARDING" },	{ NET_IPV4_CONF_PROXY_ARP, "NET_IPV4_CONF_PROXY_ARP" },	{ NET_IPV4_CONF_ACCEPT_REDIRECTS, "NET_IPV4_CONF_ACCEPT_REDIRECTS" },	{ NET_IPV4_CONF_SECURE_REDIRECTS, "NET_IPV4_CONF_SECURE_REDIRECTS" },	{ NET_IPV4_CONF_SEND_REDIRECTS, "NET_IPV4_CONF_SEND_REDIRECTS" },	{ NET_IPV4_CONF_SHARED_MEDIA, "NET_IPV4_CONF_SHARED_MEDIA" },	{ NET_IPV4_CONF_RP_FILTER, "NET_IPV4_CONF_RP_FILTER" },	{ NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE, "NET_IPV4_CONF_ACCEPT_SOURCE_ROUTE" },	{ NET_IPV4_CONF_BOOTP_RELAY, "NET_IPV4_CONF_BOOTP_RELAY" },	{ NET_IPV4_CONF_LOG_MARTIANS, "NET_IPV4_CONF_LOG_MARTIANS" },	{ 0, NULL }};static struct xlat sysctl_net_ipv6[] = {	{ NET_IPV6_CONF, "NET_IPV6_CONF" },	{ NET_IPV6_NEIGH, "NET_IPV6_NEIGH" },	{ NET_IPV6_ROUTE, "NET_IPV6_ROUTE" },	{ 0, NULL }};static struct xlat sysctl_net_ipv6_route[] = {	{ NET_IPV6_ROUTE_FLUSH, "NET_IPV6_ROUTE_FLUSH" },	{ NET_IPV6_ROUTE_GC_THRESH, "NET_IPV6_ROUTE_GC_THRESH" },	{ NET_IPV6_ROUTE_MAX_SIZE, "NET_IPV6_ROUTE_MAX_SIZE" },	{ NET_IPV6_ROUTE_GC_MIN_INTERVAL, "NET_IPV6_ROUTE_GC_MIN_INTERVAL" },	{ NET_IPV6_ROUTE_GC_TIMEOUT, "NET_IPV6_ROUTE_GC_TIMEOUT" },	{ NET_IPV6_ROUTE_GC_INTERVAL, "NET_IPV6_ROUTE_GC_INTERVAL" },	{ NET_IPV6_ROUTE_GC_ELASTICITY, "NET_IPV6_ROUTE_GC_ELASTICITY" },	{ 0, NULL }};intsys_sysctl(tcp)struct tcb *tcp;{	struct __sysctl_args info;	int *name;	umove (tcp, tcp->u_arg[0], &info);	name = alloca (sizeof (int) * info.nlen);	umoven(tcp, (size_t) info.name, sizeof (int) * info.nlen, (char *) name);	if (entering(tcp)) {		int cnt = 0;		tprintf("{{");		if (info.nlen == 0)			goto out;		printxval(sysctl_root, name[0], "CTL_???");		++cnt;		if (info.nlen == 1)			goto out;		switch (name[0]) {		case CTL_KERN:			tprintf(", ");			printxval(sysctl_kern, name[1], "KERN_???");			++cnt;			break;		case CTL_VM:			tprintf(", ");			printxval(sysctl_vm, name[1], "VM_???");			++cnt;			break;		case CTL_NET:			tprintf(", ");			printxval(sysctl_net, name[1], "NET_???");			++cnt;			if (info.nlen == 2)				goto out;			switch (name[1]) {			case NET_CORE:				tprintf(", ");				printxval(sysctl_net_core, name[2],					  "NET_CORE_???");				break;			case NET_UNIX:				tprintf(", ");				printxval(sysctl_net_unix, name[2],					  "NET_UNIX_???");				break;			case NET_IPV4:				tprintf(", ");				printxval(sysctl_net_ipv4, name[2],					  "NET_IPV4_???");				if (info.nlen == 3)					goto out;				switch (name[2]) {				case NET_IPV4_ROUTE:					tprintf(", ");					printxval(sysctl_net_ipv4_route,						  name[3],						  "NET_IPV4_ROUTE_???");					break;				case NET_IPV4_CONF:					tprintf(", ");					printxval(sysctl_net_ipv4_conf,						  name[3],						  "NET_IPV4_CONF_???");					break;				default:					goto out;				}				break;			case NET_IPV6:				tprintf(", ");				printxval(sysctl_net_ipv6, name[2],					  "NET_IPV6_???");				if (info.nlen == 3)					goto out;				switch (name[2]) {				case NET_IPV6_ROUTE:					tprintf(", ");					printxval(sysctl_net_ipv6_route,						  name[3],						  "NET_IPV6_ROUTE_???");					break;				default:					goto out;				}				break;			default:				goto out;			}			break;		default:			goto out;		}	out:		while (cnt < info.nlen)			tprintf(", %x", name[cnt++]);		tprintf("}, %d, ", info.nlen);	} else {		size_t oldlen;		umove(tcp, (size_t)info.oldlenp, &oldlen);		if (info.nlen >= 2		    && ((name[0] == CTL_KERN			 && (name[1] == KERN_OSRELEASE			     || name[1] == KERN_OSTYPE#ifdef KERN_JAVA_INTERPRETER			     || name[1] == KERN_JAVA_INTERPRETER#endif#ifdef KERN_JAVA_APPLETVIEWER			     || name[1] == KERN_JAVA_APPLETVIEWER#endif				 )))) {			printpath(tcp, (size_t)info.oldval);			tprintf(", %Zu, ", oldlen);			if (info.newval == 0)				tprintf("NULL");			else if (syserror(tcp))				tprintf("%p", info.newval);			else				printpath(tcp, (size_t)info.newval);			tprintf(", %Zd", info.newlen);		} else {			tprintf("%p, %Zd, %p, %Zd", info.oldval, oldlen,				info.newval, info.newlen);		}		tprintf("}");	}	return 0;}#elseint sys_sysctl(tcp)struct tcb *tcp;{	return printargs(tcp);}#endif#ifdef FREEBSD#include <sys/sysctl.h>int sys___sysctl(tcp)struct tcb *tcp;{	int qoid[CTL_MAXNAME+2];	char ctl[1024];	size_t len;	int i, numeric;		if (entering(tcp)) {		if (tcp->u_arg[1] < 0 || tcp->u_arg[1] > CTL_MAXNAME ||		    (umoven(tcp, tcp->u_arg[0], tcp->u_arg[1] * sizeof(int),			    (char *) (qoid + 2)) < 0))			tprintf("[...], ");		else {			/* Use sysctl to ask the name of the current MIB			   This uses the undocumented "Staff-functions" used			   by the sysctl program. See kern_sysctl.c for			   details. */			qoid[0] = 0; /* sysctl */			qoid[1] = 1; /* name */			i = sizeof(ctl);			tprintf("[");			if (sysctl(qoid, tcp->u_arg[1] + 2, ctl, &i, 0, 0) >= 0) {				numeric = !abbrev(tcp);				tprintf("%s%s", ctl, numeric ? ", " : "");			} else				numeric = 1;			if (numeric) {				for (i = 0; i < tcp->u_arg[1]; i++)					tprintf("%s%d", i ? "." : "", qoid[i + 2]);			}			tprintf("], ");			tprintf("%lu, ", tcp->u_arg[1]);		}	} else {		if (!syserror(tcp) && (umove(tcp, tcp->u_arg[3], &len) >= 0)) {			printstr(tcp, tcp->u_arg[2], len);			tprintf(", [%u], ", len);		} else 			tprintf("%#lx, %#lx, ", tcp->u_arg[2], tcp->u_arg[3]);		printstr(tcp, tcp->u_arg[4], tcp->u_arg[5]);		tprintf(", %lu", tcp->u_arg[5]);	}	return 0;}#endif#if UNIXWARE >= 2#include <sys/ksym.h>#include <sys/elf.h>static struct xlat ksym_flags[] = {	{ STT_NOTYPE,	"STT_NOTYPE"	},		{ STT_FUNC,	"STT_FUNC"	},		{ STT_OBJECT,	"STT_OBJECT"	},		{ 0,		NULL		},};intsys_getksym(tcp)struct tcb *tcp;{	if (entering (tcp)) {		printstr(tcp, tcp->u_arg[0], -1);		tprintf(", ");	}	else {		if (syserror(tcp)) {			tprintf("%#lx, %#lx",				tcp->u_arg[1], tcp->u_arg[2]);		}		else {			int val;			printnum (tcp, tcp->u_arg[1], "%#lx");			tprintf(", ");			if (umove(tcp, tcp->u_arg[2], &val) < 0) {				tprintf("%#lx", tcp->u_arg[2]);			}			else {				tprintf("[");				printxval (ksym_flags, val, "STT_???");				tprintf("]");			}		}	}	return 0;}#endif /* UNIXWARE > 2 */#ifdef MIPSstatic struct xlat_sysmips[] = {	{ SETNAME,		"SETNAME"	},	{ FLUSH_CACHE,		"FLUSH_CACHE"	},	{ MIPS_FIXADE,		"MIPS_FIXADE"	},	{ MIPS_RDNVRAM,		"MIPS_RDNVRAM"	},	{ MIPS_ATOMIC_SET,	"MIPS_ATOMIC_SET"	},	{ 0, NULL }};int sys_sysmips(tcp)struct tcb *tcp;{	if (entering(tcp)) {		printxval(xlat_sysmips, tcp->u_arg[0], "???");		tprintf(", ");		if (!verbose(tcp)) {			tprintf("%d, %d, %d", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);		} else if (tcp->u_arg[0]==SETNAME) {			char nodename[__NEW_UTS_LEN_1];			if (umovestr(tcp, tcp->u_arg[1], (__NEW_UTS_LEN_1), nodename) < 0)				tprintf(", %#lx", tcp->u_arg[1]);			else				tprintf(", \"%s\"", nodename);		} else if (tcp->u_arg[0]==MIPS_ATOMIC_SET) {			tprintf(", %#lx, 0x%x", tcp->u_arg[1], tcp->u_arg[2]);		} else if (tcp->u_arg[0]==MIPS_FIXADE) {			tprintf(", 0x%x", tcp->u_arg[1]);		} else {			tprintf("%d, %d, %d", tcp->u_arg[1], tcp->u_arg[2], tcp->u_arg[3]);		}	}	return 0;}#endif /* MIPS */

⌨️ 快捷键说明

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