rust: debugfs: support binary large objects for ScopedDir
Add support for creating binary debugfs files via ScopedDir. This mirrors the existing functionality for Dir, but without producing an owning handle -- files are automatically removed when the associated Scope is dropped. Reviewed-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> Reviewed-by: Matthew Maurer <mmaurer@google.com> Reviewed-by: Alice Ryhl <aliceryhl@google.com> Signed-off-by: Danilo Krummrich <dakr@kernel.org>
This commit is contained in:
@@ -530,6 +530,20 @@ impl<'data, 'dir> ScopedDir<'data, 'dir> {
|
||||
self.create_file(name, data, &T::FILE_OPS)
|
||||
}
|
||||
|
||||
/// Creates a read-only binary file in this directory.
|
||||
///
|
||||
/// The file's contents are produced by invoking [`BinaryWriter::write_to_slice`].
|
||||
///
|
||||
/// This function does not produce an owning handle to the file. The created file is removed
|
||||
/// when the [`Scope`] that this directory belongs to is dropped.
|
||||
pub fn read_binary_file<T: BinaryWriter + Send + Sync + 'static>(
|
||||
&self,
|
||||
name: &CStr,
|
||||
data: &'data T,
|
||||
) {
|
||||
self.create_file(name, data, &T::FILE_OPS)
|
||||
}
|
||||
|
||||
/// Creates a read-only file in this directory, with contents from a callback.
|
||||
///
|
||||
/// The file contents are generated by calling `f` with `data`.
|
||||
@@ -567,6 +581,22 @@ impl<'data, 'dir> ScopedDir<'data, 'dir> {
|
||||
self.create_file(name, data, vtable)
|
||||
}
|
||||
|
||||
/// Creates a read-write binary file in this directory.
|
||||
///
|
||||
/// Reading the file uses the [`BinaryWriter`] implementation on `data`. Writing to the file
|
||||
/// uses the [`BinaryReader`] implementation on `data`.
|
||||
///
|
||||
/// This function does not produce an owning handle to the file. The created file is removed
|
||||
/// when the [`Scope`] that this directory belongs to is dropped.
|
||||
pub fn read_write_binary_file<T: BinaryWriter + BinaryReader + Send + Sync + 'static>(
|
||||
&self,
|
||||
name: &CStr,
|
||||
data: &'data T,
|
||||
) {
|
||||
let vtable = &<T as BinaryReadWriteFile<_>>::FILE_OPS;
|
||||
self.create_file(name, data, vtable)
|
||||
}
|
||||
|
||||
/// Creates a read-write file in this directory, with logic from callbacks.
|
||||
///
|
||||
/// Reading from the file is handled by `f`. Writing to the file is handled by `w`.
|
||||
@@ -606,6 +636,20 @@ impl<'data, 'dir> ScopedDir<'data, 'dir> {
|
||||
self.create_file(name, data, vtable)
|
||||
}
|
||||
|
||||
/// Creates a write-only binary file in this directory.
|
||||
///
|
||||
/// Writing to the file uses the [`BinaryReader`] implementation on `data`.
|
||||
///
|
||||
/// This function does not produce an owning handle to the file. The created file is removed
|
||||
/// when the [`Scope`] that this directory belongs to is dropped.
|
||||
pub fn write_binary_file<T: BinaryReader + Send + Sync + 'static>(
|
||||
&self,
|
||||
name: &CStr,
|
||||
data: &'data T,
|
||||
) {
|
||||
self.create_file(name, data, &T::FILE_OPS)
|
||||
}
|
||||
|
||||
/// Creates a write-only file in this directory, with write logic from a callback.
|
||||
///
|
||||
/// Writing to the file is handled by `w`.
|
||||
|
||||
Reference in New Issue
Block a user