Question

Is contiki scheduler preemptive? Tinyos is not; there's nanork which i'm not sure of what state its development is in.

Was it helpful?

Solution 2

Contiki-OS for IoT's supports preemptive multi-threading. In contiki, multi-threading is implemented as a library on top of the event-driven kernel for dynamic loading and replacement of individual services. The library can be linked with applications that require multi-threading. Contiki multithreading library is divided in two parts: (i) a platform independent part (2) platform specific. The platform independent part interfaces to the event kernel and the platform specific part of the library implements stack switching and preemption primitives. Contiki uses protothreads for implementing so called multi-threading. Protothreads are designed for severely memory constraint devices because they are stack-less and lightweight. The main features of protothreads are: very small memory overhead (only two bytes per protothread), no extra stack for a thread, highly portable (i.e., they are fully written in C and hence there is no architecture-specific assembly code). Contiki does not allow interrupt handlers to post new events, no process synchronization is provided in Contiki. The interrupt handler (when required) and the reader functions must be synchronized to avoid race condition. Please have a look at the following link [The Ring Buffer Library] also: https://github.com/contiki-os/contiki/wiki/Libraries

OTHER TIPS

Contiki supports preemptive threads. Refer to:

https://github.com/contiki-os/contiki/wiki/Multithreading

It might be worth noting that the port for the most widely used sensor node, the TelosB, does not support preemption.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top