как определить процесс в ядре read func без использования current-> pid - PullRequest
0 голосов
/ 08 июня 2010

моя лекция хочет, чтобы мы построили модуль, в котором нам нужно идентифицировать каждый процесс чтения, и где один и тот же процесс чтения вызывается дважды при одном и том же массаже писателя, мы должны вставить его в очередь, которую мы просыпаемся, когда все читатели прочитали, я достиг этогоцель с использованием списка pid и логического read / not_read внутри каждого узла, но он решил проявить неприязнь и потребовать от нас некоторых аргументов из структуры FILE, не могли бы вы мне помочь? ....

1 Ответ

0 голосов
/ 08 июня 2010

Ключевой концепцией здесь является то, что вы не должны напрямую идентифицировать процессы - вы должны идентифицировать конкретные struct file s. Новый struct file создается каждый раз, когда ваш файл open() -ed.

На самом деле вам вообще не нужно добавлять какие-либо данные в struct file - вы можете просто превратить свой список PID в список struct file * с, указывая на struct file, которые в настоящее время имеют ваши файл открыт.

Однако, было бы более эффективно иметь указатель private_data точки struct file на узле в вашем списке, который содержит указатель на этот struct file (это позволит вам быстро найти этот узел, когда вы работаете с ним, а не сканируете список).

...