summaryrefslogtreecommitdiffstats
path: root/vendor/nix/src/kmod.rs
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-05-18 02:49:50 +0000
commit9835e2ae736235810b4ea1c162ca5e65c547e770 (patch)
tree3fcebf40ed70e581d776a8a4c65923e8ec20e026 /vendor/nix/src/kmod.rs
parentReleasing progress-linux version 1.70.0+dfsg2-1~progress7.99u1. (diff)
downloadrustc-9835e2ae736235810b4ea1c162ca5e65c547e770.tar.xz
rustc-9835e2ae736235810b4ea1c162ca5e65c547e770.zip
Merging upstream version 1.71.1+dfsg1.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'vendor/nix/src/kmod.rs')
-rw-r--r--vendor/nix/src/kmod.rs128
1 files changed, 0 insertions, 128 deletions
diff --git a/vendor/nix/src/kmod.rs b/vendor/nix/src/kmod.rs
deleted file mode 100644
index 1fa6c170d..000000000
--- a/vendor/nix/src/kmod.rs
+++ /dev/null
@@ -1,128 +0,0 @@
-//! Load and unload kernel modules.
-//!
-//! For more details see
-
-use std::ffi::CStr;
-use std::os::unix::io::AsRawFd;
-
-use crate::errno::Errno;
-use crate::Result;
-
-/// Loads a kernel module from a buffer.
-///
-/// It loads an ELF image into kernel space,
-/// performs any necessary symbol relocations,
-/// initializes module parameters to values provided by the caller,
-/// and then runs the module's init function.
-///
-/// This function requires `CAP_SYS_MODULE` privilege.
-///
-/// The `module_image` argument points to a buffer containing the binary image
-/// to be loaded. The buffer should contain a valid ELF image
-/// built for the running kernel.
-///
-/// The `param_values` argument is a string containing space-delimited specifications
-/// of the values for module parameters.
-/// Each of the parameter specifications has the form:
-///
-/// `name[=value[,value...]]`
-///
-/// # Example
-///
-/// ```no_run
-/// use std::fs::File;
-/// use std::io::Read;
-/// use std::ffi::CString;
-/// use nix::kmod::init_module;
-///
-/// let mut f = File::open("mykernel.ko").unwrap();
-/// let mut contents: Vec<u8> = Vec::new();
-/// f.read_to_end(&mut contents).unwrap();
-/// init_module(&mut contents, &CString::new("who=Rust when=Now,12").unwrap()).unwrap();
-/// ```
-///
-/// See [`man init_module(2)`](https://man7.org/linux/man-pages/man2/init_module.2.html) for more information.
-pub fn init_module(module_image: &[u8], param_values: &CStr) -> Result<()> {
- let res = unsafe {
- libc::syscall(
- libc::SYS_init_module,
- module_image.as_ptr(),
- module_image.len(),
- param_values.as_ptr(),
- )
- };
-
- Errno::result(res).map(drop)
-}
-
-libc_bitflags!(
- /// Flags used by the `finit_module` function.
- pub struct ModuleInitFlags: libc::c_uint {
- /// Ignore symbol version hashes.
- MODULE_INIT_IGNORE_MODVERSIONS;
- /// Ignore kernel version magic.
- MODULE_INIT_IGNORE_VERMAGIC;
- }
-);
-
-/// Loads a kernel module from a given file descriptor.
-///
-/// # Example
-///
-/// ```no_run
-/// use std::fs::File;
-/// use std::ffi::CString;
-/// use nix::kmod::{finit_module, ModuleInitFlags};
-///
-/// let f = File::open("mymod.ko").unwrap();
-/// finit_module(&f, &CString::new("").unwrap(), ModuleInitFlags::empty()).unwrap();
-/// ```
-///
-/// See [`man init_module(2)`](https://man7.org/linux/man-pages/man2/init_module.2.html) for more information.
-pub fn finit_module<T: AsRawFd>(
- fd: &T,
- param_values: &CStr,
- flags: ModuleInitFlags,
-) -> Result<()> {
- let res = unsafe {
- libc::syscall(
- libc::SYS_finit_module,
- fd.as_raw_fd(),
- param_values.as_ptr(),
- flags.bits(),
- )
- };
-
- Errno::result(res).map(drop)
-}
-
-libc_bitflags!(
- /// Flags used by `delete_module`.
- ///
- /// See [`man delete_module(2)`](https://man7.org/linux/man-pages/man2/delete_module.2.html)
- /// for a detailed description how these flags work.
- pub struct DeleteModuleFlags: libc::c_int {
- O_NONBLOCK;
- O_TRUNC;
- }
-);
-
-/// Unloads the kernel module with the given name.
-///
-/// # Example
-///
-/// ```no_run
-/// use std::ffi::CString;
-/// use nix::kmod::{delete_module, DeleteModuleFlags};
-///
-/// delete_module(&CString::new("mymod").unwrap(), DeleteModuleFlags::O_NONBLOCK).unwrap();
-/// ```
-///
-/// See [`man delete_module(2)`](https://man7.org/linux/man-pages/man2/delete_module.2.html) for more information.
-pub fn delete_module(name: &CStr, flags: DeleteModuleFlags) -> Result<()> {
- let res = unsafe {
- libc::syscall(libc::SYS_delete_module, name.as_ptr(), flags.bits())
- };
-
- Errno::result(res).map(drop)
-}