Como o sched_setaffinity () funciona?

Estou tentando entender como o linux syscall sched_setaffinity () funciona. Este é um seguimento da minha perguntaaqu.

Eu tenhoeste guia, que explica como usar o syscall e tem um exemplo bastante interessante (funcionando!

ntão, baixei o Linux 2.6.27.19kernel sources.

Fiz um 'grep' para as linhas que contêm esse syscall e obtive 91 resultados. Não é promisso

Finalmente, estou tentando entender como o kernel é capaz de definir o ponteiro de instruçõespara um núcleo específico (ou processador.)

Estou familiarizado com o funcionamento dos programas single-core-single-thread. Pode-se emitir uma instrução 'jmp foo', e isso basicamente define o IP para o endereço de memória do rótulo 'foo'. Mas quando se tem vários núcleos, é preciso dizer "buscar a próxima instrução no endereço de memória foo e definir o ponteiro de instrução paracore number 2 para começar a execução lá. "

nde, no código de montagem, estamos especificando qual núcleo executa essa operaçã

Voltar ao código do kernel: o que é importante aqui? O arquivo 'kernel / sched.c' possui uma função chamada sched_setaffinity (), mas retorna o tipo "long" - que é inconsistente com seupágina manual. Então, o que é importante aqui? Qual destes módulos mostra as instruções de montagem emitidas? Que módulo está lendo o 'task_struct', olhando o membro 'cpus_allowed' e depois traduzindo-o em uma instrução? (Também examinei a fonte glibc - mas acho que ele faz uma chamada ao código do kernel para realizar essa tarefa.)

questionAnswers(4)

yourAnswerToTheQuestion