1*1a3d31e3SAndroid Build Coastguard Worker #include <strings.h>
2*1a3d31e3SAndroid Build Coastguard Worker #include "blktrace.h"
3*1a3d31e3SAndroid Build Coastguard Worker
4*1a3d31e3SAndroid Build Coastguard Worker #define DECLARE_MASK_MAP(mask) { BLK_TC_##mask, #mask, "BLK_TC_"#mask }
5*1a3d31e3SAndroid Build Coastguard Worker #define COMPARE_MASK_MAP(mmp, str) \
6*1a3d31e3SAndroid Build Coastguard Worker (!strcasecmp((mmp)->short_form, (str)) || \
7*1a3d31e3SAndroid Build Coastguard Worker !strcasecmp((mmp)->long_form, (str)))
8*1a3d31e3SAndroid Build Coastguard Worker
9*1a3d31e3SAndroid Build Coastguard Worker struct mask_map {
10*1a3d31e3SAndroid Build Coastguard Worker int mask;
11*1a3d31e3SAndroid Build Coastguard Worker char *short_form;
12*1a3d31e3SAndroid Build Coastguard Worker char *long_form;
13*1a3d31e3SAndroid Build Coastguard Worker };
14*1a3d31e3SAndroid Build Coastguard Worker
15*1a3d31e3SAndroid Build Coastguard Worker static struct mask_map mask_maps[] = {
16*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(READ),
17*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(WRITE),
18*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(FLUSH),
19*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(SYNC),
20*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(QUEUE),
21*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(REQUEUE),
22*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(ISSUE),
23*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(COMPLETE),
24*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(FS),
25*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(PC),
26*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(NOTIFY),
27*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(AHEAD),
28*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(META),
29*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(DISCARD),
30*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(DRV_DATA),
31*1a3d31e3SAndroid Build Coastguard Worker DECLARE_MASK_MAP(FUA),
32*1a3d31e3SAndroid Build Coastguard Worker };
33*1a3d31e3SAndroid Build Coastguard Worker
find_mask_map(char * string)34*1a3d31e3SAndroid Build Coastguard Worker int find_mask_map(char *string)
35*1a3d31e3SAndroid Build Coastguard Worker {
36*1a3d31e3SAndroid Build Coastguard Worker unsigned int i;
37*1a3d31e3SAndroid Build Coastguard Worker
38*1a3d31e3SAndroid Build Coastguard Worker for (i = 0; i < sizeof(mask_maps)/sizeof(mask_maps[0]); i++)
39*1a3d31e3SAndroid Build Coastguard Worker if (COMPARE_MASK_MAP(&mask_maps[i], string))
40*1a3d31e3SAndroid Build Coastguard Worker return mask_maps[i].mask;
41*1a3d31e3SAndroid Build Coastguard Worker
42*1a3d31e3SAndroid Build Coastguard Worker return -1;
43*1a3d31e3SAndroid Build Coastguard Worker }
44*1a3d31e3SAndroid Build Coastguard Worker
valid_act_opt(int x)45*1a3d31e3SAndroid Build Coastguard Worker int valid_act_opt(int x)
46*1a3d31e3SAndroid Build Coastguard Worker {
47*1a3d31e3SAndroid Build Coastguard Worker return (1 <= x) && (x < (1 << BLK_TC_SHIFT));
48*1a3d31e3SAndroid Build Coastguard Worker }
49