galsC: A Language for Event-Driven Embedded Systems

Last updated 24 Feb 2005


Elaine Cheong, UC Berkeley
Jie Liu, Palo Alto Research Center


galsC (pronounced "GALS-see") is a language and compiler designed for use with the TinyGALS programming model, which uses TinyOS as the underlying component model. TinyGALS is a globally asynchronous, locally synchronous model for programming event-driven embedded systems, especially sensor networks. At the local level, software components communicate with each other synchronously via method calls. Components are composed 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 without explicitly passing messages. The TinyGALS programming model is structured such that code for all inter-actor communication, actor triggering mechanisms, and access to guarded global variables can be automatically generated from a high level specification.

By raising concurrency concerns above the level of TinyOS components, the TinyGALS programming model allows programmers to focus on the main tasks that the application must execute. Programs developed using this task-oriented model are thread safe and easy to debug.

galsC is designed to be compatible with TinyOS 1.x, which uses the nesC programming language. galsC extends the nesC language (which is an extension to the C programming language), which allows for better code generation and static analysis of programs. These features are especially important in severely memory-constrained and safety-critical systems.


Mailing lists

Sign up for our mailing lists here.