mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-11-15 16:24:13 +08:00
7df01d96b2
Oprofile counters are setup when profiling is disabled. Thus, writing to oprofilefs has no immediate effect. Changes are updated only after oprofile is reenabled. To keep userland and kernel states synchronized, we now allow configuration of oprofile only if profiling is disabled. In this case it checks if the profiler is running and then disables write access to oprofilefs by returning -EBUSY. The change should be backward compatible with current oprofile userland daemon. Acked-by: Maynard Johnson <maynardj@us.ibm.com> Cc: William Cohen <wcohen@redhat.com> Cc: Suravee Suthikulpanit <suravee.suthikulpanit@amd.com> Signed-off-by: Robert Richter <robert.richter@amd.com>
44 lines
1.0 KiB
C
44 lines
1.0 KiB
C
/**
|
|
* @file oprof.h
|
|
*
|
|
* @remark Copyright 2002 OProfile authors
|
|
* @remark Read the file COPYING
|
|
*
|
|
* @author John Levon <levon@movementarian.org>
|
|
*/
|
|
|
|
#ifndef OPROF_H
|
|
#define OPROF_H
|
|
|
|
int oprofile_setup(void);
|
|
void oprofile_shutdown(void);
|
|
|
|
int oprofilefs_register(void);
|
|
void oprofilefs_unregister(void);
|
|
|
|
int oprofile_start(void);
|
|
void oprofile_stop(void);
|
|
|
|
struct oprofile_operations;
|
|
|
|
extern unsigned long oprofile_buffer_size;
|
|
extern unsigned long oprofile_cpu_buffer_size;
|
|
extern unsigned long oprofile_buffer_watershed;
|
|
extern unsigned long oprofile_time_slice;
|
|
|
|
extern struct oprofile_operations oprofile_ops;
|
|
extern unsigned long oprofile_started;
|
|
extern unsigned long oprofile_backtrace_depth;
|
|
|
|
struct super_block;
|
|
struct dentry;
|
|
|
|
void oprofile_create_files(struct super_block *sb, struct dentry *root);
|
|
int oprofile_timer_init(struct oprofile_operations *ops);
|
|
void oprofile_timer_exit(void);
|
|
|
|
int oprofile_set_ulong(unsigned long *addr, unsigned long val);
|
|
int oprofile_set_timeout(unsigned long time);
|
|
|
|
#endif /* OPROF_H */
|