@@ -34,8 +34,10 @@ mod alloc;
34
34
mod block;
35
35
mod console;
36
36
mod file;
37
+ mod var;
37
38
38
39
use alloc:: Allocator ;
40
+ use var:: VariableAllocator ;
39
41
40
42
#[ derive( Copy , Clone , PartialEq ) ]
41
43
enum HandleType {
@@ -63,6 +65,9 @@ fn heap_alloc_error_handler(layout: heap_alloc::Layout) -> ! {
63
65
panic ! ( "heap allocation error: {:?}" , layout) ;
64
66
}
65
67
68
+ pub static VARIABLES : AtomicRefCell < VariableAllocator > =
69
+ AtomicRefCell :: new ( VariableAllocator :: new ( ) ) ;
70
+
66
71
static mut RS : efi:: RuntimeServices = efi:: RuntimeServices {
67
72
hdr : efi:: TableHeader {
68
73
signature : efi:: RUNTIME_SERVICES_SIGNATURE ,
@@ -249,13 +254,15 @@ pub extern "win64" fn convert_pointer(_: usize, _: *mut *mut c_void) -> Status {
249
254
}
250
255
251
256
pub extern "win64" fn get_variable (
252
- _ : * mut Char16 ,
253
- _ : * mut Guid ,
254
- _ : * mut u32 ,
255
- _ : * mut usize ,
256
- _ : * mut core:: ffi:: c_void ,
257
+ variable_name : * mut Char16 ,
258
+ vendor_guid : * mut Guid ,
259
+ attributes : * mut u32 ,
260
+ data_size : * mut usize ,
261
+ data : * mut core:: ffi:: c_void ,
257
262
) -> Status {
258
- Status :: NOT_FOUND
263
+ VARIABLES
264
+ . borrow_mut ( )
265
+ . get ( variable_name, vendor_guid, attributes, data_size, data)
259
266
}
260
267
261
268
pub extern "win64" fn get_next_variable_name (
@@ -267,13 +274,15 @@ pub extern "win64" fn get_next_variable_name(
267
274
}
268
275
269
276
pub extern "win64" fn set_variable (
270
- _ : * mut Char16 ,
271
- _ : * mut Guid ,
272
- _ : u32 ,
273
- _ : usize ,
274
- _ : * mut c_void ,
277
+ variable_name : * mut Char16 ,
278
+ vendor_guid : * mut Guid ,
279
+ attributes : u32 ,
280
+ data_size : usize ,
281
+ data : * mut c_void ,
275
282
) -> Status {
276
- Status :: UNSUPPORTED
283
+ VARIABLES
284
+ . borrow_mut ( )
285
+ . set ( variable_name, vendor_guid, attributes, data_size, data)
277
286
}
278
287
279
288
pub extern "win64" fn get_next_high_mono_count ( _: * mut u32 ) -> Status {
0 commit comments