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

📄 sa.h

📁 linux下查看系统工具原码,如IOSTAT等
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * sar/sadc: report system activity * (C) 1999-2006 by Sebastien Godard (sysstat <at> wanadoo.fr) */#ifndef _SA_H#define _SA_H/* Get IFNAMSIZ */#include <net/if.h>#ifndef IFNAMSIZ#define IFNAMSIZ	16#endif#include "common.h"/* * System activity daily file magic number * (will vary when file format changes) */#define SA_MAGIC	0x2168/* Define activities */#define A_PROC		0x000001#define A_CTXSW		0x000002#define A_CPU		0x000004#define A_IRQ		0x000008#define A_ONE_IRQ	0x000010#define A_SWAP		0x000020#define A_IO		0x000040#define A_MEMORY	0x000080#define A_SERIAL	0x000100#define A_NET_DEV	0x000200#define A_NET_EDEV	0x000400#define A_DISK		0x000800#define A_PID		0x001000#define A_CPID		0x002000#define A_NET_NFS	0x004000#define A_NET_NFSD	0x008000#define A_PAGE		0x010000#define A_MEM_AMT	0x020000#define A_KTABLES	0x040000#define A_NET_SOCK	0x080000#define A_QUEUE		0x100000#define A_LAST		0x100000#define GET_PROC(m)	(((m) & A_PROC) == A_PROC)#define GET_CTXSW(m)	(((m) & A_CTXSW) == A_CTXSW)#define GET_CPU(m)	(((m) & A_CPU) == A_CPU)#define GET_IRQ(m)	(((m) & A_IRQ) == A_IRQ)#define GET_PAGE(m)	(((m) & A_PAGE) == A_PAGE)#define GET_SWAP(m)	(((m) & A_SWAP) == A_SWAP)#define GET_IO(m)	(((m) & A_IO) == A_IO)#define GET_ONE_IRQ(m)	(((m) & A_ONE_IRQ) == A_ONE_IRQ)#define GET_MEMORY(m)	(((m) & A_MEMORY) == A_MEMORY)#define GET_PID(m)	(((m) & A_PID) == A_PID)#define GET_CPID(m)	(((m) & A_CPID) == A_CPID)#define GET_CPID(m)	(((m) & A_CPID) == A_CPID)#define GET_ALL_PID(m)	(((m) & A_ALL_PID) == A_ALL_PID)#define GET_SERIAL(m)	(((m) & A_SERIAL) == A_SERIAL)#define GET_MEM_AMT(m)	(((m) & A_MEM_AMT) == A_MEM_AMT)#define GET_KTABLES(m)	(((m) & A_KTABLES) == A_KTABLES)#define GET_NET_DEV(m)	(((m) & A_NET_DEV) == A_NET_DEV)#define GET_NET_EDEV(m)	(((m) & A_NET_EDEV) == A_NET_EDEV)#define GET_NET_SOCK(m)	(((m) & A_NET_SOCK) == A_NET_SOCK)#define GET_NET_NFS(m)	(((m) & A_NET_NFS) == A_NET_NFS)#define GET_NET_NFSD(m)	(((m) & A_NET_NFSD) == A_NET_NFSD)#define GET_QUEUE(m)	(((m) & A_QUEUE) == A_QUEUE)#define GET_DISK(m)	(((m) & A_DISK) == A_DISK)/* * kB -> number of pages. * Page size depends on machine architecture (4 kB, 8 kB, 16 kB, 64 kB...) */#define PG(k)	((k) >> kb_shift)/* Keywords */#define K_XALL	"XALL"#define K_SUM	"SUM"#define K_SELF	"SELF"#define K_SADC	"SADC"#define K_DEV	"DEV"#define K_EDEV	"EDEV"#define K_NFS	"NFS"#define K_NFSD	"NFSD"#define K_SOCK	"SOCK"/* S_= sar/sadc/sadf - F_= Flag */#define S_F_ALL_PROC      	0x0001#define S_F_SA_ROTAT      	0x0002#define S_F_DEV_PRETTY		0x0004#define S_F_A_OPTION		0x0008#define S_F_F_OPTION		0x0010#define S_F_I_OPTION		0x0020#define S_F_TRUE_TIME		0x0040#define S_F_L_OPTION		0x0080#define S_F_HAS_PPARTITIONS	0x0100#define S_F_HAS_DISKSTATS	0x0200#define S_F_FILE_LCK		0X0400#define S_F_PER_PROC		0x0800#define S_F_X_ALL		0x1000#define WANT_ALL_PROC(m)	(((m) & S_F_ALL_PROC) == S_F_ALL_PROC)#define WANT_SA_ROTAT(m)	(((m) & S_F_SA_ROTAT) == S_F_SA_ROTAT)#define USE_PRETTY_OPTION(m)	(((m) & S_F_DEV_PRETTY) == S_F_DEV_PRETTY)#define USE_A_OPTION(m)		(((m) & S_F_A_OPTION) == S_F_A_OPTION)#define USE_F_OPTION(m)		(((m) & S_F_F_OPTION) == S_F_F_OPTION)#define USE_I_OPTION(m)		(((m) & S_F_I_OPTION) == S_F_I_OPTION)#define PRINT_TRUE_TIME(m)	(((m) & S_F_TRUE_TIME) == S_F_TRUE_TIME)#define USE_L_OPTION(m)		(((m) & S_F_L_OPTION) == S_F_L_OPTION)#define HAS_PPARTITIONS(m)	(((m) & S_F_HAS_PPARTITIONS) == S_F_HAS_PPARTITIONS)#define HAS_DISKSTATS(m)	(((m) & S_F_HAS_DISKSTATS) == S_F_HAS_DISKSTATS)#define FILE_LOCKED(m)		(((m) & S_F_FILE_LCK) == S_F_FILE_LCK)#define WANT_PER_PROC(m)	(((m) & S_F_PER_PROC) == S_F_PER_PROC)#define WANT_ALL_PIDS(m)	(((m) & S_F_X_ALL) == S_F_X_ALL)/* Output formats (O_= Output)  */#define S_O_NONE		0#define S_O_HDR_OPTION		1#define S_O_PPC_OPTION		2#define S_O_DB_OPTION		3#define S_O_XML_OPTION		4/* Files */#define PROC		"/proc"#define PSTAT		"stat"#define MEMINFO		"/proc/meminfo"#define PID_STAT	"/proc/%ld/stat"#define SERIAL		"/proc/tty/driver/serial"#define FDENTRY_STATE	"/proc/sys/fs/dentry-state"#define FFILE_NR	"/proc/sys/fs/file-nr"#define FINODE_STATE	"/proc/sys/fs/inode-state"#define FDQUOT_NR	"/proc/sys/fs/dquot-nr"#define FDQUOT_MAX	"/proc/sys/fs/dquot-max"#define FSUPER_NR	"/proc/sys/fs/super-nr"#define FSUPER_MAX	"/proc/sys/fs/super-max"#define FRTSIG_NR	"/proc/sys/kernel/rtsig-nr"#define FRTSIG_MAX	"/proc/sys/kernel/rtsig-max"#define NET_DEV		"/proc/net/dev"#define NET_SOCKSTAT	"/proc/net/sockstat"#define NET_RPC_NFS	"/proc/net/rpc/nfs"#define NET_RPC_NFSD	"/proc/net/rpc/nfsd"#define SADC		"sadc"#define LOADAVG		"/proc/loadavg"#define VMSTAT		"/proc/vmstat"#define NR_IFACE_PREALLOC	2#define NR_SERIAL_PREALLOC	2#define NR_IRQPROC_PREALLOC	3#define NR_IRQS			256/* Maximum number of processes that can be monitored simultaneously */#define MAX_PID_NR	256/* Maximum length of network interface name */#define MAX_IFACE_LEN	IFNAMSIZ/* * Maximum number of args that can be passed to sadc: * sadc -x <pid> [-x <pid> ...] -X <pid> [-X <pid> ...] *	-I <interval> <count> <outfile> NULL */#define MAX_ARGV_NR	(64 * 2) + 6#define USE_SADC	0#define USE_SA_FILE	1#define ST_IMMEDIATE	0#define ST_SINCE_BOOT	1#define NO_TM_START	0#define NO_TM_END	0#define NO_RESET	0#define NON_FATAL	0#define FATAL		1#define C_SAR		0#define C_SADF		1#define X_PID_SET	0x01#define X_PPID_SET	0x02/* Record type */#define R_STATS		1#define R_DUMMY		2#define R_LAST_STATS	3#define SOFT_SIZE	0#define HARD_SIZE	1/* * IMPORTANT NOTE: * Attributes such as 'aligned' and 'packed' have been defined for every * members of the following structures, so that: * 1) structures have a fixed size whether on 32 or 64-bit systems, * 2) we don't have variable gap between members. * Indeed, we want to be able to read daily data files recorded on * 32 and 64-bit systems, even if we are not on the same architecture. * Moreover, we are sure that sizeof(struct) is a constant for every * struct of same type, so that expressions like * struct *foo2 = struct *foo1 + i; * can be safely used. * * Structures are padded so that their length be a multiple of 8 bytes. * It is better (although not compulsory) for structures written * contiguously into daily data files and accessed the following way once * they are read into memory: * struct *foo2 = struct *foo1 + i;  (since i <=> sizeof(struct foo)) *//* System activity data file header */struct file_hdr {   /* --- LONG --- */   /* Time stamp in seconds since the epoch */   unsigned long  sa_ust_time			__attribute__ ((aligned (8)));   /* --- INT --- */   /* Activity flag */   unsigned int	  sa_actflag			__attribute__ ((aligned (8)));   /* Number of processes to monitor ( {-x | -X } ALL) */   unsigned int   sa_nr_pid			__attribute__ ((packed));   /* Number of interrupts per processor: 2 means two interrupts */   unsigned int   sa_irqcpu			__attribute__ ((packed));   /* Number of disks */   unsigned int   sa_nr_disk			__attribute__ ((packed));   /* Number of processors: 1 means two proc */   unsigned int   sa_proc 			__attribute__ ((packed));   /* Number of serial lines: 2 means two lines (ttyS00 and ttyS01) */   unsigned int   sa_serial 			__attribute__ ((packed));   /* Number of network devices (interfaces): 2 means two lines */   unsigned int   sa_iface 			__attribute__ ((packed));   /* --- SHORT --- */   /* System activity data file magic number */   unsigned short sa_magic			__attribute__ ((packed));   /* file_stats structure size */   unsigned short sa_st_size			__attribute__ ((packed));   /* --- CHAR --- */   /*    * Current day, month and year.    * No need to save DST (daylight saving time) flag, since it is not taken    * into account by the strftime() function used to print the timestamp.    */   unsigned char  sa_day			__attribute__ ((packed));   unsigned char  sa_month			__attribute__ ((packed));   unsigned char  sa_year			__attribute__ ((packed));   /*    * Size of a long integer. Useful to know the architecture on which    * the datafile was created.    */   char		  sa_sizeof_long		__attribute__ ((packed));   /* Operating system name */   char           sa_sysname[UTSNAME_LEN]	__attribute__ ((packed));   /* Machine hostname */   char           sa_nodename[UTSNAME_LEN]	__attribute__ ((packed));   /* Operating system release number */   char           sa_release[UTSNAME_LEN]	__attribute__ ((packed));};#define FILE_HDR_SIZE	(sizeof(struct file_hdr))struct file_stats {   /* --- LONG LONG --- */   /* Machine uptime (multiplied by the # of proc) */   unsigned long long uptime			__attribute__ ((aligned (16)));   /* Uptime reduced to one processor. Set *only* on SMP machines */   unsigned long long uptime0			__attribute__ ((aligned (16)));   unsigned long long context_swtch		__attribute__ ((aligned (16)));   unsigned long long cpu_user			__attribute__ ((aligned (16)));   unsigned long long cpu_nice			__attribute__ ((aligned (16)));   unsigned long long cpu_system		__attribute__ ((aligned (16)));   unsigned long long cpu_idle			__attribute__ ((aligned (16)));   unsigned long long cpu_iowait		__attribute__ ((aligned (16)));   unsigned long long cpu_steal			__attribute__ ((aligned (16)));   unsigned long long irq_sum			__attribute__ ((aligned (16)));   /* --- LONG --- */   /* Time stamp (number of seconds since the epoch) */   unsigned long ust_time			__attribute__ ((aligned (16)));   unsigned long processes			__attribute__ ((aligned (8)));   unsigned long pgpgin				__attribute__ ((aligned (8)));

⌨️ 快捷键说明

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