2017-01-26 1 views
2

Je veux imprimer un numéro de processeur sur lequel le processus en cours ou la fonction est similaire à exécutaient ftrace comme ceci:nombre de CPU d'impression similaire à ftrace

TASK-PID CPU#  TIMESTAMP FUNCTION 
    | |  |   |   | 
<idle>-0  [002] 23636.756054: ttwu_do_activate.constprop.89 <-try_to_wake_up 
<idle>-0  [002] 23636.756054: activate_task <-ttwu_do_activate.constprop.89 
<idle>-0  [002] 23636.756055: enqueue_task <-activate_task 

Comment puis-je obtenir cette valeur? Je suppose que c'est là une fonction de start_kernel fonction. Pouvons-nous imprimer sa valeur? J'utilise le noyau linux-4.1.

Répondre

3

Pour l'impression de l'UC actuelle dans le noyau, le champ cpu de task_struct peut être utilisé. Notez que la configuration du noyau CONFIG_THREAD_INFO_IN_TASK doit être activée. Cela fonctionnera pour le noyau 4.9.

printk("My current cpu is %d\n", current->cpu); 

smp_processor_id() peut également être utilisé si le champ cpu n'est pas disponible.

+0

Je veux imprimer le numéro de CPU très tôt pendant l'initialisation du noyau, j'ai donc essayé d'utiliser 'smp_processor_id()' après la fonction 'boot_cpu_init()' où le processeur est activé.Mais je reçois un symbole poubelle et le noyau se bloque. L'architecture est 'armv7'. J'ai essayé comme 'char str = smp_processor_id() + '0';'. Puis 'printch (str);' J'utilise printch pour activer l'impression précoce. – Ivid

+0

A très tôt serait-il différent de 0? – 0andriy

+1

'' pr_info ("Démarrer Linux sur le processeur physique 0x% lx \ n", (unsigned long) mpidr); '' dans '' smp_setup_processor_id() '' devrait aider sur le bras pour le boot cpu. Voyez-vous ce message? – Jeyaram