@@ -124,7 +124,7 @@ pub struct BootServices {
124
124
unsafe extern "efiapi" fn ( image_handle : Handle , map_key : usize ) -> Status ,
125
125
126
126
// Misc services
127
- pub get_next_monotonic_count : usize ,
127
+ pub get_next_monotonic_count : unsafe extern "efiapi" fn ( count : * mut u64 ) -> Status ,
128
128
pub stall : unsafe extern "efiapi" fn ( microseconds : usize ) -> Status ,
129
129
pub set_watchdog_timer : unsafe extern "efiapi" fn (
130
130
timeout : usize ,
@@ -161,7 +161,12 @@ pub struct BootServices {
161
161
agent_handle : Handle ,
162
162
controller_handle : Handle ,
163
163
) -> Status ,
164
- pub open_protocol_information : usize ,
164
+ pub open_protocol_information : unsafe extern "efiapi" fn (
165
+ handle : Handle ,
166
+ protocol : * const Guid ,
167
+ entry_buffer : * mut * const OpenProtocolInformationEntry ,
168
+ entry_count : * mut usize ,
169
+ ) -> Status ,
165
170
166
171
// Library services
167
172
pub protocols_per_handle : unsafe extern "efiapi" fn (
@@ -181,11 +186,16 @@ pub struct BootServices {
181
186
registration : * mut c_void ,
182
187
out_proto : * mut * mut c_void ,
183
188
) -> Status ,
189
+
190
+ // These two function pointers require the `c_variadic` feature, which is
191
+ // not yet available in stable Rust:
192
+ // https://github.com/rust-lang/rust/issues/44930
184
193
pub install_multiple_protocol_interfaces : usize ,
185
194
pub uninstall_multiple_protocol_interfaces : usize ,
186
195
187
196
// CRC services
188
- pub calculate_crc32 : usize ,
197
+ pub calculate_crc32 :
198
+ unsafe extern "efiapi" fn ( data : * const c_void , data_size : usize , crc32 : * mut u32 ) -> Status ,
189
199
190
200
// Misc services
191
201
pub copy_mem : unsafe extern "efiapi" fn ( dest : * mut u8 , src : * const u8 , len : usize ) ,
@@ -387,6 +397,14 @@ impl MemoryType {
387
397
}
388
398
}
389
399
400
+ #[ repr( C ) ]
401
+ pub struct OpenProtocolInformationEntry {
402
+ pub agent_handle : Handle ,
403
+ pub controller_handle : Handle ,
404
+ pub attributes : u32 ,
405
+ pub open_count : u32 ,
406
+ }
407
+
390
408
newtype_enum ! {
391
409
/// Task priority level.
392
410
///
0 commit comments