LINUX.ORG.RU

Помогите с модулем ядра, пожалуйста

 , ,


0

2

Здравствуйте, форумчане!

Разбираюсь с написанием LKM.

Все ничего вроде. Но дана мне задачка, в ней среди прочего значится:

  • Внутри модуля N буферов для чтения/записи данных из пространства пользователя, каждый буфер размером M байт.
  • При выполнении open (/dev/chrdev) из пользовательского процесса последнему назначается буфер (один из N, для последующей записи в него) с наименьшим свободным номером. В случае, если свободных буферов нет — выдается соотв код ошибки. Буфер при этом переходит в состоянии «занят». При выполнении close(/dev/chrdev) буфер становится свободным для использования в других процессах.

Соответственно вопрос:

  • Как лучше заявить эти буферы и как назначить буферам номера, искать среди них наименьший?

Заранее спасибо!



Последнее исправление: Deleted (всего исправлений: 2)

Как лучше заявить эти буферы и как назначить буферам номера, искать среди них наименьший?

Любым алгоритмом, какой придумаешь. К собственно ядру это отношения не имеет.

tailgunner ★★★★★
()

Массив из буфферов не пойдёт?

struct buf_s
{
uint8 data[BUF_LEN];
uint8 free;
} buf[BUF_COUNT];

...
struct buf_s *findfreebuf()
{
for(i=0;i<BUF_COUNT;i++
if(buf[i].free)
return &buf[i];
return NULL; // если вернуло NULL выдать в ошибку что ресурсов не хватает в юзерспейс
}

mittorn ★★★★★
()
Последнее исправление: mittorn (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.