xref: /aosp_15_r20/external/blktrace/act_mask.c (revision 1a3d31e37cc95e9919fd86900a2b6a555f55952c)
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