2010-06-07 3 views
0

ma conférence veut que nous construisons un module où nous devons identifier chaque processus de lecture et où le même processus de lecture appelé deux fois sur le même massage écrivain, nous devrions l'insérer dans une file d'attente qui nous réveille quand tous les lecteurs ont lu J'ai atteint cet objectif en utilisant la liste de pid et boolean read/not_read à l'intérieur de chaque noeud mais il a décidé d'être méchant et de nous requérir avec un argument de FILE struct moi? ....comment identifier le processus dans le noyau lire func sans utiliser current-> pid

Répondre

0

Le concept clé ici est que vous ne devriez pas identifier directement les processus - vous devriez identifier struct file s. Un nouveau struct file est créé chaque fois que votre fichier est open() -ed.

En fait, vous n'avez pas besoin d'ajouter des données au struct file du tout - vous pouvez simplement transformer votre liste de PIDs dans une liste de struct file * s, montrant les struct file s qui ont actuellement votre dossier spécial ouvert.

Il serait, cependant, être plus efficace d'avoir le pointeur private_data du point struct file au niveau du noeud dans la liste qui contient un pointeur vers cette struct file (cela vous permettra de trouver ce nœud rapidement lorsque vous travaillez avec elle , plutôt que d'avoir à scanner la liste).

Questions connexes