Question

Je voudrais allouer dynamiquement la mémoire de la fonction machine_init dans mon noyau linux bras. Cependant, mes tests indiquent que l'appel Kalloc se traduit parfois par un échec complet du système pour démarrer.

Mes outils de débogage sont très limités, donc je ne peux pas donner beaucoup plus d'informations sur l'échec.

Autrement dit, est-il légal d'appeler kalloc d'une fonction de machine_init sous Linux ARM, et, sinon, est-il une alternative?

Je comprends que dans la plupart des cas, il est aberrant à l'allocation de mémoire tôt dans le processus de démarrage (ce genre de travail doit être effectué par les pilotes de périphériques); Cependant, je suis convaincu que mon projet particulier l'exige.

Était-ce utile?

La solution

Je ne vois pas où machine_init est appelé à partir, mais je ne peux pas empêcher de penser que vous essayez de faire la mauvaise chose.

Les pilotes de périphériques et d'autres sous-systèmes ont leur propre temps init, en essayant de faire des choses très tôt est généralement une erreur (parce que quelque chose nécessaire est pas encore commencé). Vous pouvez certainement appeler kmalloc lors de l'initialisation d'un pilote de périphérique (au moins, la plupart. Peut-être que le pilote de la console est différente).

Dans tous les cas, le fait que votre ARM suggère que c'est un système embarqué, vous avez peu de chances d'avoir à traiter avec beaucoup de matériel différent. Tu ne peux pas simplement affecter statiquement un tableau avec autant d'éléments que pourrait éventuellement être nécessaire (une erreur si elle est dépassée)?

Autres conseils

kmalloc est une API du noyau sur dalle / plouc / flammé cadre de travail de mémoire. Une fois que l'un de ces cadre (celui qui utilisé par le noyau) est initialisé kmalloc fonctionne très bien. Assurez-vous que votre appel après la dalle / plouc / initialisation flammé

hourras

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top