Есть некое AMP - несколько копий операционной системы
выполняются каждая на своем ядре цпу (не x86) поверх
гипервизора. Хочется иметь возможность сренькнуть из одного
гостя другому, алсо хочетса обойтись минимальным кодом и жраньем
ресурсов на стороне гипервизора. Хочетса иметь возможность сренькать
мултикастом (нескольким гостям) и броадкастово. Железо предоставляет команды
msgsnd <core> - генерирует doorbell IRQ на ядре <core>
и msgclr - очищает doorbell на локальном ядре.
Пока приходит в голову нечто похожее на кольцевую очередь указателей
на кольцевые очереди сообщений для каждого ядра. Гипервизор
мог бы слать doorbell ядру(ядрам) назначения и конвертить локальный
doorbell в external interrupt гостя, отчего бы тот разгребал свою очередь.
Есть ли варианты полущ?