Processador Inter Interrompido no córtex ARM A9 (Como escrever um manipulador para interrupção gerada por software (ARM) no Linux?)

Eu li que as interrupções geradas pelo software no ARM são usadas como interrupções entre processadores. Eu também posso ver que 5 dessas interrupções já estão em uso. Eu também sei que o ARM fornece 16 interrupções geradas pelo Software.

No meu aplicativo eu estou executando um aplicativo bare metal nos núcleos ARM-cortex e Linux no outro. Eu quero comunicar alguns dados do núcleo executando o aplicativo bare metal para o núcleo que está executando o Linux. Eu pretendo copiar os dados para a memória on chip (que é compartilhada) e eu vou acionar um SGI no Core (linux em execução) para indicar que alguns dados estão disponíveis para serem processados. Agora eu sou capaz de gerar o SGI a partir do núcleo (executando aplicativos bare-metal). Mas para lidar com a interrupção no lado do Linux, não tenho certeza dos números de IRQ do SGI que são gratuitos e também não tenho certeza se posso usar o número de IRQ diretamente (em geral, SGI são de 0 a 15). Alguém tem uma idéia de como escrever um manipulador para SGI no Linux?

Editar: Esta é uma redação do texto acima, porque a questão foi fechada porRazões da SSCE. Os processadores Cortex-A são usados ​​em sistemas multi-CPU. Um braçocontrolador de interrupção genérico (GIC) monitora todas as interrupções globais e despacha-as para uma CPU específica. Para que as CPUs individuais sinalizem umas às outras, uminterrupção gerada por software (SGI) é enviado de um núcleo para o outro; isso usainterrupções privadas periféricas (PPI). Esta questão é,

Como implementar um driver de kernel do Linux que pode receber um SGI como um PPI?

questionAnswers(2)

yourAnswerToTheQuestion