Я пытаюсь создать порт для Contiki-os для LPC1347, и у меня вопрос о том, как именно память обрабатывается в Contiki. Прототипы не имеют стека и не используются «реальные потоки», поэтому все в основном находится в одном стеке, поэтому в основном это статическое распределение памяти. Я понимаю, как работают прототипы, но когда инициализируется новый процесс, как распределена память для него, а также, в случае события, имеющего данные, как управляется память для данных событий?Управление памятью в Contiki-OS
0
A
ответ
1
Вся необходимая память статически выделяется во время компиляции/связи. Его выполняет макрос 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
Еще раз спасибо! Однако у меня есть еще один вопрос: поскольку переменные являются глобальными, для события они не могут обновляться до завершения процесса события. – DarthSpeedious
Не вижу вопроса, но, наверное, да. – morty
Знаете ли вы, где я могу найти справочное руководство для Contiki 2.7? Я получаю ошибки, когда пытаюсь сделать это с помощью doxygen. – DarthSpeedious