Primeiramente, acho que você deve instalar e usar o kernel linux-rt
. Este kernel é corrigido e permite que quase todo o kernel seja preempted, com a exceção de algumas regiões muito pequenas de código ("raw_spinlock critical regions"). Isso é feito substituindo a maioria dos spinlocks do kernel por "mutexes" que suportam herança de prioridade, bem como movendo todas as interrupções de interrupção e software para encadeamentos do kernel.
Preempção é o ato de temporariamente interromper uma tarefa sendo executada por um sistema de computador, sem requerendo sua cooperação, e com a intenção de retomar a tarefa em mais tarde.
Leia Uma visão geral de preempção em tempo real . Isso permitirá que você entenda como as coisas funcionam, algo que permitirá que você ajuste o kernel para seu aplicativo em particular.
Há também o RTLinuxFree desenvolvido pela Wind River Systems, que também tem uma contraparte comercial se você tiver dinheiro por aí.
Para linux-rt
, recomendo ler o RT Wiki
Talvez seu aplicativo seja compatível com RTAI ?