Contiki 中的内存管理-OS

Memory management in Contiki-OS

我正在尝试为 Contiki-os 创建一个到 LPC1347 的端口,我有一个关于 Contiki 中内存处理方式的问题。 Protothreads 是无栈的,没有使用 "real threads" 所以所有东西基本上都在同一个栈上,所以它基本上是静态内存分配。我了解原线程是如何工作的,但是当一个新进程被初始化时,如何为它分配内存,以及如果事件有数据,如何为事件数据管理内存?

所有需要的内存在 compilation/linkage 期间静态分配。它由 PROCESS 宏 [1] 完成,它分配一个包含必要信息的结构 [2]。至于事件,他们也必须分配自己的内存[3]。

因此不可能运行同一个线程*或安排同一个事件两次。

* 其实是,只是没有使用PROCESS宏

[1] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.h#L301-311

[2] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.h#L315-326

[3] https://github.com/contiki-os/contiki/blob/5bede26b/core/sys/process.c#L62-66