Android Comment ajouter un gouverneur de processeur


Exemple

Le gouverneur du processeur lui-même n'est constitué que d'un fichier C, qui se trouve dans kernel_source / drivers / cpufreq /, par exemple: cpufreq_smartass2.c. Vous êtes responsable de trouver le gouverneur (regardez dans un dépôt de noyau existant pour votre appareil). Mais pour pouvoir appeler et compiler ce fichier avec succès dans votre noyau, vous devrez apporter les modifications suivantes:

  1. Copiez votre fichier gouverneur (cpufreq_govname.c) et naviguez jusqu'à kernel_source / drivers / cpufreq, collez-le maintenant.
  2. et ouvrez Kconfig (c'est l'interface de la disposition du menu de configuration) lorsque vous ajoutez un noyau, vous voulez qu'il apparaisse dans votre configuration. Vous pouvez le faire en ajoutant le choix du gouverneur.
config CPU_FREQ_GOV_GOVNAMEHERE
tristate "'gov_name_lowercase' cpufreq governor"
depends on CPU_FREQ
help
governor' - a custom governor!

par exemple, pour smartassV2.

config CPU_FREQ_GOV_SMARTASS2
 tristate "'smartassV2' cpufreq governor"
 depends on CPU_FREQ
 help
 'smartassV2' - a "smart" optimized governor! 

Outre l'ajout du choix, vous devez également déclarer la possibilité que le gouverneur soit choisi comme gouverneur par défaut.

 config CPU_FREQ_DEFAULT_GOV_GOVNAMEHERE
 bool "gov_name_lowercase"
 select CPU_FREQ_GOV_GOVNAMEHERE
 help
 Use the CPUFreq governor 'govname' as default.

par exemple, pour smartassV2.

config CPU_FREQ_DEFAULT_GOV_SMARTASS2
 bool "smartass2"
 select CPU_FREQ_GOV_SMARTASS2
 help
 Use the CPUFreq governor 'smartassV2' as default.

- Vous ne trouvez pas le bon endroit pour le mettre? Recherchez simplement “CPU_FREQ_GOV_CONSERVATIVE” et placez le code ci-dessous, la même chose compte pour “CPU_FREQ_DEFAULT_GOV_CONSERVATIVE”

Maintenant que Kconfig est terminé, vous pouvez enregistrer et fermer le fichier.

  1. Toujours dans le dossier /drivers/cpufreq , ouvrez Makefile. Dans Makefile, ajoutez la ligne correspondant au gouverneur de votre CPU. par exemple:
obj-$(CONFIG_CPU_FREQ_GOV_SMARTASS2)    += cpufreq_smartass2.o

Notez que vous n'appelez pas le fichier C natif, mais le fichier O! qui est le fichier C compilé. Enregistrez le fichier.

  1. Déplacer vers: kernel_source/includes/linux . Maintenant, ouvrez cpufreq.h Faites défiler jusqu'à ce que vous voyiez quelque chose comme:
#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_ONDEMAND)
 extern struct cpufreq_governor cpufreq_gov_ondemand;
 #define CPUFREQ_DEFAULT_GOVERNOR    (&cpufreq_gov_ondemand)

(d'autres gouverneurs de processeurs y sont également répertoriés)

Ajoutez maintenant votre entrée avec le gouverneur de CPU sélectionné, exemple:

#elif defined(CONFIG_CPU_FREQ_DEFAULT_GOV_SMARTASS2)
 extern struct cpufreq_governor cpufreq_gov_smartass2;
 #define CPUFREQ_DEFAULT_GOVERNOR (&cpufreq_gov_smartass2)

Enregistrez le fichier et fermez-le.

La configuration initiale du gouverneur CPU est maintenant terminée. Lorsque vous avez terminé toutes les étapes avec succès, vous devriez pouvoir choisir votre gouverneur dans le menu ( menuconfig , xconfig , gconfig , nconfig ). Une fois coché dans le menu, il sera inclus dans le noyau.

Commit qui est presque identique aux instructions ci-dessus: Ajouter la validation smartassV2 et lulzactive gouverneur