Commit graph

1031 commits

Author SHA1 Message Date
Jorge Aparicio
fb84029bee implement the #[shared] attribute as specified in RFC #211 2019-07-11 12:53:58 +02:00
Jorge Aparicio
9195038c87 implement RFC #212 2019-07-10 22:42:44 +02:00
Jorge Aparicio
14d63f4961 fix (cross-core) initialization barriers 2019-07-03 20:36:52 +02:00
Jorge Aparicio
be92041a59 WIP 2019-06-29 09:11:57 +02:00
Jorge Aparicio
df4a7fd3e5 check that the app is not compiled for more cores than were specified 2019-06-24 14:15:00 +02:00
Jorge Aparicio
596cf585ea Monotonic trait is safe; add MultiCore trait 2019-06-24 14:09:12 +02:00
Jorge Aparicio
4e51bb68b9 RFC #207 2019-06-20 06:19:59 +02:00
Jorge Aparicio
b150ab29e2 homogeneous mode doesn't depend on microamp 2019-06-18 10:40:43 +02:00
Jorge Aparicio
9897728709 add homogeneous multi-core support 2019-06-18 10:31:31 +02:00
Jorge Aparicio
81275bfa4f rtfm-syntax refactor + heterogeneous multi-core support 2019-06-13 23:56:59 +02:00
bors[bot]
fafeeb2727 Merge #194
194: bump heapless dependency to v0.5.0; remove "nightly" feature r=japaric a=japaric

with the upcoming version of heapless we are able to initialize all internal
queues in const context removing the need for late initialization

this commit also removes the "nightly" feature because all the optimization
provided by it are now enabled by default

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-21 19:15:18 +00:00
bors[bot]
16614919c0 Merge #193
193: remove unused check r=japaric a=japaric

that was added in #140 but it's no longer required

this PR also adds some cfail tests to test the updated code

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-21 19:05:11 +00:00
Jorge Aparicio
30d6327001 bump heapless dependency to v0.5.0; remove "nightly" feature
with the upcoming version of heapless we are able to initialize all internal
queues in const context removing the need for late initialization

this commit also removes the "nightly" feature because all the optimization
provided by it are now enabled by default
2019-05-21 15:22:25 +02:00
Jorge Aparicio
0fb2726e6c remove unused check
that was added in #140 but it's no longer required
2019-05-21 14:43:05 +02:00
bors[bot]
eb528ef921 Merge #192
192: removes the maybe_uninit feature gate r=japaric a=japaric

and stop newtyping `core::mem::MaybeUninit`

this also fixes CI on nightly

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-21 12:32:21 +00:00
Jorge Aparicio
fafc94ccfb removes the maybe_uninit feature gate
and stop newtyping `core::mem::MaybeUninit`
2019-05-21 14:18:43 +02:00
bors[bot]
6acb156482 Merge #189
189: write generated code to disk for easier inspection r=japaric a=japaric

now that the generated code is actually readable let's make it easier to access

this commit also documents how to inspect the generated code via
`rtfm-expansion.rs` and `cargo-expand`

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-09 19:53:56 +00:00
bors[bot]
3b68816a75 Merge #191
191: generate resource proxies only when needed r=japaric a=japaric

only `static mut` resources need proxies

just a codegen optimization

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-09 19:44:20 +00:00
bors[bot]
2596ea0e46 Merge #175
175: document internals r=japaric a=japaric

note that this assumes that RFC #155 has been implemented

