реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Маленький вопросик по scmRTOS и OS::channel::push
meister
сообщение Sep 1 2008, 09:23
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Операционка scmRTOS 3.05 LPC2xxx. Можно OS::channel::push вызывать из irq (SignalISR у флага есть, а push_isr нет)? Если нет, то как принято в ней делать "канал" "прерывание-процесс"?
Go to the top of the page
 
+Quote Post
Сергей Борщ
сообщение Sep 1 2008, 10:17
Сообщение #2


Гуру
******

Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095



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


--------------------
На любой вопрос даю любой ответ
"Write code that is guaranteed to work, not code that doesn’t seem to break" (C++ FAQ)
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 1 2008, 11:14
Сообщение #3


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



Ну а если проверка доступного места в канале скажет "облом", то тогда "монитор выбрасывает байт" (см. аттач) и поднять какой-то флаг ошибки.
По сути, ничем от "безосевого" варианта заталкивания в кольцевой буфер не отличается.
Прикрепленные файлы
Прикрепленный файл  monitor.txt ( 1.7 килобайт ) Кол-во скачиваний: 100
 


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post
meister
сообщение Sep 1 2008, 12:43
Сообщение #4


Местный
***

Группа: Участник
Сообщений: 219
Регистрация: 20-11-07
Пользователь №: 32 484



Цитата(ReAl @ Sep 1 2008, 15:14) *
По сути, ничем от "безосевого" варианта заталкивания в кольцевой буфер не отличается.


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

По поводу "аттача" - поток обслуживания должен быть, в среднем, интенсивнее потока заявок.

Сообщение отредактировал meister - Sep 1 2008, 12:43
Go to the top of the page
 
+Quote Post
ReAl
сообщение Sep 1 2008, 15:01
Сообщение #5


Нечётный пользователь.
******

Группа: Свой
Сообщений: 2 033
Регистрация: 26-05-05
Из: Бровари, Україна
Пользователь №: 5 417



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

Цитата(meister @ Sep 1 2008, 15:43) *
По поводу "аттача" - поток обслуживания должен быть, в среднем, интенсивнее потока заявок.
Что всё равно не даёт права что-то делать без проверок при обработке заявки.


--------------------
Ну, я пошёл… Если что – звоните…
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 20th July 2025 - 03:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01471 секунд с 7
ELECTRONIX ©2004-2016