From 8d3cdf62e399ba1706be640c1af2538203965f42 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 23 Mar 2020 16:07:47 +0100 Subject: [PATCH] Add keyboard output gif --- .../second-edition/posts/12-async-await/index.md | 4 ++-- .../12-async-await/qemu-keyboard-output.gif | Bin 0 -> 9758 bytes 2 files changed, 2 insertions(+), 2 deletions(-) create mode 100644 blog/content/second-edition/posts/12-async-await/qemu-keyboard-output.gif diff --git a/blog/content/second-edition/posts/12-async-await/index.md b/blog/content/second-edition/posts/12-async-await/index.md index 805140e0..18508677 100644 --- a/blog/content/second-edition/posts/12-async-await/index.md +++ b/blog/content/second-edition/posts/12-async-await/index.md @@ -1383,9 +1383,9 @@ fn kernel_main(boot_info: &'static BootInfo) -> ! { When we execute `cargo xrun` now, we see that keyboard input works again: -TODO image +![QEMU printing ".....H...e...l...l..o..... ...W..o..r....l...d...!"](qemu-keyboard-output.gif) -If you keep an eye on the CPU utilization of your computer, you will see that the `QEMU` process now keeps one CPU completely busy. This happens because our `SimpleExecutor` polls tasks over and over again in a loop. So even if we don't press any keys on the keyboard, the executor repeatedly calls `poll` on our `print_keypresses` task, even though the task cannot make any progress and will return `Poll::Pending` each time. +If you keep an eye on the CPU utilization of your computer, you will see that the `QEMU` process now continuously keeps the CPU busy. This happens because our `SimpleExecutor` polls tasks over and over again in a loop. So even if we don't press any keys on the keyboard, the executor repeatedly calls `poll` on our `print_keypresses` task, even though the task cannot make any progress and will return `Poll::Pending` each time. To fix this, we need to create an executor that properly utilizes the `Waker` notifications. This way, the executor is notified when the next keyboard interrupt occurs, so it does not need to keep polling the `print_keypresses` task over and over again. diff --git a/blog/content/second-edition/posts/12-async-await/qemu-keyboard-output.gif b/blog/content/second-edition/posts/12-async-await/qemu-keyboard-output.gif new file mode 100644 index 0000000000000000000000000000000000000000..992fa5fcd373005f8a5c4bce2618239f449d10ab GIT binary patch literal 9758 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 H0Ja7I)41)o literal 0 HcmV?d00001