@@ -22,35 +22,46 @@ use uefi::{Handle, Status};
22
22
use uefi:: table;
23
23
24
24
#[ no_mangle]
25
- pub extern "C" fn uefi_start ( handle : Handle , st : & ' static table:: SystemTable ) -> Status {
25
+ pub extern "C" fn uefi_start ( _handle : Handle , st : & ' static table:: SystemTable ) -> Status {
26
26
uefi_services:: init ( st) ;
27
27
28
28
let stdout = st. stdout ( ) ;
29
- stdout. reset ( false ) . unwrap ( ) ;
29
+ stdout. reset ( false ) . expect ( "Failed to reset stdout" ) ;
30
30
31
31
// Switch to the maximum supported graphics mode.
32
32
let best_mode = stdout. modes ( ) . last ( ) . unwrap ( ) ;
33
- stdout. set_mode ( best_mode) . unwrap ( ) ;
33
+ stdout. set_mode ( best_mode) . expect ( "Failed to change graphics mode" ) ;
34
34
35
35
info ! ( "# uefi-rs test runner" ) ;
36
- info ! ( "Image handle: {:?}" , handle) ;
37
36
38
- // Test the memory allocator.
39
37
{
40
- let mut values = vec ! [ -5 , 16 , 23 , 4 , 0 ] ;
38
+ let revision = st. uefi_revision ( ) ;
39
+ let ( major, minor) = ( revision. major ( ) , revision. minor ( ) ) ;
41
40
42
- values. sort ( ) ;
41
+ info ! ( "UEFI {}.{}.{}" , major, minor / 10 , minor % 10 ) ;
42
+ }
43
43
44
- info ! ( "Sorted vector: {:?}" , values) ;
44
+ info ! ( "" ) ;
45
+
46
+ // Print all modes.
47
+ for ( index, mode) in stdout. modes ( ) . enumerate ( ) {
48
+ info ! ( "Graphics mode #{}: {} rows by {} columns" , index, mode. rows( ) , mode. columns( ) ) ;
45
49
}
46
50
51
+ info ! ( "" ) ;
52
+
47
53
{
48
- let revision = st. uefi_revision ( ) ;
49
- let ( major, minor) = ( revision. major ( ) , revision. minor ( ) ) ;
54
+ info ! ( "Memory Allocation Test" ) ;
50
55
51
- info ! ( "UEFI {}.{}.{}" , major, minor / 10 , minor % 10 ) ;
56
+ let mut values = vec ! [ -5 , 16 , 23 , 4 , 0 ] ;
57
+
58
+ values. sort ( ) ;
59
+
60
+ info ! ( "Sorted vector: {:?}" , values) ;
52
61
}
53
62
63
+ info ! ( "" ) ;
64
+
54
65
let bt = st. boot ;
55
66
56
67
match boot:: boot_services_test ( bt) {
@@ -64,11 +75,28 @@ pub extern "C" fn uefi_start(handle: Handle, st: &'static table::SystemTable) ->
64
75
}
65
76
66
77
match ucs2:: ucs2_encoding_test ( ) {
67
- Ok ( _) => info ! ( "UCS-2 encoding test passed" ) ,
78
+ Ok ( _) => info ! ( "UCS-2 encoding test passed. " ) ,
68
79
Err ( status) => error ! ( "UCS-2 encoding test failed with status {:?}" , status) ,
69
80
}
70
81
71
- bt. stall ( 4_000_000 ) ;
82
+ info ! ( "" ) ;
83
+
84
+ {
85
+ let mut pointer = uefi_utils:: proto:: find_protocol :: < uefi:: proto:: console:: pointer:: Pointer > ( )
86
+ . expect ( "No pointer device was found" ) ;
87
+
88
+ let pointer = unsafe { pointer. as_mut ( ) } ;
89
+
90
+ pointer. reset ( false ) . expect ( "Failed to reset pointer device" ) ;
91
+
92
+ if let Ok ( state) = pointer. state ( ) {
93
+ info ! ( "Pointer State: {:#?}" , state) ;
94
+ } else {
95
+ error ! ( "Failed to retrieve pointer state" ) ;
96
+ }
97
+ }
98
+
99
+ bt. stall ( 10_000_000 ) ;
72
100
73
101
let rt = st. runtime ;
74
102
rt. reset ( table:: runtime:: ResetType :: Shutdown , Status :: Success , None ) ;
0 commit comments