Поток локальных данных в модуле ядра Linux - PullRequest
5 голосов
/ 13 сентября 2011

Можно ли создавать локальные данные потоков в модуле ядра Linux?

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

1 Ответ

4 голосов
/ 13 сентября 2011

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

Просто выделите и назначьте указатель на выбранную вами структуру при операции с открытым файлом.

Это не совсем поток или процесс локальный, но в большинстве случаев сопоставление одного дескриптора файла с вашим процессом - правда, и это может быть достаточно для вас.

...