Mink Interface Description Language (IDL) describes programming interfaces that can be used to communicate across security domain boundaries. It defines its own type system, independent of any particular target language. See Mink IPC for more detail.
The Mink IDL compiler generates target language header files which include bindings for Mink interfaces and their associates structures. The generated header files introduce proxy functions that facilitate method invocation using Mink’s Object_invoke IPC mechanism. This abstraction shields both client-side proxy, called stubs, and implementation-side proxy, called skeletons, from the details of direct invocation.
It compiles .idl files into language bindings for:
main: Primary development branch. Contributors should develop submissions based on this branch, and submit pull requests to this branch.
cargo, rustc) - minimum supported Rust version = 1.81.0clang and clang++ (integration tests compile C/C++ shims)Follow these instructions to install Rust.
If you’ve installed rustup in the past, you can update your installation by running rustup update.
Run the compiler (file output):
cargo run -- tests/idl/ITest.idl -o /tmp/ITest.h
The target/output language is C, by default.
Generate Rust output (directory output):
mkdir -p /tmp/rust_out
cargo run -- tests/idl/ITest.idl --rust -o /tmp/rust_out
Run cargo run -- --help to see all available options.
in IFoo[3] arr)in or out)struct ObjInStruct {
uint32[4] p1;
ITest1 first_obj;
};
For details on how to contribute, see CONTRIBUTING.md.
How to contact maintainers. E.g. GitHub Issues, GitHub Discussions could be indicated for many cases. However a mail list or list of Maintainer e-mails could be shared for other types of discussions. E.g.
mink-idl-compiler is licensed under the BSD-3-clause License. See LICENSE.txt for the full license text.