1 // SPDX-License-Identifier: GPL-2.0-only 1 // SPDX-License-Identifier: GPL-2.0-only 2 /* 2 /* 3 * From lib/cmdline.c 3 * From lib/cmdline.c 4 */ 4 */ 5 #include <stdlib.h> 5 #include <stdlib.h> 6 6 7 #if __has_attribute(__fallthrough__) 7 #if __has_attribute(__fallthrough__) 8 # define fallthrough __attr 8 # define fallthrough __attribute__((__fallthrough__)) 9 #else 9 #else 10 # define fallthrough do {} 10 # define fallthrough do {} while (0) /* fallthrough */ 11 #endif 11 #endif 12 12 13 unsigned long long memparse(const char *ptr, c 13 unsigned long long memparse(const char *ptr, char **retptr) 14 { 14 { 15 char *endptr; /* local pointer to en 15 char *endptr; /* local pointer to end of parsed string */ 16 16 17 unsigned long long ret = strtoll(ptr, 17 unsigned long long ret = strtoll(ptr, &endptr, 0); 18 18 19 switch (*endptr) { 19 switch (*endptr) { 20 case 'E': 20 case 'E': 21 case 'e': 21 case 'e': 22 ret <<= 10; 22 ret <<= 10; 23 fallthrough; 23 fallthrough; 24 case 'P': 24 case 'P': 25 case 'p': 25 case 'p': 26 ret <<= 10; 26 ret <<= 10; 27 fallthrough; 27 fallthrough; 28 case 'T': 28 case 'T': 29 case 't': 29 case 't': 30 ret <<= 10; 30 ret <<= 10; 31 fallthrough; 31 fallthrough; 32 case 'G': 32 case 'G': 33 case 'g': 33 case 'g': 34 ret <<= 10; 34 ret <<= 10; 35 fallthrough; 35 fallthrough; 36 case 'M': 36 case 'M': 37 case 'm': 37 case 'm': 38 ret <<= 10; 38 ret <<= 10; 39 fallthrough; 39 fallthrough; 40 case 'K': 40 case 'K': 41 case 'k': 41 case 'k': 42 ret <<= 10; 42 ret <<= 10; 43 endptr++; 43 endptr++; 44 fallthrough; 44 fallthrough; 45 default: 45 default: 46 break; 46 break; 47 } 47 } 48 48 49 if (retptr) 49 if (retptr) 50 *retptr = endptr; 50 *retptr = endptr; 51 51 52 return ret; 52 return ret; 53 } 53 } 54 54
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.