|
scmRTOS, Перезапуск процесса |
|
|
|
Jun 18 2008, 18:39
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836

|
Здравствуйте! Вопрос, наверое, к авторам в первую очередь. Можно ли в scmRTOS организовать перезапуск процесса (повторный вход в Exec со сбросом стека в начальное состояние), е еще лучше - подмену процесса другим, пусть даже с тем же размером стека и приоритетом. Обьясню зачем - устройство может работать в различных режимах и в каждом из них нужен свой набор примерно похожих, но отличающихся процессов. Одновременно держать их в памяти слишком накладно из-за стеков. Приходится на один процесс вешать разную функциональность в разных режимах. При этом каждый раз при смене режима выпутываться из вложенных циклов в кажом процессе, чтобы выйти на верхний уровень. Вот если бы была возможность просто плюнуть на текущий процесс, зная что он мне уже не нужен, и запустить вместо него другой, пусть с тем же стеком и приоритетом... или, на худой конец, просто быстро выскочить в начальное состояние процеса и пустить его по другой ветке... Понимаю, что в принципе должно быть возможно, но мешает не блестящее знание плюсов и раскиданнность самой ОС по нескольким файлам + дефицит времени для принятия решения. Тупой вызов Exec для процесса перезапускает его, но только один раз. дальше система начинает чудить. Очевидно, надо чистить стек, но как- пока не пойму. Буду признателен за помощь.
|
|
|
|
|
 |
Ответов
|
Jun 19 2008, 05:06
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(=DS= @ Jun 19 2008, 01:39)  Здравствуйте! Вопрос, наверое, к авторам в первую очередь. Можно ли в scmRTOS организовать перезапуск процесса (повторный вход в Exec со сбросом стека в начальное состояние), е еще лучше - подмену процесса другим, пусть даже с тем же размером стека и приоритетом. Обьясню зачем - устройство может работать в различных режимах и в каждом из них нужен свой набор примерно похожих, но отличающихся процессов. Одновременно держать их в памяти слишком накладно из-за стеков. Приходится на один процесс вешать разную функциональность в разных режимах. При этом каждый раз при смене режима выпутываться из вложенных циклов в кажом процессе, чтобы выйти на верхний уровень. Вот если бы была возможность просто плюнуть на текущий процесс, зная что он мне уже не нужен, и запустить вместо него другой, пусть с тем же стеком и приоритетом... или, на худой конец, просто быстро выскочить в начальное состояние процеса и пустить его по другой ветке... Понимаю, что в принципе должно быть возможно, но мешает не блестящее знание плюсов и раскиданнность самой ОС по нескольким файлам + дефицит времени для принятия решения. Тупой вызов Exec для процесса перезапускает его, но только один раз. дальше система начинает чудить. Очевидно, надо чистить стек, но как- пока не пойму. Буду признателен за помощь. Почему бы не поступить так: для реализации разных по функциональности вариантов написать соответствующее количество функций и вызывать их из одного и того же процесса. Если функция уже не нужна, то делать return из нее и запускать другую, нужную.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
Jun 19 2008, 06:33
|
Участник

Группа: Участник
Сообщений: 54
Регистрация: 25-09-07
Пользователь №: 30 836

|
Цитата(dxp @ Jun 19 2008, 09:06)  Почему бы не поступить так: для реализации разных по функциональности вариантов написать соответствующее количество функций и вызывать их из одного и того же процесса. Если функция уже не нужна, то делать return из нее и запускать другую, нужную. Смена режима вызывается внешним событием (подключением к компьютеру и тд), а не логикой программы. В Вашем варианте приходится приходится во всех этих процессах все время проверять флаги этих событий, чтобы сменить режим. А так можно поставить один мелкий процессик - диспетчер, который по возникновению смены режима быстро перезапустил или заменил процессы и снова завалился спать. Цитата(zltigo @ Jun 19 2008, 09:06)  Cколько себя помню , в родительской библиотеке ... То-же самое. Только библиотека эта теперь далеко....
|
|
|
|
Сообщений в этой теме
=DS= scmRTOS Jun 18 2008, 18:39 zltigo Цитата(=DS= @ Jun 18 2008, 20:39) Вот есл... Jun 18 2008, 20:34 =DS= Цитата(zltigo @ Jun 19 2008, 00:34) Посто... Jun 18 2008, 22:25  zltigo Цитата(=DS= @ Jun 19 2008, 00:25) Беда в ... Jun 19 2008, 05:25  ReAl Цитата(=DS= @ Jun 19 2008, 09:33) Смена р... Jun 19 2008, 12:36   =DS= 2 ReAl
Да уж... Собственно, когда я начинал тему, ... Jun 19 2008, 13:06
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|