Hugo van der Wijst
577d188f72
Make generated names stable when sorting.
2019-02-16 00:23:01 +01:00
Hugo van der Wijst
a654d13eef
Seed RNG with package name and prepend string to full random name.
2019-02-16 00:23:01 +01:00
Hugo van der Wijst
be8a5e89b8
Make identifiers deterministic.
2019-02-16 00:23:01 +01:00
Hugo van der Wijst
2f89688ca9
Make builds reproducible
...
This is done by using `BTreeMap`s and `BTreeSet`s to get deterministic
ordering.
Also updated the CI job to check reproducibility of all examples.
2019-02-16 00:22:22 +01:00
Jorge Aparicio
5f7e831d27
fix non_camel_case_types warnings
2019-02-13 15:37:24 +01:00
Jorge Aparicio
88599780e0
accept init: fn() -> init::LateResources
2019-02-12 14:53:49 +01:00
Jorge Aparicio
557a51ede1
forbid early returns in init
2019-02-12 11:07:15 +01:00
Hugo van der Wijst
45e98afbc1
Fix build on recent nightlies.
2019-01-17 10:55:21 -08:00
Jorge Aparicio
56d09a12dd
move macros crate to the 2018 edition
2018-12-16 19:14:58 +01:00
Jorge Aparicio
8e9a91d0b0
properly handle #[cfg]
(conditional compilation) on tasks
2018-12-16 19:10:36 +01:00
Jorge Aparicio
4345c10596
properly handle #[cfg] (conditional compilation) on resources
2018-12-16 18:37:36 +01:00
Jorge Aparicio
9757c33b00
use the single core variant of spsc::Queue
2018-12-16 01:11:54 +01:00
Jorge Aparicio
4f00d8bd78
codegen/statics: forward #[cfg] attributes
...
fixes #110
2018-12-15 22:04:30 +01:00
Jorge Aparicio
d14e25d72d
move some interrupt configuration to pre_init
2018-12-15 20:35:00 +01:00
Jorge Aparicio
f7ac71ab22
codegen: merge dictionaries related to task dispatchers
2018-12-15 19:17:08 +01:00
Jorge Aparicio
0b3f0b2eb5
codegen: merge dictionaries related to tasks
2018-12-15 19:07:09 +01:00
Jorge Aparicio
35bb76ef5f
codegen: stop using export_name
...
`export_name` creates external symbols that won't be removed when using `-Z
emit-stack-sizes`
2018-12-02 17:43:36 +01:00
Jorge Aparicio
22d758ddac
fix codegen
2018-11-04 19:46:49 +01:00
Jorge Aparicio
37a0692a0f
impl Mutex on all shared resources
...
document how to write generic code that operates on resources
2018-11-04 18:50:42 +01:00
Jorge Aparicio
c631049efc
v0.4.0
...
closes #32
closes #33
2018-11-03 17:16:55 +01:00
Jorge Aparicio
abca829926
more fixes
2018-08-24 16:31:04 +02:00
Ferdia McKeogh
14b1811182
Fix "Could not find Op
in proc_macro
"
2018-06-07 11:45:11 +01:00
Jorge Aparicio
7fdf16eab9
update parser
...
closes #69
this doesn't change functionality per se but improves diagnostics in some cases. Some hard errors
have becomes warnings, for example: when `resources` is empty, or when `idle.path` is set to the
default `idle` path.
2018-04-16 21:32:29 +02:00
Jorge Aparicio
def4fc8079
v0.3.0
2018-01-15 23:33:09 +01:00
Jorge Aparicio
1be43fc489
adapt to changes in the cortex-m crate
2018-01-11 20:56:45 +01:00
Jorge Aparicio
b00f4fec14
add missing comma
2017-12-17 10:00:56 +01:00
Jorge Aparicio
d30bdcb096
safe &'static mut
references via init.resources
2017-12-09 17:17:56 +01:00
Jorge Aparicio
a6dd004113
implement the Resource trait for owned resources
...
this unbreaks the "generics" example
2017-12-09 17:17:56 +01:00
Jorge Aparicio
219e172680
drop the Static wrapper
2017-12-09 17:15:15 +01:00
Jorge Aparicio
62c5c1ae43
make resource proxies not Sync
2017-12-09 16:13:22 +01:00
Jorge Aparicio
9865a7246d
make resource proxies !Send
2017-12-09 15:10:29 +01:00
Jorge Aparicio
79e2b7dc2e
rename LateResourceValues to LateResources
2017-12-09 13:20:41 +01:00
Jorge Aparicio
1830bdbe5c
remove special case around peripherals from codegen
2017-12-09 13:08:08 +01:00
Jorge Aparicio
e97afa71ce
peripherals as scoped singletons
2017-12-09 12:45:57 +01:00
Jorge Aparicio
948e1fd0fb
v0.2.2
2017-11-22 09:29:01 +01:00
Jorge Aparicio
2415a640af
fix idle::Resources::new
...
it assumed that all resources were "early" resources
2017-10-02 14:49:40 +02:00
Jonas Schievink
1556948458
Fix shared resource handling and extend example.
...
The extended example tests that this actually works this time.
2017-09-22 18:19:18 +02:00
Jonas Schievink
70e243694d
Simplify iterator usage
2017-09-22 18:10:00 +02:00
Jonas Schievink
57ed0963ff
Use untagged_option
crate
2017-09-06 19:06:43 +02:00
Jonas Schievink
7ebba49644
Allow initialization of resources in init
.
2017-09-03 18:19:21 +02:00
Jorge Aparicio
6160548153
v0.2.0
2017-07-29 01:17:54 -05:00
Jorge Aparicio
2d80f3631b
update examples
2017-07-29 00:46:38 -05:00
Jorge Aparicio
271df39bdb
Send
-ness check is now in rtfm-core
2017-07-27 21:30:24 -05:00
Jorge Aparicio
b9f50e432e
make task.$T.path mandatory
2017-07-27 19:39:18 -05:00
Jorge Aparicio
d396da5950
make task.$T.enabled optional
...
and move the logic that differentiates interrupts from exceptions from the crate
to the procedural macro logic
2017-07-27 17:08:42 -05:00
Jorge Aparicio
dd539d114f
don't generate empty modules
2017-07-27 12:29:52 -05:00
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
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