Commit graph

27 commits

Author SHA1 Message Date
Jorge Aparicio
b37c45ad2a make task.$T.priority optional
default the value to 1 if omitted
2017-07-27 12:11:22 -05:00
Jorge Aparicio
0b5afce771 refactor Resource / Threshold into its own crate, drop task!, tweak rtfm::atomic
task! can be re-added in a backward compatible fashion and I'd like to not have
two ways to assign a task handler to an interrupt / exception in the first
release.

rtfm::atomic now uses the `Threshold` token instead of the `CriticalSection`
token. This reduces overhead by dropping the "are interrupts enabled?" check.
2017-07-27 11:37:58 -05:00
Jorge Aparicio
dee2fcde71 provide a Threshold token even when all resources are lockless
because the token will always be required for calling generic functions
2017-07-26 19:30:47 -05:00
Jorge Aparicio
4a1509cb53 fix around owned idle resource 2017-07-26 17:01:53 -05:00
Jorge Aparicio
8aa3621034 fix errors around the use of super in relative paths 2017-07-25 22:27:57 -05:00
Jorge Aparicio
0e05682d09 more "hygiene"
prepend an underscore to the name of the statics generated in the root of the
crate
2017-07-24 23:07:11 -05:00
Jorge Aparicio
fb4542818b task! is not needed if tasks.$T.path is specified 2017-07-24 22:46:29 -05:00
Jorge Aparicio
f5a4d8e904 don't wrap static references in a Static 2017-07-23 20:59:35 -05:00
Jorge Aparicio
f3b397f460 drop rtfm::Cell 2017-07-23 20:51:37 -05:00
Jorge Aparicio
03f373fb24 drop idle.locals 2017-07-23 20:03:59 -05:00
Jorge Aparicio
bf4eabf287 misc fixes 2017-07-20 23:47:14 -05:00
Jorge Aparicio
c64e7decfe doc tweaks 2017-07-20 23:14:41 -05:00
Jorge Aparicio
c7b9507a57 Resource trait, docs, examples and rtfm-syntax related changes 2017-07-20 22:53:44 -05:00
Jorge Aparicio
877a32448f make compatible with the unsafe_code lint 2017-07-18 20:17:09 -05:00
Jorge Aparicio
97a7e38db7 tasks / idle have exclusive access to Threshold, but do not own the token 2017-07-18 20:03:22 -05:00
Jorge Aparicio
a2b0c9e0d0 resources owned by idle have 'static lifetime 2017-07-18 19:49:52 -05:00
Jorge Aparicio
5824f837e1 adapt to changes in rtfm-syntax 2017-07-18 16:49:59 -05:00
Jorge Aparicio
e9788ff9b6 rename rtfm! to app! and adapt to changes in rtfm-syntax 2017-07-14 20:47:06 -05:00
Jorge Aparicio
98596554b3 split macro parser into its own crate and improve error handling / reporting 2017-07-14 18:57:02 -05:00
Jorge Aparicio
59afbf02aa compiler plugin -> proc macro 2017-07-11 23:44:54 -05:00
Jorge Aparicio
8485a24d36 make the init::Resources argument optional 2017-07-09 16:30:04 -05:00
Jorge Aparicio
b7e43c1dbc make the tasks and resources fields optional 2017-07-08 21:56:39 -05:00
Jorge Aparicio
e18eb9610e fix unused variable warning around interrupt::free 2017-07-08 21:56:15 -05:00
Jorge Aparicio
17b252a8b6 rename rtfm-macros to cortex-m-rtfm-macros 2017-07-08 21:44:22 -05:00
Jorge Aparicio
3cebf49a2f syntax tweaks, relax check, add set_pending(), deal with imported types
- allow trailing commas in list of resources

- make task.resources optional

- add rtfm::set_pending function which can be used to force an interrupt into
  the pending state. This is a replacement of the old rtfm::request.
  rtfm::set_pending takes the Interrupt enum provided by the device crate as
  argument. (The old rtfm::request took a task function as argument)

- the user may want to use types they imported into the root of the crate. These
  types are not available in e.g. `mod idle` so `idle::Resources` *can't* be
  defined in that module. To workaround this problem `idle::Resources` will be
  defined in the root, with some other name, and then be re-exported in the
  `idle` module.

- remove the "a resource only used by one task should be local data" check. In
  some cases you do want a resource owned by a single task instead of local
  data since `init` can access resources but not a task local data.
2017-07-06 23:25:29 -05:00
Jorge Aparicio
4b0c3bff87 rtfm!: remove init.resources and make idle.local optional 2017-07-06 17:51:34 -05:00
Jorge Aparicio
86a360a396 rtfm! macro take 2 2017-07-04 11:26:11 -05:00