我正在尝试为Contiki-os创建一个端口到LPC1347,我有一个关于Contiki如何处理内存的问题。 Protothreads是无堆栈的,没有使用“真正的线程”,所以一切都基本上在同一个堆栈上,所以它基本上是静态内存分配。我理解protothreads是如何工作的,但是当一个新进程被初始化时,如何为它分配内存,并且在事件有数据的情况下,如何为事件数据管理内存?
答案 0 :(得分:1)
在编译/链接期间静态分配所有必需的内存。它由PROCESS Macro [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