aboutsummaryrefslogtreecommitdiff
path: root/book/src/by-example/tips.md
diff options
context:
space:
mode:
authorJorge Aparicio <jorge@japaric.io>2019-02-11 21:40:53 +0100
committerJorge Aparicio <jorge@japaric.io>2019-02-11 21:40:53 +0100
commit0007a35a274ab2d07eb937e41971ea5e2c1cb5ff (patch)
tree98361d6d3dfced4b068771c31163b324573294b7 /book/src/by-example/tips.md
parent68a937a72a3a6d261076803d38b7d9b2cb9e3067 (diff)
change layout of books
Diffstat (limited to 'book/src/by-example/tips.md')
-rw-r--r--book/src/by-example/tips.md77
1 files changed, 0 insertions, 77 deletions
diff --git a/book/src/by-example/tips.md b/book/src/by-example/tips.md
deleted file mode 100644
index 5057c80..0000000
--- a/book/src/by-example/tips.md
+++ /dev/null
@@ -1,77 +0,0 @@
-# Tips & tricks
-
-## Generics
-
-Resources shared between two or more tasks implement the `Mutex` trait in *all*
-contexts, even on those where a critical section is not required to access the
-data. This lets you easily write generic code that operates on resources and can
-be called from different tasks. Here's one such example:
-
-``` rust
-{{#include ../../../examples/generics.rs}}
-```
-
-``` console
-$ cargo run --example generics
-{{#include ../../../ci/expected/generics.run}}```
-
-This also lets you change the static priorities of tasks without having to
-rewrite code. If you consistently use `lock`s to access the data behind shared
-resources then your code will continue to compile when you change the priority
-of tasks.
-
-## Conditional compilation
-
-You can use conditional compilation (`#[cfg]`) on resources (`static [mut]`
-items) and tasks (`fn` items). The effect of using `#[cfg]` attributes is that
-the resource / task will *not* be injected into the prelude of tasks that use
-them (see `resources`, `spawn` and `schedule`) if the condition doesn't hold.
-
-The example below logs a message whenever the `foo` task is spawned, but only if
-the program has been compiled using the `dev` profile.
-
-``` rust
-{{#include ../../../examples/cfg.rs}}
-```
-
-## Running tasks from RAM
-
-The main goal of moving the specification of RTFM applications to attributes in
-RTFM v0.4.x was to allow inter-operation with other attributes. For example, the
-`link_section` attribute can be applied to tasks to place them in RAM; this can
-improve performance in some cases.
-
-> **IMPORTANT**: In general, the `link_section`, `export_name` and `no_mangle`
-> attributes are very powerful but also easy to misuse. Incorrectly using any of
-> these attributes can cause undefined behavior; you should always prefer to use
-> safe, higher level attributes around them like `cortex-m-rt`'s `interrupt` and
-> `exception` attributes.
->
-> In the particular case of RAM functions there's no
-> safe abstraction for it in `cortex-m-rt` v0.6.5 but there's an [RFC] for
-> adding a `ramfunc` attribute in a future release.
-
-[RFC]: https://github.com/rust-embedded/cortex-m-rt/pull/100
-
-The example below shows how to place the higher priority task, `bar`, in RAM.
-
-``` rust
-{{#include ../../../examples/ramfunc.rs}}
-```
-
-Running this program produces the expected output.
-
-``` console
-$ cargo run --example ramfunc
-{{#include ../../../ci/expected/ramfunc.run}}```
-
-One can look at the output of `cargo-nm` to confirm that `bar` ended in RAM
-(`0x2000_0000`), whereas `foo` ended in Flash (`0x0000_0000`).
-
-``` console
-$ cargo nm --example ramfunc --release | grep ' foo::'
-{{#include ../../../ci/expected/ramfunc.grep.foo}}```
-
-``` console
-$ cargo nm --example ramfunc --release | grep ' bar::'
-{{#include ../../../ci/expected/ramfunc.grep.bar}}```