Merge branch 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'perf-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip: (311 commits)
  perf tools: Add mode to build without newt support
  perf symbols: symbol inconsistency message should be done only at verbose=1
  perf tui: Add explicit -lslang option
  perf options: Type check all the remaining OPT_ variants
  perf options: Type check OPT_BOOLEAN and fix the offenders
  perf options: Check v type in OPT_U?INTEGER
  perf options: Introduce OPT_UINTEGER
  perf tui: Add workaround for slang < 2.1.4
  perf record: Fix bug mismatch with -c option definition
  perf options: Introduce OPT_U64
  perf tui: Add help window to show key associations
  perf tui: Make <- exit menus too
  perf newt: Add single key shortcuts for zoom into DSO and threads
  perf newt: Exit browser unconditionally when CTRL+C, q or Q is pressed
  perf newt: Fix the 'A'/'a' shortcut for annotate
  perf newt: Make <- exit the ui_browser
  x86, perf: P4 PMU - fix counters management logic
  perf newt: Make <- zoom out filters
  perf report: Report number of events, not samples
  perf hist: Clarify events_stats fields usage
  ...

Fix up trivial conflicts in kernel/fork.c and tools/perf/builtin-record.c
This commit is contained in:
Linus Torvalds
2010-05-18 08:19:03 -07:00
207 changed files with 14703 additions and 8164 deletions

View File

@ -37,10 +37,12 @@ int header_page_ts_offset;
int header_page_ts_size;
int header_page_size_offset;
int header_page_size_size;
int header_page_overwrite_offset;
int header_page_overwrite_size;
int header_page_data_offset;
int header_page_data_size;
int latency_format;
bool latency_format;
static char *input_buf;
static unsigned long long input_buf_ptr;
@ -628,23 +630,32 @@ static int test_type(enum event_type type, enum event_type expect)
return 0;
}
static int test_type_token(enum event_type type, char *token,
enum event_type expect, const char *expect_tok)
static int __test_type_token(enum event_type type, char *token,
enum event_type expect, const char *expect_tok,
bool warn)
{
if (type != expect) {
warning("Error: expected type %d but read %d",
expect, type);
if (warn)
warning("Error: expected type %d but read %d",
expect, type);
return -1;
}
if (strcmp(token, expect_tok) != 0) {
warning("Error: expected '%s' but read '%s'",
expect_tok, token);
if (warn)
warning("Error: expected '%s' but read '%s'",
expect_tok, token);
return -1;
}
return 0;
}
static int test_type_token(enum event_type type, char *token,
enum event_type expect, const char *expect_tok)
{
return __test_type_token(type, token, expect, expect_tok, true);
}
static int __read_expect_type(enum event_type expect, char **tok, int newline_ok)
{
enum event_type type;
@ -661,7 +672,8 @@ static int read_expect_type(enum event_type expect, char **tok)
return __read_expect_type(expect, tok, 1);
}
static int __read_expected(enum event_type expect, const char *str, int newline_ok)
static int __read_expected(enum event_type expect, const char *str,
int newline_ok, bool warn)
{
enum event_type type;
char *token;
@ -672,7 +684,7 @@ static int __read_expected(enum event_type expect, const char *str, int newline_
else
type = read_token_item(&token);
ret = test_type_token(type, token, expect, str);
ret = __test_type_token(type, token, expect, str, warn);
free_token(token);
@ -681,12 +693,12 @@ static int __read_expected(enum event_type expect, const char *str, int newline_
static int read_expected(enum event_type expect, const char *str)
{
return __read_expected(expect, str, 1);
return __read_expected(expect, str, 1, true);
}
static int read_expected_item(enum event_type expect, const char *str)
{
return __read_expected(expect, str, 0);
return __read_expected(expect, str, 0, true);
}
static char *event_read_name(void)
@ -744,7 +756,7 @@ static int field_is_string(struct format_field *field)
static int field_is_dynamic(struct format_field *field)
{
if (!strcmp(field->type, "__data_loc"))
if (!strncmp(field->type, "__data_loc", 10))
return 1;
return 0;
@ -3087,88 +3099,6 @@ static void print_args(struct print_arg *args)
}
}
static void parse_header_field(const char *field,
int *offset, int *size)
{
char *token;
int type;
if (read_expected(EVENT_ITEM, "field") < 0)
return;
if (read_expected(EVENT_OP, ":") < 0)
return;
/* type */
if (read_expect_type(EVENT_ITEM, &token) < 0)
goto fail;
free_token(token);
if (read_expected(EVENT_ITEM, field) < 0)
return;
if (read_expected(EVENT_OP, ";") < 0)
return;
if (read_expected(EVENT_ITEM, "offset") < 0)
return;
if (read_expected(EVENT_OP, ":") < 0)
return;
if (read_expect_type(EVENT_ITEM, &token) < 0)
goto fail;
*offset = atoi(token);
free_token(token);
if (read_expected(EVENT_OP, ";") < 0)
return;
if (read_expected(EVENT_ITEM, "size") < 0)
return;
if (read_expected(EVENT_OP, ":") < 0)
return;
if (read_expect_type(EVENT_ITEM, &token) < 0)
goto fail;
*size = atoi(token);
free_token(token);
if (read_expected(EVENT_OP, ";") < 0)
return;
type = read_token(&token);
if (type != EVENT_NEWLINE) {
/* newer versions of the kernel have a "signed" type */
if (type != EVENT_ITEM)
goto fail;
if (strcmp(token, "signed") != 0)
goto fail;
free_token(token);
if (read_expected(EVENT_OP, ":") < 0)
return;
if (read_expect_type(EVENT_ITEM, &token))
goto fail;
free_token(token);
if (read_expected(EVENT_OP, ";") < 0)
return;
if (read_expect_type(EVENT_NEWLINE, &token))
goto fail;
}
fail:
free_token(token);
}
int parse_header_page(char *buf, unsigned long size)
{
init_input_buf(buf, size);
parse_header_field("timestamp", &header_page_ts_offset,
&header_page_ts_size);
parse_header_field("commit", &header_page_size_offset,
&header_page_size_size);
parse_header_field("data", &header_page_data_offset,
&header_page_data_size);
return 0;
}
int parse_ftrace_file(char *buf, unsigned long size)
{
struct format_field *field;