#ifndef _GPXE_UMALLOC_H
#define _GPXE_UMALLOC_H

/**
 * @file
 *
 * User memory allocation
 *
 */

FILE_LICENCE ( GPL2_OR_LATER );

#include <gpxe/api.h>
#include <config/umalloc.h>
#include <gpxe/uaccess.h>

/**
 * Provide a user memory allocation API implementation
 *
 * @v _prefix		Subsystem prefix
 * @v _api_func		API function
 * @v _func		Implementing function
 */
#define PROVIDE_UMALLOC( _subsys, _api_func, _func ) \
	PROVIDE_SINGLE_API ( UMALLOC_PREFIX_ ## _subsys, _api_func, _func )

/* Include all architecture-independent I/O API headers */
#include <gpxe/efi/efi_umalloc.h>

/* Include all architecture-dependent I/O API headers */
#include <bits/umalloc.h>

/**
 * Reallocate external memory
 *
 * @v userptr		Memory previously allocated by umalloc(), or UNULL
 * @v new_size		Requested size
 * @ret userptr		Allocated memory, or UNULL
 *
 * Calling realloc() with a new size of zero is a valid way to free a
 * memory block.
 */
userptr_t urealloc ( userptr_t userptr, size_t new_size );

/**
 * Allocate external memory
 *
 * @v size		Requested size
 * @ret userptr		Memory, or UNULL
 *
 * Memory is guaranteed to be aligned to a page boundary.
 */
static inline __always_inline userptr_t umalloc ( size_t size ) {
	return urealloc ( UNULL, size );
}

/**
 * Free external memory
 *
 * @v userptr		Memory allocated by umalloc(), or UNULL
 *
 * If @c ptr is UNULL, no action is taken.
 */
static inline __always_inline void ufree ( userptr_t userptr ) {
	urealloc ( userptr, 0 );
}

#endif /* _GPXE_UMALLOC_H */
