Я извиняюсь, за отсутствие в собственно созданной теме. Тема была перенесена модератором и я не сразу сообразил что произошло и куда перенеслось.
Теперь относитьно вопроса. Я сейчас работаю с LPC2366 поэтому этот вопрос касался именно его, понятно, что этого в самом сообщении не видно, поэтому так же извиняюсь.
Не думал, что мой вопрос вызовет такой резонанс. Действительно проблема состояла в том, чтобы обезопасить код работающий в основном цикле, от возможных изменений, производимых в обработчике сообщений. Так как все это время, я думал что эта тема была удалена, я постарался решить вопрос теми средствами о которых знал. Вопрос с запретом прерываний решил на уровне контроллера прерывания с помощью модификаций регистров VICIntEnable и VICIntEnClear, вроде бы работает.
Что касается самой очереди, то тут не так все просто. Возможно ее и очередью то трудно назвать, просто это наиболее близкое по смыслу название, которое я смог придумать. Суть проще рассказать на примере.
Сейчас "очередь" используется при работе с CAN. ID CAN побитово разбит так, что в нем уживаются ID кому, ID от кого и индекс фрагмента сообщения (для сообщений с длиной более 8-ми байт). Передающее устройство разбивает большое сообщение на фрагменты по 8-м байт и передает. Приемное устройство принимает и ориентируясь на IDs и индексы собирает сообщение. Так как на шине могут быть несколько передатчиков, то для каждого из них создается свой минибуферчик в общем большом массиве, выделенном для приема сообщений по CAN. После окончания приема по прерываниям, основной цикл забирает сообщение, которое необязательно может находиться в начале "очереди", при этом весь остальной массив перестраивается. Так вот чтобы индексация не нарушалась и требовалось запретить прерывание на время пока будет массив перестраиваться.