File tree Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Expand file tree Collapse file tree 3 files changed +46
-0
lines changed Original file line number Diff line number Diff line change 7
7
- Added ` proto::hii::config::ConfigKeywordHandler ` .
8
8
- Added ` proto::hii::config::HiiConfigAccess ` .
9
9
- Added ` proto::hii::config_str::ConfigurationString ` .
10
+ - Added ` proto::hii::database::HiiDatabase ` .
10
11
11
12
## Changed
12
13
- ** Breaking:** ` boot::stall ` now take ` core::time::Duration ` instead of ` usize ` .
Original file line number Diff line number Diff line change
1
+ // SPDX-License-Identifier: MIT OR Apache-2.0
2
+
3
+ //! HII Database protocol.
4
+
5
+ use alloc:: boxed:: Box ;
6
+ use uefi_macros:: unsafe_protocol;
7
+ use uefi_raw:: protocol:: hii:: database:: HiiDatabaseProtocol ;
8
+
9
+ use crate :: StatusExt ;
10
+ use crate :: mem:: make_boxed;
11
+
12
+ /// The HII Configuration Access Protocol.
13
+ ///
14
+ /// This protocol grants access to the HII database definition available in every UEFI firmware.
15
+ /// This database contains internationalized strings, as well as a description of all
16
+ /// supported BIOS settings, together with their logic (e.g.: option A blocks option B if value is `true`).
17
+ ///
18
+ /// # UEFI Spec Description
19
+ ///
20
+ /// Database manager for HII-related data structures.
21
+ #[ derive( Debug ) ]
22
+ #[ repr( transparent) ]
23
+ #[ unsafe_protocol( HiiDatabaseProtocol :: GUID ) ]
24
+ pub struct HiiDatabase ( HiiDatabaseProtocol ) ;
25
+
26
+ impl HiiDatabase {
27
+ /// Export all package lists as raw byte buffer.
28
+ pub fn export_all_raw < ' a > ( & self ) -> crate :: Result < Box < [ u8 ] > > {
29
+ let fetch_data_fn = |buf : & ' a mut [ u8 ] | unsafe {
30
+ let mut size = buf. len ( ) ;
31
+ let status = {
32
+ ( self . 0 . export_package_lists ) (
33
+ & self . 0 ,
34
+ core:: ptr:: null_mut ( ) ,
35
+ & mut size,
36
+ buf. as_mut_ptr ( ) . cast ( ) ,
37
+ )
38
+ } ;
39
+ status. to_result_with_err ( |_| Some ( size) ) . map ( |_| buf)
40
+ } ;
41
+ make_boxed :: < [ u8 ] , _ > ( fetch_data_fn)
42
+ }
43
+ }
Original file line number Diff line number Diff line change 5
5
pub mod config;
6
6
#[ cfg( feature = "alloc" ) ]
7
7
pub mod config_str;
8
+ #[ cfg( feature = "alloc" ) ]
9
+ pub mod database;
You can’t perform that action at this time.
0 commit comments