mirror of
https://github.com/phil-opp/blog_os.git
synced 2025-12-16 14:27:49 +00:00
Compare commits
14 Commits
c689ecf810
...
3fef39211e
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
3fef39211e | ||
|
|
d17048e054 | ||
|
|
e0db01a59d | ||
|
|
cca2886907 | ||
|
|
77221b833b | ||
|
|
db64d2876d | ||
|
|
bde26a617e | ||
|
|
d70afb7ecc | ||
|
|
cc100920d8 | ||
|
|
209fd7c312 | ||
|
|
a86304d932 | ||
|
|
7f5859f8ee | ||
|
|
09aa0347d1 | ||
|
|
bbc59d23e8 |
16
.github/workflows/blog.yml
vendored
16
.github/workflows/blog.yml
vendored
@@ -20,7 +20,7 @@ jobs:
|
|||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v1
|
||||||
|
|
||||||
- name: 'Download Zola'
|
- name: 'Download Zola'
|
||||||
run: curl -sL https://github.com/getzola/zola/releases/download/v0.15.3/zola-v0.15.3-x86_64-unknown-linux-gnu.tar.gz | tar zxv
|
run: curl -sL https://github.com/getzola/zola/releases/download/v0.16.1/zola-v0.16.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
|
||||||
- name: 'Install Python Libraries'
|
- name: 'Install Python Libraries'
|
||||||
run: python -m pip install --user -r requirements.txt
|
run: python -m pip install --user -r requirements.txt
|
||||||
working-directory: "blog"
|
working-directory: "blog"
|
||||||
@@ -38,20 +38,6 @@ jobs:
|
|||||||
name: generated_site
|
name: generated_site
|
||||||
path: blog/public
|
path: blog/public
|
||||||
|
|
||||||
zola_check:
|
|
||||||
name: "Zola Check"
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
|
|
||||||
steps:
|
|
||||||
- uses: actions/checkout@v1
|
|
||||||
|
|
||||||
- name: 'Download Zola'
|
|
||||||
run: curl -sL https://github.com/getzola/zola/releases/download/v0.15.3/zola-v0.15.3-x86_64-unknown-linux-gnu.tar.gz | tar zxv
|
|
||||||
|
|
||||||
- name: "Run zola check"
|
|
||||||
run: ../zola check
|
|
||||||
working-directory: "blog"
|
|
||||||
|
|
||||||
check_spelling:
|
check_spelling:
|
||||||
name: "Check Spelling"
|
name: "Check Spelling"
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|||||||
27
.github/workflows/check-links.yml
vendored
Normal file
27
.github/workflows/check-links.yml
vendored
Normal file
@@ -0,0 +1,27 @@
|
|||||||
|
name: Check Links
|
||||||
|
|
||||||
|
on:
|
||||||
|
push:
|
||||||
|
branches:
|
||||||
|
- "*"
|
||||||
|
- "!staging.tmp"
|
||||||
|
tags:
|
||||||
|
- "*"
|
||||||
|
pull_request:
|
||||||
|
schedule:
|
||||||
|
- cron: "0 0 1/4 * *" # every 4 days
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
zola_check:
|
||||||
|
name: "Zola Link Check"
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
|
||||||
|
- name: "Download Zola"
|
||||||
|
run: curl -sL https://github.com/getzola/zola/releases/download/v0.16.1/zola-v0.16.1-x86_64-unknown-linux-gnu.tar.gz | tar zxv
|
||||||
|
|
||||||
|
- name: "Run zola check"
|
||||||
|
run: ../zola check
|
||||||
|
working-directory: "blog"
|
||||||
@@ -5,7 +5,7 @@ feed_filename = "rss.xml"
|
|||||||
compile_sass = true
|
compile_sass = true
|
||||||
minify_html = false
|
minify_html = false
|
||||||
|
|
||||||
ignored_content = ["*/README.md", "LICENSE-CC-BY-NC"]
|
ignored_content = ["*/README.md", "*/LICENSE-CC-BY-NC"]
|
||||||
|
|
||||||
[markdown]
|
[markdown]
|
||||||
highlight_code = true
|
highlight_code = true
|
||||||
@@ -14,16 +14,18 @@ smart_punctuation = true
|
|||||||
|
|
||||||
[link_checker]
|
[link_checker]
|
||||||
skip_prefixes = [
|
skip_prefixes = [
|
||||||
"https://crates.io/crates", # see https://github.com/rust-lang/crates.io/issues/788
|
"https://crates.io/crates", # see https://github.com/rust-lang/crates.io/issues/788
|
||||||
"https://www.amd.com/system/files/TechDocs/", # seems to have problems with PDFs
|
"https://www.amd.com/system/files/TechDocs/", # seems to have problems with PDFs
|
||||||
"https://developer.apple.com/library/archive/qa/qa1118/_index.html", # results in a 401 (I don't know why)
|
"https://developer.apple.com/library/archive/qa/qa1118/_index.html", # results in a 401 (I don't know why)
|
||||||
"https://github.com", # rate limiting often leads to "Error 429 Too Many Requests"
|
"https://github.com", # rate limiting often leads to "Error 429 Too Many Requests"
|
||||||
"https://www.linkedin.com/", # seems to send invalid HTTP status codes
|
"https://www.linkedin.com/", # seems to send invalid HTTP status codes
|
||||||
]
|
]
|
||||||
skip_anchor_prefixes = [
|
skip_anchor_prefixes = [
|
||||||
"https://github.com/", # see https://github.com/getzola/zola/issues/805
|
"https://github.com/", # see https://github.com/getzola/zola/issues/805
|
||||||
"https://docs.rs/x86_64/0.1.2/src/", # source code highlight
|
"https://docs.rs/x86_64/0.1.2/src/", # source code highlight
|
||||||
"https://doc.rust-jp.rs/book-ja/", # seems like Zola has problems with Japanese anchor names
|
"https://doc.rust-jp.rs/book-ja/", # seems like Zola has problems with Japanese anchor names
|
||||||
|
"https://doc.rust-jp.rs/edition-guide/rust-2018", # seems like Zola has problems with Japanese anchor names
|
||||||
|
"https://doc.rust-jp.rs/rust-nomicon-ja/", # seems like Zola has problems with Japanese anchor names
|
||||||
]
|
]
|
||||||
|
|
||||||
[extra]
|
[extra]
|
||||||
|
|||||||
@@ -406,9 +406,7 @@ So the linker can't find a function named `_Unwind_Resume` that is referenced e.
|
|||||||
|
|
||||||
[iterator.rs:389]: https://github.com/rust-lang/rust/blob/c58c928e658d2e45f816fd05796a964aa83759da/src/libcore/iter/iterator.rs#L389
|
[iterator.rs:389]: https://github.com/rust-lang/rust/blob/c58c928e658d2e45f816fd05796a964aa83759da/src/libcore/iter/iterator.rs#L389
|
||||||
|
|
||||||
By default, the destructors of all stack variables are run when a `panic` occurs. This is called _unwinding_ and allows parent threads to [recover from panics]. However, it requires a platform specific gcc library, which isn't available in our kernel.
|
By default, the destructors of all stack variables are run when a `panic` occurs. This is called _unwinding_ and allows parent threads to recover from panics. However, it requires a platform specific gcc library, which isn't available in our kernel.
|
||||||
|
|
||||||
[recover from panics]: https://www.howtobuildsoftware.com/index.php/how-do/fFH/rust-recovering-from-panic-in-another-thread
|
|
||||||
|
|
||||||
Fortunately, Rust allows us to disable unwinding for our target. For that we add the following line to our `x86_64-blog_os.json` file:
|
Fortunately, Rust allows us to disable unwinding for our target. For that we add the following line to our `x86_64-blog_os.json` file:
|
||||||
|
|
||||||
|
|||||||
@@ -147,7 +147,7 @@ In the section below, we explain how to construct virtual addresses for followin
|
|||||||
|
|
||||||
We saw that we can access tables of all levels by following the recursive entry once or multiple times before the actual translation. Since the indexes into the tables of the four levels are derived directly from the virtual address, we need to construct special virtual addresses for this technique. Remember, the page table indexes are derived from the address in the following way:
|
We saw that we can access tables of all levels by following the recursive entry once or multiple times before the actual translation. Since the indexes into the tables of the four levels are derived directly from the virtual address, we need to construct special virtual addresses for this technique. Remember, the page table indexes are derived from the address in the following way:
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Let's assume that we want to access the level 1 page table that maps a specific page. As we learned above, this means that we have to follow the recursive entry once before continuing with the level 4, level 3, and level 2 indexes. To do that, we move each block of the address one block to the right and set the original level 4 index to the index of the recursive entry:
|
Let's assume that we want to access the level 1 page table that maps a specific page. As we learned above, this means that we have to follow the recursive entry once before continuing with the level 4, level 3, and level 2 indexes. To do that, we move each block of the address one block to the right and set the original level 4 index to the index of the recursive entry:
|
||||||
|
|
||||||
|
|||||||
@@ -35,11 +35,11 @@
|
|||||||
{% block after_main %}
|
{% block after_main %}
|
||||||
<hr>
|
<hr>
|
||||||
<div class="PageNavigation">
|
<div class="PageNavigation">
|
||||||
{% if page.lighter %}
|
{% if page.lower %}
|
||||||
<a class="prev" href="{{ page.lighter.path | safe }}">« {{ page.lighter.title }}</a>
|
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if page.heavier %}
|
{% if page.higher %}
|
||||||
<a class="next" href="{{ page.heavier.path | safe }}">{{ page.heavier.title }} »</a>
|
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -97,11 +97,11 @@
|
|||||||
|
|
||||||
<hr>
|
<hr>
|
||||||
<div class="PageNavigation">
|
<div class="PageNavigation">
|
||||||
{% if page.lighter %}
|
{% if page.lower %}
|
||||||
<a class="prev" href="{{ page.lighter.path | safe }}">« {{ page.lighter.title }}</a>
|
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if page.heavier %}
|
{% if page.higher %}
|
||||||
<a class="next" href="{{ page.heavier.path | safe }}">{{ page.heavier.title }} »</a>
|
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
|||||||
@@ -22,11 +22,11 @@
|
|||||||
{% block after_main %}
|
{% block after_main %}
|
||||||
<hr>
|
<hr>
|
||||||
<div class="PageNavigation">
|
<div class="PageNavigation">
|
||||||
{% if page.earlier %}
|
{% if page.lower %}
|
||||||
<a class="prev" href="{{ page.earlier.path | safe }}">« {{ page.earlier.title }}</a>
|
<a class="prev" href="{{ page.lower.path | safe }}">« {{ page.lower.title }}</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% if page.later %}
|
{% if page.higher %}
|
||||||
<a class="next" href="{{ page.later.path | safe }}">{{ page.later.title }} »</a>
|
<a class="next" href="{{ page.higher.path | safe }}">{{ page.higher.title }} »</a>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
</div>
|
</div>
|
||||||
<hr>
|
<hr>
|
||||||
|
|||||||
Reference in New Issue
Block a user