Doimg this in the kernel complicates things; it can't just import tokio like most Rust programs.
This pull request has three commits. The first modifies some C code slightly, and adds a helper so that it can be used from Rust code. (Most of this is actually a C macro, rather than a function that can be called).
The second commit implements a simple executor for async code, which stores tasks to be completed in the future in a workqueue. The workqueue already existed in the kernel.
The fin commit is the echo server, written in async Rust and executed using the executor from the previous commit.