galsC: A Language for Event-Driven Embedded Systems
Elaine Cheong and Jie Liu
Memorandum No. UCB/ERL M04/7
20 April 2004
Electronics Research Laboratory
College of Engineering
University of California, Berkeley 94720
ABSTRACT
We introduce galsC, a language designed for programming event-driven
embedded systems such as sensor networks. galsC implements the
TinyGALS programming model. At the local level, software components
are linked via synchronous method calls to form actors. At the global
level, actors communicate with each other asynchronously via message
passing, which separates the flow of control between actors. A
complementary model called TinyGUYS is a guarded yet synchronous model
designed to allow thread-safe sharing of global state between actors
via parameters without explicitly passing messages. The galsC
compiler extends the nesC compiler, which allows for better type
checking and code generation. In galsC programs, all inter-actor
communication, actor triggering mechanisms, and access to guarded
global variables are automatically generated by the compiler. Having a
well-structured concurrency model at the application level greatly
reduces the risk of concurrency errors, such as deadlock and race
conditions. The galsC language is implemented on the Berkeley motes
and is compatible with the TinyOS/nesC component library. We use a
multi-hop wireless sensor network as an example to illustrate the
effectiveness of the language.