Skip to content

Commit 6ddeb92

Browse files
committed
Did a small refactor on the example code
1 parent 7cdd45a commit 6ddeb92

File tree

3 files changed

+20
-22
lines changed

3 files changed

+20
-22
lines changed

docs/apic_example/src/apic.rs

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -172,36 +172,36 @@ unsafe fn init_local_apic(
172172
mapper: &mut impl Mapper<Size4KiB>,
173173
frame_allocator: &mut impl FrameAllocator<Size4KiB>,
174174
) {
175-
let virt_addr = map_apic(
175+
let virtual_address = map_apic(
176176
local_apic_addr as u64,
177177
mapper,
178178
frame_allocator,
179179
);
180180

181-
let lapic_pointer = virt_addr.as_mut_ptr::<u32>();
181+
let lapic_pointer = virtual_address.as_mut_ptr::<u32>();
182182
LAPIC_ADDR.lock().address = lapic_pointer;
183183

184184
init_timer(lapic_pointer);
185185
init_keyboard(lapic_pointer);
186186
}
187187

188188
unsafe fn init_timer(lapic_pointer: *mut u32) {
189-
let svr_register = lapic_pointer.offset(APICOffset::SVR as isize / 4);
190-
svr_register.write_volatile(svr_register.read_volatile() | 0x100); // Set bit 8
189+
let svr = lapic_pointer.offset(APICOffset::SVR as isize / 4);
190+
svr.write_volatile(svr.read_volatile() | 0x100); // Set bit 8
191191

192-
let lvt_timer_register = lapic_pointer.offset(APICOffset::LVT_LINT1 as isize / 4);
193-
lvt_timer_register.write_volatile(0x20 | (1 << 17)); // Vector 0x20, periodic mode
192+
let lvt_lint1 = lapic_pointer.offset(APICOffset::LVT_LINT1 as isize / 4);
193+
lvt_lint1.write_volatile(0x20 | (1 << 17)); // Vector 0x20, periodic mode
194194

195-
let tdcr_register = lapic_pointer.offset(APICOffset::TDCR as isize / 4);
196-
tdcr_register.write_volatile(0x3);
195+
let tdcr = lapic_pointer.offset(APICOffset::TDCR as isize / 4);
196+
tdcr.write_volatile(0x3); // Divide by 16 mode
197197

198-
let timer_initial_count_register = lapic_pointer.offset(APICOffset::TICR as isize / 4);
199-
timer_initial_count_register.write_volatile(0x100000);
198+
let ticr = lapic_pointer.offset(APICOffset::TICR as isize / 4);
199+
ticr.write_volatile(0x100000); // An arbitrary value for the initial value of the timer
200200
}
201201

202202
unsafe fn init_keyboard(lapic_pointer: *mut u32) {
203-
let lvt_keyboard_register = lapic_pointer.offset(APICOffset::LVT_LINT1 as isize / 4);
204-
lvt_keyboard_register.write_volatile(InterruptIndex::Keyboard as u8 as u32);
203+
let keyboard_register = lapic_pointer.offset(APICOffset::LVT_LINT1 as isize / 4);
204+
keyboard_register.write_volatile(InterruptIndex::Keyboard as u8 as u32);
205205
}
206206

207207
unsafe fn init_io_apic(
@@ -230,9 +230,9 @@ fn map_apic(
230230
use x86_64::structures::paging::Page;
231231
use x86_64::structures::paging::PageTableFlags as Flags;
232232

233-
let phys_addr = PhysAddr::new(physical_address);
234-
let page = Page::containing_address(VirtAddr::new(phys_addr.as_u64()));
235-
let frame = PhysFrame::containing_address(phys_addr);
233+
let physical_address = PhysAddr::new(physical_address);
234+
let page = Page::containing_address(VirtAddr::new(physical_address.as_u64()));
235+
let frame = PhysFrame::containing_address(physical_address);
236236

237237
let flags = Flags::PRESENT | Flags::WRITABLE | Flags::NO_CACHE;
238238

@@ -248,7 +248,6 @@ fn map_apic(
248248

249249
fn disable_pic() {
250250
// Disable any unneeded PIC features, such as timer or keyboard to prevent it from firing interrupts
251-
252251
use x86_64::instructions::port::Port;
253252

254253
unsafe {

docs/apic_example/src/idt.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
use crate::apic;
2+
use crate::gdt::DOUBLE_FAULT_IST_INDEX;
13
use lazy_static::lazy_static;
24
use log::info;
35
use x86_64::registers::control::Cr2;
46
use x86_64::structures::idt::{InterruptDescriptorTable, InterruptStackFrame, PageFaultErrorCode};
5-
use crate::apic;
6-
use crate::gdt::DOUBLE_FAULT_IST_INDEX;
77

88
pub const PIC_1_OFFSET: u8 = 0x20;
99
pub const PIC_2_OFFSET: u8 = PIC_1_OFFSET + 8;

docs/apic_example/src/main.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,17 @@
22
#![no_std]
33
#![no_main]
44

5+
extern crate alloc;
56
mod frame_allocator;
67
mod apic;
78
mod idt;
89
mod gdt;
910

10-
extern crate alloc;
11-
11+
use crate::frame_allocator::BootInfoFrameAllocator;
12+
use bootloader_api::config::Mapping;
1213
use bootloader_api::{entry_point, BootInfo};
1314
use x86_64::structures::paging::OffsetPageTable;
1415
use x86_64::VirtAddr;
15-
use bootloader_api::config::Mapping;
16-
use crate::frame_allocator::BootInfoFrameAllocator;
1716

1817
pub const CONFIG: bootloader_api::BootloaderConfig = {
1918
let mut config = bootloader_api::BootloaderConfig::new_default();

0 commit comments

Comments
 (0)