rust-osdev / rust-osdev/uefi-rs
`[un]install_multiple_protocol_interfaces()` requires but is currently incompatible with feature `c_variadic`
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 1.7k
- Forks
- 200
- Avg merge
- 16h 55m
- Merged PRs (30d)
- 35
Description
Tracking issue
While implementing the missing protocol handler functions in BootServices, I found that extern "efiapi" is incompatible with Rust's current (unstable) implementation of c variadics. Rustc indicates that C variadics must be extern "C" or extern "cdecl", thus install_multiple_protocol_interfaces() and uninstall_multiple_protocol_interfaces() cannot be implemented at this time.
I'll bring this up on the C variadic tracking issue in the next couple days if it hasn't been already.
Rust tracking issue: https://github.com/rust-lang/rust/issues/44930
EDIT: technically I guess this could be possible with some clever and wildly unsafe asm but I'd much rather wait for Rust to support it.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by reviewing the missing BootServices protocol handler functions, especially install_multiple_protocol_interfaces() and uninstall_multiple_protocol_interfaces(). Then read Rust tracking issue #44930 and verify whether c_variadic supports the required extern "efiapi" ABI. Done means both functions can be implemented without the current compiler incompatibility.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- operating-systems
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Active
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100