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

📄 sb1250_prof.h

📁 这个linux源代码是很全面的~基本完整了~使用c编译的~由于时间问题我没有亲自测试~但就算用来做参考资料也是非常好的
💻 H
字号:
/* * Copyright (C) 2001 Broadcom Corporation * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License * as published by the Free Software Foundation; either version 2 * of the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA. *//* * * Definitions for the sb1250_prof pseudo device. * *///#include <sys/param.h>//#include <sys/device.h>#ifndef SB1250_PROF_H#define SB1250_PROF_H 1#define MAXCPUS 1#define NEWPIDSIZE 160/* The two definitions below must match those in pgather.c */#define MAX_COUNTERS 4#define MAX_SLOTS 8#define STATStypedef struct {  u_int8_t  event;  u_int8_t  hwcode;     /* pcarch-specific bits identifying desired event */  u_int64_t period;     /* 40-bit sampling period during slot */} sbprof_mux_counter_t;typedef struct {  sbprof_mux_counter_t                counter[MAX_COUNTERS];	/* data for setting up counter */  u_int8_t	n;			/* number of counters to use in slot */} sbprof_mux_slot_t;typedef struct {  sbprof_mux_slot_t slots[MAX_SLOTS];} sbprof_mux_slots;typedef struct {  u_int64_t total;	/* total number of interrupts */  u_int64_t dropped;	/* total interrupts when buffers were full */  u_int64_t value;	/* initial counter value when slot next entered */  u_int32_t start_period_low;	/* counter val for starting a period */  u_int8_t  start_period_high;  u_int8_t  event;      /* pcarch-specific event_t */  u_int8_t  hwcode;	/* pcarch-specific code for event */  u_int8_t  inuse;	/* Is counter X slot actually used? */} event_counter_state_t;typedef struct {  u_int32_t total;	 /* total for current run of slot */  u_int32_t dropped;	 /* dropped for current run of slot */  u_int64_t start_period;/* counter value to start a full period */} active_counter_state_t;struct _cpudata1 {  /******* page-aligned boundary *********************************************/  u_int32_t last_pid;	/* Pid for last sample in buffer (-1 initially) */  u_int8_t  curbuf;	/* 2 -> both buffers full at end of last interrupt			   1 -> use buffer[1]			   0 -> use buffer[0] */  u_int8_t  nextbuf;	/* the index of the next buffer to be filled */  u_int8_t  nnewpid[2]; /* number of entries set in new_pid[i] */  u_int32_t next;       /* index of next free entry in curbuf */  int32_t   last_event; /* index of byte just past last event DP_D_EVENTS			   message in curbuf that needs the number of events			   filled in.  -1 means there is no such message and			   that such a message must be entered before			   adding event samples.			 */  /* 16-byte boundary */  volatile u_int32_t full[2];                        /* full[i] > 0 means buffer[i] needs emptying.			   0 to nonzero done by sbprofintr().			   nonzero to zero by sbprofioctl().			   When nonzero, full[i] is the number of bytes			   set in buffer[i].			*/  u_int32_t threshold;  /* when does the current multiplexing slot expire? */  u_int8_t slotid;      /* index into slots[] of current multiplexing slot */  u_int8_t nslots;	/* number of slots */  u_int8_t needs_scan;  u_int8_t pad[1];  /******* 32-byte boundary *********************************************/  active_counter_state_t cur_slot[MAX_COUNTERS];  /******* 32-byte boundary *********************************************/  event_counter_state_t event_counter_state[MAX_SLOTS][MAX_COUNTERS];  /******* 32-byte boundary *********************************************/  u_int32_t overshot[MAX_SLOTS];  u_int32_t newpid[2][NEWPIDSIZE];  /* new_pid[i][] contains indices of				       buffer[i][] where a new_pid message				       is encoded and needs to have the				       image_id, base addr, and num_inst				       fields set by the user-level daemon */#ifdef STATS  u_int64_t newpidlimit;  u_int64_t buflimit;#endif};#define SBPROF_BUFSIZE (32*1024 - (sizeof(struct _cpudata1)+1)/2)typedef struct _cpudata {  struct _cpudata1 x;  u_int8_t buffer[2][SBPROF_BUFSIZE];} cpudata_t;#define SBPROF_START    _IOW('S', 0x1, sbprof_mux_slots)#define SBPROF_STOP     _IO('S', 0x2)#define SBPROF_BUFFULL  _IOWR('S', 0x3, int)#define SBPROF_BUFEMPTY _IOW('S', 0x4, int)#if NEWPIDSIZE > 254#error "newpidsize too big"#endif#endif /* SB1250_PROF_H */

⌨️ 快捷键说明

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