mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Update blog to e320e4d1d9
This commit is contained in:
@@ -326,7 +326,7 @@ use spin::Mutex;
|
|||||||
pub static WRITER: Mutex<Writer> = Mutex::new(Writer {
|
pub static WRITER: Mutex<Writer> = Mutex::new(Writer {
|
||||||
column_position: 0,
|
column_position: 0,
|
||||||
color_code: ColorCode::new(Color::LightGreen, Color::Black),
|
color_code: ColorCode::new(Color::LightGreen, Color::Black),
|
||||||
buffer: Unique::new(0xb8000 as *mut _),
|
buffer: unsafe { Unique::new(0xb8000 as *mut _) },
|
||||||
});
|
});
|
||||||
```
|
```
|
||||||
[Mutex::new] is a const function, too, so it can be used in statics.
|
[Mutex::new] is a const function, too, so it can be used in statics.
|
||||||
@@ -422,7 +422,7 @@ The [next post] describes the Multiboot information structure and creates a fram
|
|||||||
## Other Rust OS Projects
|
## Other Rust OS Projects
|
||||||
Now that you know the very basics of OS development in Rust, you should also check out the following projects:
|
Now that you know the very basics of OS development in Rust, you should also check out the following projects:
|
||||||
|
|
||||||
- [Rust Bare-Bones Kernel]: A basic kernel with roughly the same functionality as ours. Writes output to the serial port instead of the VGA buffer and maps the kernel to the [higher half] \(instead of our identity mapping).
|
- [Rust Bare-Bones Kernel]: A basic kernel with roughly the same functionality as ours. Writes output to the serial port instead of the VGA buffer and maps the kernel to the [higher half] \(instead of our identity mapping).
|
||||||
_Note_: You need to [cross compile binutils] to build it (or you create some symbolic links[^fn-symlink] if you're on x86_64).
|
_Note_: You need to [cross compile binutils] to build it (or you create some symbolic links[^fn-symlink] if you're on x86_64).
|
||||||
[Rust Bare-Bones Kernel]: https://github.com/thepowersgang/rust-barebones-kernel
|
[Rust Bare-Bones Kernel]: https://github.com/thepowersgang/rust-barebones-kernel
|
||||||
[higher half]: http://wiki.osdev.org/Higher_Half_Kernel
|
[higher half]: http://wiki.osdev.org/Higher_Half_Kernel
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ let boot_info = unsafe{ multiboot2::load(multiboot_information_address) };
|
|||||||
let memory_map_tag = boot_info.memory_map_tag().expect("Memory map tag required");
|
let memory_map_tag = boot_info.memory_map_tag().expect("Memory map tag required");
|
||||||
|
|
||||||
println!("memory areas:");
|
println!("memory areas:");
|
||||||
for area in emory_map_tag.memory_areas() {
|
for area in memory_map_tag.memory_areas() {
|
||||||
println!(" start: 0x{:x}, length: 0x{:x}", area.base_addr, area.length);
|
println!(" start: 0x{:x}, length: 0x{:x}", area.base_addr, area.length);
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@@ -361,7 +361,7 @@ let mut frame_allocator = memory::AreaFrameAllocator::new(
|
|||||||
Now we can test it by adding some frame allocations:
|
Now we can test it by adding some frame allocations:
|
||||||
|
|
||||||
```rust
|
```rust
|
||||||
println!("{:?}", frame_allocator.allocate_frame())
|
println!("{:?}", frame_allocator.allocate_frame());
|
||||||
```
|
```
|
||||||
You will see that the frame number starts at `0` and increases steadily, but the kernel and Multiboot frames are left out (you need to allocate many frames to see this since the kernel starts at frame 256).
|
You will see that the frame number starts at `0` and increases steadily, but the kernel and Multiboot frames are left out (you need to allocate many frames to see this since the kernel starts at frame 256).
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user