mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Commit 1e4c64b71c ("mm/memblock: Add "reserve_mem" to reserved named
memory at boot up") introduce the usage of memparse(), which is not
defined in memblock test.
Add the definition and link it to fix the build.
Signed-off-by: Wei Yang <richard.weiyang@gmail.com>
Link: https://lore.kernel.org/r/20240806010319.29194-3-richard.weiyang@gmail.com
Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>
		
	
			
		
			
				
	
	
		
			53 lines
		
	
	
	
		
			875 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
	
		
			875 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0-only
 | 
						|
/*
 | 
						|
 * From lib/cmdline.c
 | 
						|
 */
 | 
						|
#include <stdlib.h>
 | 
						|
 | 
						|
#if __has_attribute(__fallthrough__)
 | 
						|
# define fallthrough                    __attribute__((__fallthrough__))
 | 
						|
#else
 | 
						|
# define fallthrough                    do {} while (0)  /* fallthrough */
 | 
						|
#endif
 | 
						|
 | 
						|
unsigned long long memparse(const char *ptr, char **retptr)
 | 
						|
{
 | 
						|
	char *endptr;	/* local pointer to end of parsed string */
 | 
						|
 | 
						|
	unsigned long long ret = strtoll(ptr, &endptr, 0);
 | 
						|
 | 
						|
	switch (*endptr) {
 | 
						|
	case 'E':
 | 
						|
	case 'e':
 | 
						|
		ret <<= 10;
 | 
						|
		fallthrough;
 | 
						|
	case 'P':
 | 
						|
	case 'p':
 | 
						|
		ret <<= 10;
 | 
						|
		fallthrough;
 | 
						|
	case 'T':
 | 
						|
	case 't':
 | 
						|
		ret <<= 10;
 | 
						|
		fallthrough;
 | 
						|
	case 'G':
 | 
						|
	case 'g':
 | 
						|
		ret <<= 10;
 | 
						|
		fallthrough;
 | 
						|
	case 'M':
 | 
						|
	case 'm':
 | 
						|
		ret <<= 10;
 | 
						|
		fallthrough;
 | 
						|
	case 'K':
 | 
						|
	case 'k':
 | 
						|
		ret <<= 10;
 | 
						|
		endptr++;
 | 
						|
		fallthrough;
 | 
						|
	default:
 | 
						|
		break;
 | 
						|
	}
 | 
						|
 | 
						|
	if (retptr)
 | 
						|
		*retptr = endptr;
 | 
						|
 | 
						|
	return ret;
 | 
						|
}
 |