Skip to content

Commit 0358f70

Browse files
committed
refactor(port): implement send in terms of send_raw
Signed-off-by: Martin Kröning <[email protected]>
1 parent b3f7fe9 commit 0358f70

File tree

2 files changed

+16
-29
lines changed

2 files changed

+16
-29
lines changed

src/mmio.rs

Lines changed: 8 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -76,21 +76,14 @@ impl MmioSerialPort {
7676

7777
/// Sends a byte on the serial port.
7878
pub fn send(&mut self, data: u8) {
79-
let self_data = self.data.load(Ordering::Relaxed);
80-
unsafe {
81-
match data {
82-
8 | 0x7F => {
83-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
84-
self_data.write(8);
85-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
86-
self_data.write(b' ');
87-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
88-
self_data.write(8)
89-
}
90-
_ => {
91-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
92-
self_data.write(data);
93-
}
79+
match data {
80+
8 | 0x7F => {
81+
self.send_raw(8);
82+
self.send_raw(b' ');
83+
self.send_raw(8);
84+
}
85+
data => {
86+
self.send_raw(data);
9487
}
9588
}
9689
}

src/port.rs

Lines changed: 8 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -101,20 +101,14 @@ impl SerialPort {
101101

102102
/// Sends a byte on the serial port.
103103
pub fn send(&mut self, data: u8) {
104-
unsafe {
105-
match data {
106-
8 | 0x7F => {
107-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
108-
x86::io::outb(self.port_data(), 8);
109-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
110-
x86::io::outb(self.port_data(), b' ');
111-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
112-
x86::io::outb(self.port_data(), 8);
113-
}
114-
_ => {
115-
wait_for!(self.line_sts().contains(LineStsFlags::OUTPUT_EMPTY));
116-
x86::io::outb(self.port_data(), data);
117-
}
104+
match data {
105+
8 | 0x7F => {
106+
self.send_raw(8);
107+
self.send_raw(b' ');
108+
self.send_raw(8);
109+
}
110+
data => {
111+
self.send_raw(data);
118112
}
119113
}
120114
}

0 commit comments

Comments
 (0)