Back to home page

LXR

 
 

    


File indexing completed on 2025-05-11 08:24:05

0001 /*-
0002  * Copyright (c) 2000 Doug Rabson
0003  * All rights reserved.
0004  *
0005  * Redistribution and use in source and binary forms, with or without
0006  * modification, are permitted provided that the following conditions
0007  * are met:
0008  * 1. Redistributions of source code must retain the above copyright
0009  *    notice, this list of conditions and the following disclaimer.
0010  * 2. Redistributions in binary form must reproduce the above copyright
0011  *    notice, this list of conditions and the following disclaimer in the
0012  *    documentation and/or other materials provided with the distribution.
0013  *
0014  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
0015  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
0016  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
0017  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
0018  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
0019  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
0020  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
0021  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
0022  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
0023  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
0024  * SUCH DAMAGE.
0025  */
0026 
0027 #include <sys/cdefs.h>
0028 __FBSDID("$FreeBSD$");
0029 
0030 #include <efi.h>
0031 #ifndef __rtems__
0032 #include <eficonsctl.h>
0033 #include <efilib.h>
0034 #include <stand.h>
0035 #endif /* __rtems__ */
0036 
0037 EFI_HANDLE      IH;
0038 EFI_SYSTEM_TABLE    *ST;
0039 EFI_BOOT_SERVICES   *BS;
0040 EFI_RUNTIME_SERVICES    *RS;
0041 
0042 #ifndef __rtems__
0043 void *
0044 efi_get_table(EFI_GUID *tbl)
0045 {
0046     EFI_GUID *id;
0047     int i;
0048 
0049     for (i = 0; i < ST->NumberOfTableEntries; i++) {
0050         id = &ST->ConfigurationTable[i].VendorGuid;
0051         if (!memcmp(id, tbl, sizeof(EFI_GUID)))
0052             return (ST->ConfigurationTable[i].VendorTable);
0053     }
0054     return (NULL);
0055 }
0056 
0057 EFI_STATUS
0058 OpenProtocolByHandle(EFI_HANDLE handle, EFI_GUID *protocol, void **interface)
0059 {
0060     return (BS->OpenProtocol(handle, protocol, interface, IH, NULL,
0061         EFI_OPEN_PROTOCOL_BY_HANDLE_PROTOCOL));
0062 }
0063 #endif