Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Маленький вопросик по scmRTOS и OS::channel::push
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Операционные системы > scmRTOS
meister
Операционка scmRTOS 3.05 LPC2xxx. Можно OS::channel::push вызывать из irq (SignalISR у флага есть, а push_isr нет)? Если нет, то как принято в ней делать "канал" "прерывание-процесс"?
Сергей Борщ
Цитата(meister @ Sep 1 2008, 12:23) *
Операционка scmRTOS 3.05 LPC2xxx. Можно OS::channel::push вызывать из irq (SignalISR у флага есть, а push_isr нет)? Если нет, то как принято в ней делать "канал" "прерывание-процесс"?
Можно. Это будет чуть менее эффективно, чем если бы был вариант с ISR, но работать будет. Только не забудьте перед этим проверить, что в канале действительно есть место. Иначе программа попытается передать управление другому процессу на время ожидания освобождения места в канале, а это уже крах.
ReAl
Ну а если проверка доступного места в канале скажет "облом", то тогда "монитор выбрасывает байт" (см. аттач) и поднять какой-то флаг ошибки.
По сути, ничем от "безосевого" варианта заталкивания в кольцевой буфер не отличается.
meister
Цитата(ReAl @ Sep 1 2008, 15:14) *
По сути, ничем от "безосевого" варианта заталкивания в кольцевой буфер не отличается.


Мне от операционки нужны: многопоточность, блокирующие функции и средства синхронизации - так реализация алгоритмов меньше отличается от однопоточного варианта. Грубо говоря, мне нужно сразу в много кольцевых буферов класть и из многих вынимать.

По поводу "аттача" - поток обслуживания должен быть, в среднем, интенсивнее потока заявок.
ReAl
Цитата(meister @ Sep 1 2008, 15:43) *
Мне от операционки нужны: многопоточность, блокирующие функции и средства синхронизации - так реализация алгоритмов меньше отличается от однопоточного варианта. Грубо говоря, мне нужно сразу в много кольцевых буферов класть и из многих вынимать.
Я не агитирую за отказ от операционки :-)
Я просто говорю, что обработчик прерывания точно так же, как и в безосевом варианте, не может ни положить в полный буфер, ни ждать, пока в нём появится место. Должен отметить ошибку и выбросить то, что некуда девать.

Цитата(meister @ Sep 1 2008, 15:43) *
По поводу "аттача" - поток обслуживания должен быть, в среднем, интенсивнее потока заявок.
Что всё равно не даёт права что-то делать без проверок при обработке заявки.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.