Skip to content

Commit 566712f

Browse files
Add uefi/README.md
This is mostly copied from the top-level readme, with some edits to focus more on the `uefi` package rather than the whole project.
1 parent c901eda commit 566712f

File tree

1 file changed

+72
-0
lines changed

1 file changed

+72
-0
lines changed

uefi/README.md

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
# uefi-rs
2+
3+
[![Crates.io](https://img.shields.io/crates/v/uefi)](https://crates.io/crates/uefi)
4+
[![Docs.rs](https://docs.rs/uefi/badge.svg)](https://docs.rs/uefi)
5+
![Stars](https://img.shields.io/github/stars/rust-osdev/uefi-rs)
6+
![License](https://img.shields.io/github/license/rust-osdev/uefi-rs)
7+
![Build status](https://github.com/rust-osdev/uefi-rs/workflows/Rust/badge.svg)
8+
9+
[UEFI] is the successor to the BIOS. It provides an early boot environment for
10+
OS loaders, hypervisors and other low-level applications.
11+
12+
The `uefi` crate makes it easy to:
13+
- Write UEFI applications in Rust (for `i686`, `x86_64`, or `aarch64`)
14+
- Call UEFI functions from an OS (usually built with a [custom target][rustc-custom])
15+
16+
The objective is to provide **safe** and **performant** wrappers for UEFI interfaces,
17+
and allow developers to write idiomatic Rust code.
18+
19+
Check out the [UEFI application template] for a quick start.
20+
21+
[UEFI]: https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface
22+
[rustc-custom]: https://doc.rust-lang.org/rustc/targets/custom.html
23+
[UEFI application template]: https://github.com/rust-osdev/uefi-rs/tree/HEAD/template
24+
25+
## Optional features
26+
27+
- `alloc`: implements a global allocator using UEFI functions.
28+
- This allows you to allocate objects on the heap.
29+
- There's no guarantee of the efficiency of UEFI's allocator.
30+
- `logger`: logging implementation for the standard [`log`] crate.
31+
- Prints output to console.
32+
- No buffering is done: this is not a high-performance logger.
33+
- `exts`: extensions providing utility functions for common patterns.
34+
- Requires the `alloc` crate (either enable the `alloc` optional feature or your own custom allocator).
35+
36+
See also the [`uefi-services`] crate, which provides a panic handler and
37+
initializes the `alloc` / `logger` features.
38+
39+
[`log`]: https://github.com/rust-lang-nursery/log
40+
[`uefi-services`]: https://crates.io/crates/uefi-services
41+
42+
## Documentation
43+
44+
The [uefi-rs book] contains a tutorial, how-tos, and overviews of some
45+
important UEFI concepts.
46+
47+
Reference documentation can be found on docs.rs:
48+
- [docs.rs/uefi](https://docs.rs/uefi)
49+
- [docs.rs/uefi-macros](https://docs.rs/uefi-macros)
50+
- [docs.rs/uefi-services](https://docs.rs/uefi-services)
51+
52+
For additional information, refer to the [UEFI specification][spec].
53+
54+
[spec]: http://www.uefi.org/specifications
55+
[uefi-rs book]: https://rust-osdev.github.io/uefi-rs/HEAD
56+
57+
## Building UEFI programs
58+
59+
For instructions on how to create your own UEFI apps, see [BUILDING.md].
60+
61+
The uefi-rs crates currently require some [unstable features].
62+
The nightly MSRV is currently 2022-08-08.
63+
64+
[unstable features]: https://github.com/rust-osdev/uefi-rs/issues/452
65+
[BUILDING.md]: https://github.com/rust-osdev/uefi-rs/blob/HEAD/BUILDING.md
66+
67+
## License
68+
69+
The code in this repository is licensed under the Mozilla Public License 2.
70+
This license allows you to use the crate in proprietary programs, but any modifications to the files must be open-sourced.
71+
72+
The full text of the license is available in the [license file](LICENSE).

0 commit comments

Comments
 (0)