aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJosh Triplett <josh@joshtriplett.org>2009-08-05 15:28:57 -0400
committerJosh Triplett <josh@joshtriplett.org>2009-08-05 15:28:57 -0400
commit4e78b7289f69248c2a2d51a7bf095d25f9c615d8 (patch)
tree3fd2e5de576daa952948c2860d33042ee649a5cd
parent4b9fe8739bf497bdecf91411e4b5c4afcac5742a (diff)
Turn the list of known flags into a data structure.
Signed-off-by: Josh Triplett <josh@joshtriplett.org>
-rw-r--r--parse-events.c41
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
1901struct flag {
1902 const char *name;
1903 unsigned long long value;
1904};
1905
1906static 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
1901static unsigned long long eval_flag(const char *flag) 1918static 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