Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > by-pkgid > ebe372b10878800fe69806df64e3d558 > files > 52

gnu-efi-3.0c-4mdv2010.0.i586.rpm

#define EFI_SUCCESS		0

typedef short			CHAR16;
typedef unsigned long		UINTN;
typedef unsigned long long	UINT64;
typedef unsigned int		UINT32;
typedef void *			EFI_HANDLE;
typedef UINTN			EFI_STATUS;

typedef struct _EFI_TABLE_HEARDER {
    UINT64                      Signature;
    UINT32                      Revision;
    UINT32                      HeaderSize;
    UINT32                      CRC32;
    UINT32                      Reserved;
} EFI_TABLE_HEADER;

typedef EFI_STATUS (*EFI_TEXT_STRING) (void *This, CHAR16 *String);

typedef struct _SIMPLE_TEXT_OUTPUT_INTERFACE {
    void *                  Reset;

    EFI_TEXT_STRING                 OutputString;
} SIMPLE_TEXT_OUTPUT_INTERFACE;

typedef struct _EFI_SYSTEM_TABLE {
    EFI_TABLE_HEADER                Hdr;

    CHAR16                          *FirmwareVendor;
    UINT32                          FirmwareRevision;

    EFI_HANDLE                      ConsoleInHandle;
 /*SIMPLE_INPUT_INTERFACE*/ void    *ConIn;

    EFI_HANDLE                      ConsoleOutHandle;
    SIMPLE_TEXT_OUTPUT_INTERFACE    *ConOut;

    EFI_HANDLE                      StandardErrorHandle;
    SIMPLE_TEXT_OUTPUT_INTERFACE    *StdErr;

 /*EFI_RUNTIME_SERVICES*/ void            *RuntimeServices;
 /*EFI_BOOT_SERVICES*/ void               *BootServices;

    UINTN                           NumberOfTableEntries;
 /*EFI_CONFIGURATION_TABLE*/void         *ConfigurationTable;

} EFI_SYSTEM_TABLE;

static CHAR16 *
a2u (char *str)
{
	static CHAR16 mem[2048];
	int i;

	for (i = 0; str[i]; ++i)
		mem[i] = (CHAR16) str[i];
	mem[i] = 0;
	return mem;
}

EFI_STATUS
efi_main (EFI_HANDLE image_handle, EFI_SYSTEM_TABLE *systab)
{
	SIMPLE_TEXT_OUTPUT_INTERFACE *conout;

	conout = systab->ConOut;
	conout->OutputString(conout, (CHAR16 *)L"Hello World!\n\r");
	conout->OutputString(conout, a2u("Hello World!\n\r"));

	return EFI_SUCCESS;
}