2012-02-08 2 views
0

Я зарегистрировал функцию релиз обратного вызова в 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() вызывается в другом контексте процесса. Это нормально?

ответ

0

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

Смежные вопросы