Как сохранить связанный список на уровне ядра? - PullRequest
2 голосов
/ 25 декабря 2010

Ситуация такова: я буду реализовывать наборы новых системных вызовов.Каждый из них должен получить доступ (прочитать или написать) связанный список.Таким образом, это означает, что у меня будет несколько программ на языке C.

Итак, как мне сохранить связанный список в памяти и позволить нескольким программам получить к нему доступ?Или это неправильно .... Я должен сохранить это как файл?(но я не думаю, что это хорошая идея) ..

Ответы [ 3 ]

4 голосов
/ 25 декабря 2010

Я не разработчик ядра, но вот мое предположение о том, как это сделать ...

  • sys / queue.h дает вам макросы для работы с очередями и связанными списками.
  • Предоставьте интерфейс на основе непрозрачных дескрипторов, чтобы клиентские программы не могли изменить структуру данных за вашей спиной.
  • Поскольку у вас несколько одновременных клиентов, подумайте о защите реализации интерфейса с помощью блокировок.

НТН

1 голос
/ 25 декабря 2010

@ Кролик указывает вам в правильном направлении. Я добавлю об обмене списком между системными вызовами.

Ваш код будет связан с самим ядром или как загружаемый модуль. В любом случае ваши данные, вероятно, нужно будет динамически размещать с помощью 'kmalloc'. Эти данные будут доступны всему ядру, которое, в отличие от пользовательских программ, остается в машинной памяти. Рассматривайте его как обычный указатель / данные, разделяемые между (ядром) потоками.

0 голосов
/ 10 января 2011

В зависимости от того, что вы хотите сделать, вы можете проверить это .

...