1 #include <xen/lib.h> 2 parse_size_and_unit(const char * s,const char ** ps)3unsigned long long parse_size_and_unit(const char *s, const char **ps) 4 { 5 unsigned long long ret; 6 const char *s1; 7 8 ret = simple_strtoull(s, &s1, 0); 9 10 switch ( *s1 ) 11 { 12 case 'T': case 't': 13 ret <<= 10; 14 /* fallthrough */ 15 case 'G': case 'g': 16 ret <<= 10; 17 /* fallthrough */ 18 case 'M': case 'm': 19 ret <<= 10; 20 /* fallthrough */ 21 case 'K': case 'k': 22 ret <<= 10; 23 /* fallthrough */ 24 case 'B': case 'b': 25 s1++; 26 break; 27 case '%': 28 if ( ps ) 29 break; 30 /* fallthrough */ 31 default: 32 ret <<= 10; /* default to kB */ 33 break; 34 } 35 36 if ( ps != NULL ) 37 *ps = s1; 38 39 return ret; 40 } 41 42 /* 43 * Local variables: 44 * mode: C 45 * c-file-style: "BSD" 46 * c-basic-offset: 4 47 * tab-width: 4 48 * indent-tabs-mode: nil 49 * End: 50 */ 51