edk2 | EDK II

 by   tianocore C Version: edk2-stable202305 License: Non-SPDX

kandi X-RAY | edk2 Summary

kandi X-RAY | edk2 Summary

edk2 is a C library typically used in Embedded System applications. edk2 has no bugs and it has medium support. However edk2 has 1 vulnerabilities and it has a Non-SPDX License. You can download it from GitHub.

EDK II
Support
    Quality
      Security
        License
          Reuse

            kandi-support Support

              edk2 has a medium active ecosystem.
              It has 3661 star(s) with 2095 fork(s). There are 267 watchers for this library.
              There were 1 major release(s) in the last 12 months.
              There are 36 open issues and 84 have been closed. On average issues are closed in 2184 days. There are 120 open pull requests and 0 closed requests.
              It has a neutral sentiment in the developer community.
              The latest version of edk2 is edk2-stable202305

            kandi-Quality Quality

              edk2 has no bugs reported.

            kandi-Security Security

              edk2 has 1 vulnerability issues reported (0 critical, 1 high, 0 medium, 0 low).

            kandi-License License

              edk2 has a Non-SPDX License.
              Non-SPDX licenses can be open source with a non SPDX compliant license, or non open source licenses, and you need to review them closely before use.

            kandi-Reuse Reuse

              edk2 releases are available to install and integrate.

            Top functions reviewed by kandi - BETA

            kandi's functional review helps you automatically verify the functionalities of the libraries and avoid rework.
            Currently covering the most popular Java, JavaScript and Python libraries. See a Sample of edk2
            Get all kandi verified functions for this library.

            edk2 Key Features

            No Key Features are available at this moment for edk2.

            edk2 Examples and Code Snippets

            No Code Snippets are available at this moment for edk2.

            Community Discussions

            QUESTION

            Why am I not receiving interrupts on Port Status Change Event with the Intel's xHC on QEMU?
            Asked 2021-Apr-26 at 06:13

            I'm coding a small OS kernel which is supposed to have a driver for the Intel's xHC (extensible host controller). I got to a point where I can actually generate Port Status Change Events by resetting the root hub ports. I'm using QEMU for virtualization.

            I ask QEMU to emulate a USB mouse and a USB keyboard which it seems to do because I actually get 2 Port Status Change Events when I reset all root hub ports. I get these events on the Event Ring of interrupter 0.

            The problem is I can't find out why I'm not getting interrupts generated on these events.

            I'm posting a complete reproducible example here. Bootloader.c is the UEFI app that I launch from the OVMF shell by typing fs0:bootloader.efi. Bootloader.c is compiled with the EDK2 toolset. I work on Linux Ubuntu 20. Sorry for the long code.

            The file main.cpp is a complete minimal reproducible example of my kernel. All the OS is compiled and launched with the 3 following scripts:

            compile

            ...

            ANSWER

            Answered 2021-Apr-26 at 06:13

            I finally got it working by inverting the MSI-X table structure found on osdev.org. I decided to completely reinitialize the xHC after leaving the UEFI environment as it could leave it in an unknown state. Here's the xHCI code for anyone wondering the same thing as me:

            Source https://stackoverflow.com/questions/67206312

            QUESTION

            DebugPrint pushes empty line (Serial connection)
            Asked 2021-Apr-01 at 12:42

            Upon deciding to write a simple "Hello World!" program in EDK2, I stumbled upon the following problem:

            As I am using a serial connection for debugging, the output of the debug functions like DebugPrint successfully get redirected to my serial terminal (PuTTY in this case), well sort of.

            After compiling an executing the following program inside an UEFI shell, I simply get an empty line as a result. But after executing the same binary again, the line gets successfully printed in all it's beauty.

            This is the source code of the program i ran:

            ...

            ANSWER

            Answered 2021-Apr-01 at 12:42

            After a lot of fiddling around I realised, that I manually specified the entry point to my main-function (efi_main), which should instead point to _ModuleEntryPoint when using the UefiDriverEntryPoint library from EDK2.

            This solved my problem instantly :)

            Source https://stackoverflow.com/questions/66903627

            QUESTION

            MSVC Manually Linking stdlib
            Asked 2021-Apr-01 at 11:08

            Currently I am trying to use the C standard library in my EDK2 project. As my Visual Studio 2019 did not automatically add the necessary include directories, I manually added the following folders to my include directories:

            ...

            ANSWER

            Answered 2021-Apr-01 at 11:08

            I settled on implementing the functions I needed from the stdlib myself, as @user123 proposed, in order to solve this problem and save me a lot of time.

            Source https://stackoverflow.com/questions/66846710

            QUESTION

            How can I use UEFI Runtime Services?
            Asked 2020-Dec-14 at 11:12

            I want to learn more about firmware developement. I already know how to write assembly programs for the old BIOS and now I wanted to start with UEFI. I managed to compile and emulate a Hello World program, and now I was trying to write a program which displays on the screen the current time using the Runtime Service GetTime(). However when I use this function the program hangs, as if it wasn't installed during PI. Here is the code:

            ...

            ANSWER

            Answered 2020-Dec-12 at 14:54

            I think you missed to initialize RT.

            Source https://stackoverflow.com/questions/65266199

            QUESTION

            Unable to create directory in /usr/share
            Asked 2020-Dec-02 at 13:05

            I have heard its a conventional practice to store program dependent files in /usr/share/application-folder in linux. So I'm trying to do it in my c program in a function called load_interface_files() for example. I am not sure if this is a good practice or not, I've heard about creating configuration files for this kind of issues.

            Anyways, here's the the code I wrote to make a directory in /usr/share.

            ...

            ANSWER

            Answered 2020-Dec-01 at 04:25

            use ls -ld /usr/share to see what the permissions on the directory are (without -d, you get the contents and their permissions).

            Use code like:

            Source https://stackoverflow.com/questions/65084569

            QUESTION

            Setting up PulseAudio in QEMU
            Asked 2020-Oct-28 at 19:08

            I have a Windows 10 Pro virtual machine using KVM. It is set up through virt-manager using the latest version of libvirt and QEMU. All of this is running on Manjaro Linux 20. Manjaro defaults to using PulseAudio for its audio output (at least for Manjaro 20). I was wondering if there is a way to use PulseAudio with libvirt/QEMU/KVM to have an audio pass-through from the guest OS to the host. Meaning that anything that is playing in the Guest OS will need to be heard through the default output device in Manjaro Linux. First, I tried setting environment variables to set it up, but that didn't work, and it also is deprecated past QEMU 4.1 (I am using 5.1.) Then, I tried using this tutorial, which ended up somehow bricking Manjaro, and I had to reinstall. I am currently using the default Spice server through virt-manager. I have heard that the Spice server introduces lots of overhead, and I can't afford that. I need every CPU cycle, and if PulseAudio is already running, I may as well use it. My libvirt XML config WITHOUT the Spice server is as follows:

            ...

            ANSWER

            Answered 2020-Oct-28 at 19:08

            This is more of a comment, really...

            I don't use libvirt myself, but as far as I can tell there aren't any audio devices in your config.

            Here are the qemu command line options I use for guest (Win10 and others) audio output to PulseAudio output on -machine q35 :

            Source https://stackoverflow.com/questions/64560389

            QUESTION

            Efi app linker error unresolved external symbol gEfiShellProtocolGuid referenced in function main
            Asked 2020-Oct-15 at 08:51

            I am trying to create a efi app by manually compiling and linking the source code with MS's VC compiler and MS's Linker.

            The source code compiles fine but I get a linker error:

            ...

            ANSWER

            Answered 2020-Oct-15 at 08:51

            You likely need to add gEfiShellProtocolGuid to the [Protocols] section of your application's INF file:

            Source https://stackoverflow.com/questions/64349148

            QUESTION

            Adding CHAR16 variable to String
            Asked 2020-Sep-06 at 07:42

            I am a novice in C and trying to amend and compile an EDK2 EFI program.

            The program portion I want to change has a function MsgLog which takes a Char16 * variable and uses this to write to a log file.

            The current code has this

            ...

            ANSWER

            Answered 2020-Sep-06 at 07:42

            SPrint (myVariable, 255, L" : ABC"); is wrong. myVariable is NULL - you can't write to a NULL pointer. You have to actually allocate memory for the string if you want to use SPrint. For more information review your knowledge about pointers and about snprintf standard C function. The second argument to SPrint is actually the size of allocated memory - you allocated no memory, so the 255 is just invalid.

            Source https://stackoverflow.com/questions/63756627

            QUESTION

            AllocatePages return EFI_INVALID_PARAMETER for memory type as EfiConventionalMemory?
            Asked 2020-Sep-03 at 21:45

            Hi I'm using edk2 to write a boot service for a kernel and need to apply AllocatePages service to apply memory with type as EfiConventionalMemory.

            However, it returns an error code of EFI_INVALID_PARAMETER.

            I looked into the source code from git, the actual function is as follow:

            ...

            ANSWER

            Answered 2020-Sep-03 at 21:45

            The memory type parameter specifies the type the memory should have after allocation. Obviously the memory cannot be free after allocation, so that’s why EfiConventionalMemory is an invalid parameter.

            The source of memory for the allocation is always EfiConventionalMemory.

            Typically you would use BootServicesData as the requested memory type.

            Source https://stackoverflow.com/questions/63720724

            QUESTION

            "pointer passing convention" in UEFI module
            Asked 2020-Jun-30 at 11:38

            I want to know when I need to free a pointer that is returned from EFI functions

            ...

            ANSWER

            Answered 2020-Jun-30 at 11:38

            You have to look into the specification, if you are responsible to free the pointer there is a note.

            For your LocateHandleBuffer example:

            Buffer

            A pointer to the buffer to return the requested array of handles that support Protocol. This buffer is allocated with a call to the Boot Service EFI_BOOT_SERVICES.AllocatePool(). It is the caller's responsibility to call the Boot Service EFI_BOOT_SERVICES.FreePool() when the caller no longer requires the contents of Buffer."

            You can use the BlockIO protocols after you free the buffer, you are not freeing the handle instances (which would be a very bad idea), instead you are freeing an array of them.

            Source https://stackoverflow.com/questions/62656274

            Community Discussions, Code Snippets contain sources that include Stack Exchange Network

            Vulnerabilities

            No vulnerabilities reported

            Install edk2

            You can download it from GitHub.

            Support

            For any new features, suggestions and bugs create an issue on GitHub. If you have any questions check and ask questions on community page Stack Overflow .
            Find more information at:

            Find, review, and download reusable Libraries, Code Snippets, Cloud APIs from over 650 million Knowledge Items

            Find more libraries

            Stay Updated

            Subscribe to our newsletter for trending solutions and developer bootcamps

            Agree to Sign up and Terms & Conditions

            Share this Page

            share link