[Rendered text](https://japaric.github.io/rtfm5/book/en/internals.html)

Do not merge this before PR #176

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-09 19:33:42 +00:00
Jorge Aparicio
36073a6342 generate resource proxies only when needed
only `static mut` resources need proxies
2019-05-09 18:25:34 +02:00
Jorge Aparicio
ea02405ef0 document resolution and range of Instant and Duration 2019-05-08 19:48:12 +02:00
Jorge Aparicio
d1d2aff34b fix typo 2019-05-08 14:12:07 +02:00
Jorge Aparicio
d4eb4d2c47 write generated code to disk for easier inspection
now that the generated code is actually readable let's make it easier to access

this commit also documents how to inspect the generated code via
`rtfm-expansion.rs` and `cargo-expand`
2019-05-08 14:08:09 +02:00
Jorge Aparicio
09ec5a7a41 document internals
note that this assumes that RFC #155 has been implemented
2019-05-01 22:36:54 +02:00
bors[bot]
bc024f1979 Merge #176
176:  implement RFCs 147 and 155, fix #141, etc. r=japaric a=japaric

This PR:

- Implements RFC 147: "all functions must be safe"

- Implements RFC 155: "explicit Context parameter"

- Implements the pending breaking change #141: reject assign syntax in `init`
  (which was used to initialize late resources)

- Refactors code generation to make it more readable -- there are no more random
  identifiers in the output -- and align it with the book description of RTFM
  internals (see PR #175).

- Makes the framework hard depend on `core::mem::MaybeUninit` and thus will
  require nightly until that API is stabilized.

- Fixes a ceiling analysis bug where the priority of the system timer was not
  considered in the analysis (TODO backport this into the v0.4.x branch).

- Shrinks the size of all the internal queues by turning `AtomicUsize` indices
  into `AtomicU8`s.

- Removes the integration with `owned_singleton`.

closes #141
closes #147
closes #155

Additionally:

- This changes CI to push v0.5.x docs to
  https://japaric.github.io/rtfm5/book/en/ -- we need to do this because our
  official docs are hosted on https://japaric.github.io/cortex-m-rtfm and we
  need to keep them on v0.4.x until we release v0.5.0

- I propose that we use the master branch to develop the upcoming v0.5.0.

- I have created a branch v0.4.x for backports; new v0.4.x releases will come
  from that branch.

r? @korken89 @texitoi, sorry for doing all the impl work in a single commit --
I know that makes things harder to review for you.

Suggestions for compile-pass and compile-fail tests are welcome


Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-05-01 19:50:50 +00:00
Jorge Aparicio
ccd7f4586b book: indirection for faster message passing 2019-05-01 21:32:00 +02:00
Jorge Aparicio
485601245b rtfm::app: update error message 2019-05-01 20:49:25 +02:00
Jorge Aparicio
f30743f52a push docs to another repo & update README 2019-05-01 20:49:25 +02:00
Jorge Aparicio
4a7dc22259 travis: disable builds on stable 2019-05-01 20:49:25 +02:00
Jorge Aparicio
fa22145363 ci: the singleton example has been removed 2019-05-01 20:49:25 +02:00
Jorge Aparicio
3adc9c31f3 update the book 2019-05-01 20:49:25 +02:00
Jorge Aparicio
d538f5b17c test RFC 147 2019-05-01 20:49:25 +02:00
Jorge Aparicio
d0aaa2a805 update compile-fail tests 2019-05-01 20:49:25 +02:00
Jorge Aparicio
d2fb62f729 update compile-pass tests 2019-05-01 20:49:25 +02:00
Jorge Aparicio
1b4b006bab update examples 2019-05-01 20:49:25 +02:00
Jorge Aparicio
a452700628 implement RFCs 147 and 155, etc.
This commit:

- Implements RFC 147: "all functions must be safe"

- Implements RFC 155: "explicit Context parameter"

- Implements the pending breaking change #141: reject assign syntax in `init`
  (which was used to initialize late resources)

- Refactors code generation to make it more readable -- there are no more random
  identifiers in the output -- and align it with the book description of RTFM
  internals.

- Makes the framework hard depend on `core::mem::MaybeUninit` and thus will
  require nightly until that API is stabilized.

- Fixes a ceiling analysis bug where the priority of the system timer was not
  considered in the analysis.

- Shrinks the size of all the internal queues by turning `AtomicUsize` indices
  into `AtomicU8`s.

- Removes the integration with `owned_singleton`.
2019-05-01 20:49:25 +02:00
Jorge Aparicio
e6fb2f216f
bors: do not merge PRs labeled S-blocked 2019-04-21 21:05:57 +02:00
bors[bot]
852337e03b Merge #174
174: v0.4.3 r=japaric a=japaric

prepares a new release

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-04-21 16:21:57 +00:00
Jorge Aparicio
a562fb3232 v0.4.3 2019-04-21 18:20:57 +02:00
Jorge Aparicio
b5a756bd7d
Merge pull request #169 from japaric/late-must-be-send
book: note that late resources must be Send
2019-04-21 18:20:15 +02:00
Jorge Aparicio
473a0e7bb5 add .run file 2019-04-21 18:05:24 +02:00
Jorge Aparicio
e865cbb2e5 book: resources shared with init must also be Send 2019-04-21 18:00:22 +02:00
Jorge Aparicio
c4bad51deb note that late resources must be Send 2019-04-21 18:00:22 +02:00
Eric Trombly
19212a9f70 update commit for example link and specify RTFM version 2019-04-21 09:21:33 -05:00
Eric Trombly
21db4d1df4 add sandbox example 2019-04-19 10:50:43 -05:00
bors[bot]
77def32454 Merge #170
170: check task priority at compile time r=TeXitoi a=japaric

before we were checking the priority at runtime. The compile time error message
when the priority is too high is kind of awful though.

Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-04-16 22:54:18 +00:00
bors[bot]
e1e4c98cb9 Merge #171
171: [NFC] fix nightly ci r=japaric a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
2019-04-16 22:18:27 +00:00
Jorge Aparicio
210921e06c now fix the fix 2019-04-17 00:18:02 +02:00
Jorge Aparicio
53f0ca1504 more nightly fixes 2019-04-16 23:41:00 +02:00
Jorge Aparicio
10d2638488 [NFC] fix nightly ci 2019-04-16 23:17:28 +02:00