Proceedings of the 3rd Workshop on Programming Languages and Operating Systems: Linguistic Support for Modern Operating Systems 2006
DOI: 10.1145/1215995.1216001
|View full text |Cite
|
Sign up to set email alerts
|

Efficient type and memory safety for tiny embedded systems

Abstract: We report our experience in implementing type and memory safety in an efficient manner for sensor network nodes running TinyOS: tiny embedded systems running legacy, C-like code. A compiler for a safe language must often insert dynamic checks into the programs it produces; these generally make programs both larger and slower. In this paper, we describe our novel compiler toolchain, which uses a family of techniques to minimize or avoid these run-time costs. Our results show that safety can in fact be implement… Show more

Help me understand this report

Search citation statements

Order By: Relevance

Paper Sections

Select...
2
1
1
1

Citation Types

1
6
0

Year Published

2007
2007
2021
2021

Publication Types

Select...
4
1

Relationship

3
2

Authors

Journals

citations
Cited by 6 publications
(7 citation statements)
references
References 9 publications
1
6
0
Order By: Relevance
“…We note that this bug was first discovered with our previous work, a CCured-based version of Safe TinyOS [22]. We have verified that our current Deputy-based toolchain also finds this error.…”
Section: Bug #4: Incorrect Search-failure Checksupporting
confidence: 54%
See 2 more Smart Citations
“…We note that this bug was first discovered with our previous work, a CCured-based version of Safe TinyOS [22]. We have verified that our current Deputy-based toolchain also finds this error.…”
Section: Bug #4: Incorrect Search-failure Checksupporting
confidence: 54%
“…Nevertheless, we plan to continue working toward further optimizing Safe TinyOS applications. Consider for example that for the previous version of our toolchain [22], which was based on CCured and TinyOS 1, safe optimized applications actually had lower duty cycles, on average, than the original unsafe applications. We attribute our prior success largely to the fact that TinyOS 1 was coded much less tightly than TinyOS 2 is.…”
Section: Processor Usementioning
confidence: 99%
See 1 more Smart Citation
“…We found that adding contract checking code to the nesC compiler's output invalidated its inlining decision (by making functions larger), resulting in large code size blowup (often by 400% or more) when the application with contract checks was compiled. In previous work [2,12] we developed an inliner for C code that is followed up by a strong dead code elimination pass. Our inliner makes its decisions based on code size after contracts are added, enabling it to make good decisions.…”
Section: Add Contract State Fields To Data Structure Definitionsmentioning
confidence: 99%
“…Sympathy appears to be almost perfectly complementary to our contract work: it could be used to log contract failure events and relay them to a base station. t-kernel [5], SoS [13], Virgil [14], and our type-safe version of TinyOS [12] all use language-based protection to avoid memory safety violations in sensornet applications. This kind of protection is perfectly complementary to interface contract checking.…”
Section: Related Workmentioning
confidence: 99%