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