176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#ifndef _H_EFI_FIO_
276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define _H_EFI_FIO_
376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/*
576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * Friendly interfaces for EFI file I/O and various EFI support functions
676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* MAX_EFI_ARGS - command line args for EFI executable
976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * WS(c16) 	- check for CHAR16 white space
1076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
1176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define MAX_EFI_ARGS		64
1276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#define WS(c16)         (c16 == L' ' || c16 == CHAR_TAB)
1376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
1476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman/* VPrint is not in export declarations in gnu-efi lib yet
1576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman * although it is a global function; declare it here
1676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman */
1776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern UINTN
1876d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanVPrint (
1976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    IN CHAR16   *fmt,
2076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    va_list     args
2176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman    );
2276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanextern EFI_STATUS efi_errno;
2476d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
2576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_memcpy(unsigned char *dst, unsigned char *src, size_t len);
2676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_memmove(unsigned char *dst, unsigned char *src, size_t len);
2776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_memset(unsigned char *dst, unsigned char val, size_t len);
2876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid *efi_alloc(int size);
2976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_free(void *ptr);
3076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_perror(CHAR16 *str);
3176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_printerr(IN CHAR16 *fmt, ...);
3276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_printout(IN CHAR16 *fmt, ...);
3376d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_STATUS efi_set_volroot(EFI_HANDLE device_handle);
3476d05dc695b06c4e987bb8078f78032441e1430cGreg HartmanEFI_FILE_HANDLE efi_open(CHAR16 *file, UINT64 mode);
3576d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_close(EFI_FILE_HANDLE fd);
3676d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_sync(EFI_FILE_HANDLE fd);
3776d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansize_t efi_xpread(EFI_FILE_HANDLE fd, void *buf, size_t count, off_t offset);
3876d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmansize_t efi_xpwrite(EFI_FILE_HANDLE fd, void *buf, size_t count, off_t offset);
3976d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanint efi_fstat(EFI_FILE_HANDLE fd, EFI_FILE_INFO *st);
4076d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_set_attributes(EFI_FILE_HANDLE fd);
4176d05dc695b06c4e987bb8078f78032441e1430cGreg Hartmanvoid efi_clear_attributes(EFI_FILE_HANDLE fd);
4276d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman
4376d05dc695b06c4e987bb8078f78032441e1430cGreg Hartman#endif
44