minix/kernel/profile.h
Tomas Hruby 87c576584d Internal 64M buffer for profiling
- when profiling is compiled in kernel includes a 64M buffer for
  sample

- 64M is the default used by profile tool as its buffer

- when using nmi profiling it is not possible to always copy sample
  stright to userland as the nmi may (and does) happen in bad moments

- reduces sampling overhead as samples are copied out only when
  profiling stops
2010-09-23 10:49:48 +00:00

38 lines
1.3 KiB
C

#ifndef PROFILE_H
#define PROFILE_H
#include <minix/profile.h>
#if SPROFILE /* statistical profiling */
#include "arch_watchdog.h"
#define SAMPLE_BUFFER_SIZE (64 << 20)
EXTERN char sprof_sample_buffer[SAMPLE_BUFFER_SIZE];
EXTERN int sprofiling; /* whether profiling is running */
EXTERN int sprofiling_type; /* whether profiling is running */
EXTERN int sprof_mem_size; /* available user memory for data */
EXTERN struct sprof_info_s sprof_info; /* profiling info for user program */
EXTERN vir_bytes sprof_data_addr_vir; /* user address to write data */
EXTERN endpoint_t sprof_ep; /* user process */
_PROTOTYPE(void nmi_sprofile_handler, (struct nmi_frame * frame));
#endif /* SPROFILE */
EXTERN int cprof_mem_size; /* available user memory for data */
EXTERN struct cprof_info_s cprof_info; /* profiling info for user program */
EXTERN int cprof_procs_no; /* number of profiled processes */
EXTERN struct cprof_proc_info_s { /* info about profiled process */
endpoint_t endpt; /* endpoint */
char *name; /* name */
vir_bytes ctl_v; /* location of control struct */
vir_bytes buf_v; /* location of buffer */
int slots_used; /* table slots used */
} cprof_proc_info_inst;
EXTERN struct cprof_proc_info_s cprof_proc_info[NR_SYS_PROCS];
#endif /* PROFILE_H */