mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-11-24 19:30:52 +07:00
perf: Make -f the default for perf record
Force the overwriting mode by default if append mode is not explicit. Adding -f every time one uses perf on a daily basis quickly becomes a burden. Keep the -f among the options though to avoid breaking some random users scripts. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Arnaldo Carvalho de Melo <acme@redhat.com> Cc: Peter Zijlstra <a.p.zijlstra@chello.nl> Cc: Paul Mackerras <paulus@samba.org> Cc: Ingo Molnar <mingo@elte.hu> Cc: Thomas Gleixner <tglx@linutronix.de>
This commit is contained in:
parent
a1e2f60e3e
commit
7865e817e9
@ -58,7 +58,7 @@ OPTIONS
|
||||
|
||||
-f::
|
||||
--force::
|
||||
Overwrite existing data file.
|
||||
Overwrite existing data file. (deprecated)
|
||||
|
||||
-c::
|
||||
--count=::
|
||||
|
@ -26,6 +26,11 @@
|
||||
#include <unistd.h>
|
||||
#include <sched.h>
|
||||
|
||||
enum write_mode_t {
|
||||
WRITE_FORCE,
|
||||
WRITE_APPEND
|
||||
};
|
||||
|
||||
static int *fd[MAX_NR_CPUS][MAX_COUNTERS];
|
||||
|
||||
static long default_interval = 0;
|
||||
@ -47,8 +52,7 @@ static pid_t *all_tids = NULL;
|
||||
static int thread_num = 0;
|
||||
static pid_t child_pid = -1;
|
||||
static bool inherit = true;
|
||||
static bool force = false;
|
||||
static bool append_file = false;
|
||||
static enum write_mode_t write_mode = WRITE_FORCE;
|
||||
static bool call_graph = false;
|
||||
static bool inherit_stat = false;
|
||||
static bool no_samples = false;
|
||||
@ -450,26 +454,19 @@ static int __cmd_record(int argc, const char **argv)
|
||||
}
|
||||
|
||||
if (!stat(output_name, &st) && st.st_size) {
|
||||
if (!force) {
|
||||
if (!append_file) {
|
||||
pr_err("Error, output file %s exists, use -A "
|
||||
"to append or -f to overwrite.\n",
|
||||
output_name);
|
||||
exit(-1);
|
||||
}
|
||||
} else {
|
||||
if (write_mode == WRITE_FORCE) {
|
||||
char oldname[PATH_MAX];
|
||||
snprintf(oldname, sizeof(oldname), "%s.old",
|
||||
output_name);
|
||||
unlink(oldname);
|
||||
rename(output_name, oldname);
|
||||
}
|
||||
} else {
|
||||
append_file = false;
|
||||
} else if (write_mode == WRITE_APPEND) {
|
||||
write_mode = WRITE_FORCE;
|
||||
}
|
||||
|
||||
flags = O_CREAT|O_RDWR;
|
||||
if (append_file)
|
||||
if (write_mode == WRITE_APPEND)
|
||||
file_new = 0;
|
||||
else
|
||||
flags |= O_TRUNC;
|
||||
@ -480,7 +477,8 @@ static int __cmd_record(int argc, const char **argv)
|
||||
exit(-1);
|
||||
}
|
||||
|
||||
session = perf_session__new(output_name, O_WRONLY, force);
|
||||
session = perf_session__new(output_name, O_WRONLY,
|
||||
write_mode == WRITE_FORCE);
|
||||
if (session == NULL) {
|
||||
pr_err("Not enough memory for reading perf file header\n");
|
||||
return -1;
|
||||
@ -667,6 +665,8 @@ static const char * const record_usage[] = {
|
||||
NULL
|
||||
};
|
||||
|
||||
static bool force, append_file;
|
||||
|
||||
static const struct option options[] = {
|
||||
OPT_CALLBACK('e', "event", NULL, "event",
|
||||
"event selector. use 'perf list' to list available events",
|
||||
@ -688,7 +688,7 @@ static const struct option options[] = {
|
||||
OPT_INTEGER('C', "profile_cpu", &profile_cpu,
|
||||
"CPU to profile on"),
|
||||
OPT_BOOLEAN('f', "force", &force,
|
||||
"overwrite existing data file"),
|
||||
"overwrite existing data file (deprecated)"),
|
||||
OPT_LONG('c', "count", &default_interval,
|
||||
"event period to sample"),
|
||||
OPT_STRING('o', "output", &output_name, "file",
|
||||
@ -725,6 +725,16 @@ int cmd_record(int argc, const char **argv, const char *prefix __used)
|
||||
!system_wide && profile_cpu == -1)
|
||||
usage_with_options(record_usage, options);
|
||||
|
||||
if (force && append_file) {
|
||||
fprintf(stderr, "Can't overwrite and append at the same time."
|
||||
" You need to choose between -f and -A");
|
||||
usage_with_options(record_usage, options);
|
||||
} else if (append_file) {
|
||||
write_mode = WRITE_APPEND;
|
||||
} else {
|
||||
write_mode = WRITE_FORCE;
|
||||
}
|
||||
|
||||
symbol__init();
|
||||
|
||||
if (!nr_counters) {
|
||||
|
Loading…
Reference in New Issue
Block a user