функция release вызывается в другом контексте процесса - PullRequest
0 голосов
/ 08 февраля 2012

Я зарегистрировал функцию обратного вызова освобождения в file_operation в моем драйвере устройства, например:

struct file_operations driver_fops =
{
    .open       = drv_open,
    .release    = drv_release,
    .unlocked_ioctl = drv_unlocked_ioctl,
    .mmap       = drv_mmap,
};

Функция освобождения будет вызвана, когда процесс (откройте файл устройства) будет убит.Но странно то, что когда я пытаюсь получить pid текущего процесса в drv_release, иногда pid не принадлежит процессу, открывающему файл.Это означает, что функция release () вызывается в другом контексте процесса.Это нормально?

1 Ответ

0 голосов
/ 09 февраля 2012

Может быть, это из-за fork (). Если родительский процесс открыл ваше устройство, затем разветвился и умер, а затем дочерний закрытый дескриптор - закрыть будет другой процесс.

...