Здравствуйте, я новичок в программировании на пространстве ядра, и я пришел, чтобы узнать о файловой системе proc./proc файловая система зависает моя система
Я написал модуль, который создает файл ргос при регистрации
И я извлекаю, что в то время как модуль регистрации. Но если я не удаляю этот файл с помощью remove_proc_entry() и не регистрирую мой модуль, тогда система зависает через некоторое время
Почему это так?
Код
#include<linux/init.h>
#include<linux/kernel.h>
#include<linux/proc_fs.h>
#include<linux/module.h>
#include<linux/fs.h>
int myopen(struct inode *, struct file *);
ssize_t myread(struct file *, char __user *, size_t, loff_t *);
int myopen(struct inode *p, struct file *q)
{
printk(KERN_ALERT "I am in myopen\n");
return 0;
}
ssize_t myread(struct file *p, char __user *q, size_t r, loff_t *s)
{
printk(KERN_ALERT "I am in myread\n");
return 0;
}
static const struct file_operations fs={
.open=myopen,
.read=myread
};
int start(void)
{
proc_create("myprocfile", 0, NULL, &fs);
return 0;
}
void stop(void)
{
//remove_proc_entry("myprocfile", NULL);
/*
If I uncomment the above line
then everything works fine
*/
}
module_init(start);
module_exit(stop);
MODULE_LICENSE("GPL");
Большое спасибо за ваше прекрасное объяснение ..... Но я не понимаю после того, как я отменил регистрацию модуля, который выполняет операции с файлами. Я не написал код пространства пользователя для этого ... Тогда кто выполняет операции над свободной памятью? –
Это может быть, например, системный деамон, который периодически проверяет файлы. В любом случае наличие файла, связанного со структурой освобожденных операций, является плохим. – Tsyvarev
Когда я пытаюсь отменить регистрацию модуля, он дает мне сообщение на терминале «убито» ... Я не могу понять, какой процесс здесь убит –