diff options
author | Josh Triplett <josh@joshtriplett.org> | 2009-08-05 15:28:57 -0400 |
---|---|---|
committer | Josh Triplett <josh@joshtriplett.org> | 2009-08-05 15:28:57 -0400 |
commit | 4e78b7289f69248c2a2d51a7bf095d25f9c615d8 (patch) | |
tree | 3fd2e5de576daa952948c2860d33042ee649a5cd | |
parent | 4b9fe8739bf497bdecf91411e4b5c4afcac5742a (diff) |
Turn the list of known flags into a data structure.
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r-- | parse-events.c | 41 |
1 files changed, 23 insertions, 18 deletions
diff --git a/parse-events.c b/parse-events.c index 2a7fa44..1c83293 100644 --- a/parse-events.c +++ b/parse-events.c | |||
@@ -1898,8 +1898,27 @@ static unsigned long long eval_num_arg(void *data, int size, | |||
1898 | return val; | 1898 | return val; |
1899 | } | 1899 | } |
1900 | 1900 | ||
1901 | struct flag { | ||
1902 | const char *name; | ||
1903 | unsigned long long value; | ||
1904 | }; | ||
1905 | |||
1906 | static const struct flag flags[] = { | ||
1907 | { "HI_SOFTIRQ", 0 }, | ||
1908 | { "TIMER_SOFTIRQ", 1 }, | ||
1909 | { "NET_TX_SOFTIRQ", 2 }, | ||
1910 | { "NET_RX_SOFTIRQ", 3 }, | ||
1911 | { "BLOCK_SOFTIRQ", 4 }, | ||
1912 | { "TASKLET_SOFTIRQ", 5 }, | ||
1913 | { "SCHED_SOFTIRQ", 6 }, | ||
1914 | { "HRTIMER_SOFTIRQ", 7 }, | ||
1915 | { "RCU_SOFTIRQ", 8 }, | ||
1916 | }; | ||
1917 | |||
1901 | static unsigned long long eval_flag(const char *flag) | 1918 | static unsigned long long eval_flag(const char *flag) |
1902 | { | 1919 | { |
1920 | int i; | ||
1921 | |||
1903 | /* | 1922 | /* |
1904 | * Some flags in the format files do not get converted. | 1923 | * Some flags in the format files do not get converted. |
1905 | * If the flag is not numeric, see if it is something that | 1924 | * If the flag is not numeric, see if it is something that |
@@ -1908,24 +1927,10 @@ static unsigned long long eval_flag(const char *flag) | |||
1908 | if (isdigit(flag[0])) | 1927 | if (isdigit(flag[0])) |
1909 | return strtoull(flag, NULL, 0); | 1928 | return strtoull(flag, NULL, 0); |
1910 | 1929 | ||
1911 | if (strcmp("HI_SOFTIRQ", flag) == 0) | 1930 | for (i = 0; i < sizeof(flags)/sizeof(flags[0]); i++) |
1912 | return 0; | 1931 | if (strcmp(flags[i].name, flag) == 0) |
1913 | if (strcmp("TIMER_SOFTIRQ", flag) == 0) | 1932 | return flags[i].value; |
1914 | return 1; | 1933 | |
1915 | if (strcmp("NET_TX_SOFTIRQ", flag) == 0) | ||
1916 | return 2; | ||
1917 | if (strcmp("NET_RX_SOFTIRQ", flag) == 0) | ||
1918 | return 3; | ||
1919 | if (strcmp("BLOCK_SOFTIRQ", flag) == 0) | ||
1920 | return 4; | ||
1921 | if (strcmp("TASKLET_SOFTIRQ", flag) == 0) | ||
1922 | return 5; | ||
1923 | if (strcmp("SCHED_SOFTIRQ", flag) == 0) | ||
1924 | return 6; | ||
1925 | if (strcmp("HRTIMER_SOFTIRQ", flag) == 0) | ||
1926 | return 7; | ||
1927 | if (strcmp("RCU_SOFTIRQ", flag) == 0) | ||
1928 | return 8; | ||
1929 | return 0; | 1934 | return 0; |
1930 | } | 1935 | } |
1931 | 1936 | ||