mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 22:37:49 +00:00
Fix two more dead links
This commit is contained in:
@@ -299,7 +299,7 @@ By returning a mutual reference to the entry's options, we allow the caller to o
|
||||
### Loading the IDT
|
||||
Now we're able to create new interrupt descriptor tables with registered handler functions. We just need a way to load an IDT, so that the CPU uses it. The x86 architecture uses a special register to store the active IDT and its length. In order to load a new IDT we need to update this register through the [lidt] instruction.
|
||||
|
||||
[lidt]: http://x86.renejeschke.de/html/file_module_x86_id_156.html
|
||||
[lidt]: https://www.felixcloutier.com/x86/lgdt:lidt
|
||||
|
||||
The `lidt` instruction expects a pointer to a special data structure, which specifies the start address of the IDT and its length:
|
||||
|
||||
|
||||
@@ -190,7 +190,7 @@ When printing a byte, the writer checks if the current line is full. In that cas
|
||||
|
||||
The `buffer()` auxiliary method converts the raw pointer in the `buffer` field into a safe mutable buffer reference. The unsafe block is needed because the [as_mut()] method of `Unique` is unsafe. But our `buffer()` method itself isn't marked as unsafe, so it must not introduce any unsafety (e.g. cause segfaults). To guarantee that, it's very important that the `buffer` field always points to a valid `Buffer`. It's like a contract that we must stand to every time we create a `Writer`. To ensure that it's not possible to create an invalid `Writer` from outside of the module, the struct must have at least one private field and public creation functions are not allowed either.
|
||||
|
||||
[as_mut()]: https://doc.rust-lang.org/nightly/core/ptr/struct.Unique.html#method.as_mut
|
||||
[as_mut()]: https://doc.rust-lang.org/1.10.0/core/ptr/struct.Unique.html#method.as_mut
|
||||
|
||||
### Cannot Move out of Borrowed Content
|
||||
When we try to compile it, we get the following error:
|
||||
|
||||
Reference in New Issue
Block a user