J'essaie d'implémenter un nouveau mécanisme de planification pour Linux 2.4.18 dans le cadre d'une affectation matérielle. J'ai le problème suivant: Dans le nouveau mécanisme, j'ai besoin de changer l'époque lorsque la file d'attente active n'est pas vide, pour ce l'actif. Comment puis-je parcourir tout le processus dans la file d'attente active pour les transférer à l'expiré?Mécanisme de planification de processus sous Linux
J'ai essayé de passer en revue toutes les 140 bitmaps qui ont la valeur 1 et dans chacun je l'utilisateur for_each_task et retiré de l'actif et inséré à l'expiré.
Mais pour une raison quelconque, lorsque je passe au nouveau mécanisme (à l'aide d'un appel système), le système se réinitialise lui-même.
J'ai pensé que c'est peut-être trop difficile pour le système de passer en revue autant de processus pendant la fonction de planification?
Des idées?
Voici le code que j'ai écrit dans la fonction horaire
for(int i=0;i<140;i++)
{
if(this_rq()->active->bitmap[i])
{
list_t* iterator;
list_t* queue=this_rq()->active->queue;
list_for_each(iterator, queue + i)
{
task_t* p = list_entry(iterator,task_t,run_list);
dequeue_task(p,this_rq()->active);
enqueue_task(p,this_rq()->expired);
}
}
}
Merci