Skip to content

Commit 23bdee6

Browse files
committed
efi: console: Fill out implementation
Ensure that all console related functions return valid results per the EFI specification. Signed-off-by: Rob Bradford <robert.bradford@intel.com>
1 parent e347d8e commit 23bdee6

File tree

1 file changed

+21
-16
lines changed

1 file changed

+21
-16
lines changed

src/efi/console.rs

Lines changed: 21 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,6 @@ pub const STDERR_HANDLE: Handle = &HandleWrapper {
3636

3737
#[cfg(not(test))]
3838
pub extern "win64" fn stdin_reset(_: *mut SimpleTextInputProtocol, _: Boolean) -> Status {
39-
crate::log!("EFI_STUB: stdin_reset\n");
4039
Status::UNSUPPORTED
4140
}
4241

@@ -50,8 +49,7 @@ pub extern "win64" fn stdin_read_key_stroke(
5049

5150
#[cfg(not(test))]
5251
pub extern "win64" fn stdout_reset(_: *mut SimpleTextOutputProtocol, _: Boolean) -> Status {
53-
crate::log!("EFI_STUB: stdout_reset\n");
54-
Status::UNSUPPORTED
52+
Status::SUCCESS
5553
}
5654

5755
#[cfg(not(test))]
@@ -91,29 +89,38 @@ pub extern "win64" fn stdout_test_string(
9189
#[cfg(not(test))]
9290
pub extern "win64" fn stdout_query_mode(
9391
_: *mut SimpleTextOutputProtocol,
94-
_: usize,
95-
_: *mut usize,
96-
_: *mut usize,
92+
mode: usize,
93+
columns: *mut usize,
94+
rows: *mut usize,
9795
) -> Status {
98-
crate::log!("EFI_STUB: stdout_query_mode\n");
99-
Status::UNSUPPORTED
96+
if mode == 0 {
97+
unsafe {
98+
*columns = 80;
99+
*rows = 25;
100+
}
101+
Status::SUCCESS
102+
} else {
103+
Status::UNSUPPORTED
104+
}
100105
}
101106

102107
#[cfg(not(test))]
103-
pub extern "win64" fn stdout_set_mode(_: *mut SimpleTextOutputProtocol, _: usize) -> Status {
104-
crate::log!("EFI_STUB: stdout_set_mode\n");
105-
Status::UNSUPPORTED
108+
pub extern "win64" fn stdout_set_mode(_: *mut SimpleTextOutputProtocol, mode: usize) -> Status {
109+
if mode == 0 {
110+
Status::SUCCESS
111+
} else {
112+
Status::UNSUPPORTED
113+
}
106114
}
107115

108116
#[cfg(not(test))]
109117
pub extern "win64" fn stdout_set_attribute(_: *mut SimpleTextOutputProtocol, _: usize) -> Status {
110-
crate::log!("EFI_STUB: stdout_set_attribute\n");
111-
Status::UNSUPPORTED
118+
// Accept all attribute changes but ignore them
119+
Status::SUCCESS
112120
}
113121

114122
#[cfg(not(test))]
115123
pub extern "win64" fn stdout_clear_screen(_: *mut SimpleTextOutputProtocol) -> Status {
116-
crate::log!("EFI_STUB: stdout_clear_screen\n");
117124
Status::UNSUPPORTED
118125
}
119126

@@ -123,13 +130,11 @@ pub extern "win64" fn stdout_set_cursor_position(
123130
_: usize,
124131
_: usize,
125132
) -> Status {
126-
crate::log!("EFI_STUB: stdout_set_cursor_position\n");
127133
Status::UNSUPPORTED
128134
}
129135

130136
#[cfg(not(test))]
131137
pub extern "win64" fn stdout_enable_cursor(_: *mut SimpleTextOutputProtocol, _: Boolean) -> Status {
132-
crate::log!("EFI_STUB: stdout_enable_cursor\n");
133138
Status::UNSUPPORTED
134139
}
135140

0 commit comments

Comments
 (0)