Posso impedir que um espaço de usuário do Linux produza código crítico?

Estou trabalhando em um aplicativo de espaço do usuário para um projeto Linux incorporado usando o kernel 2.6.24.3. Meu aplicativo transmite dados entre dois nós de arquivo, criando dois pthreads que dormem até que uma operação de E / S assíncrona seja concluída, no ponto em que ele acorda e executa um manipulador de conclusão.

Os manipuladores de conclusão precisam acompanhar quantas transferências estão pendentes e manter um punhado de listas vinculadas às quais um thread adicionará e o outro removerá.

// sleep here until events arrive or time out expires
for(;;) {
    no_of_events = io_getevents(ctx, 1, num_events, events, &timeout);
    // Process each aio event that has completed or thrown an error
    for (i=0; i<no_of_events; i++) {
        // Get pointer to completion handler
        io_complete = (io_callback_t) events[i].data;
        // Get pointer to data object
        iocb = (struct iocb *) events[i].obj;
        // Call completion handler and pass it the data object
        io_complete(ctx, iocb, events[i].res, events[i].res2);
    }
}

Minha pergunta é essa ...

Existe uma maneira simples de impedir que o encadeamento atualmente ativo ceda enquanto executa o manipulador de conclusão em vez de seguir a rota de bloqueio de mutex / rotação?

Ou na falha em que o Linux pode ser configurado para impedir que ocorra um pthread quando um bloqueio de mutex / rotação é mantido?