Спасибо всем!
Порылся в инете, почитал доки, наткнулся на интересный код, немного доработав под себя, получил вот что:
Код тестового модуля, который при загрузке пишет что-то в файл "/tmp/file.f". Сейчас сижу тестирую, вроде работает...
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/proc_fs.h>
#include <linux/sched.h>
#include <linux/string.h>
#include <linux/signal.h>
//#include <linux/signalfd.h>
#include <asm/unistd.h>
#include <asm/siginfo.h>
#include <asm/uaccess.h>
#include <linux/fs.h>
#include <linux/syscalls.h>
#include <linux/init.h>
#include <linux/file.h>
#include <linux/mm.h>
#include <linux/slab.h>
#define PROCFS_MAX_SIZE 1024
#define RIGHTS S_IRUSR | S_IWUSR | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH
MODULE_LICENSE("GPL");
static int __open__(void)
{
int length_read, length_write, length_llseek;
char buffer[255];
struct file * f = NULL;
struct inode *inode;
mm_segment_t orig_fs;
f = filp_open("/tmp/file.f",O_CREAT | O_RDWR, RIGHTS);
if (!f || !f->f_op || !f->f_op->read || !f->f_op->write || !f->f_op->llseek) {
printk(KERN_INFO "File (read || write || llseek) object is a null pointer!\n");
return -1;
}
strcpy(buffer,"YYYY\n");
orig_fs = get_fs();
set_fs(KERNEL_DS);
inode = f->f_dentry->d_inode;
printk(KERN_INFO "File size - %u\n", (unsigned int)inode->i_size);
//length_llseek = f->f_op->llseek(f, f->f_pos, (int)inode->i_size);
//printk(KERN_INFO "length_llseek=%d\n", length_llseek);
f->f_pos = f->f_pos + inode->i_size;
length_write = f->f_op->write(f, buffer, strlen(buffer), &f->f_pos);
fput(f);
return 0;
}
//=====================================================================================================
static int file_mod_init(void)
{
printk(KERN_INFO "file_mod init:\n");
__open__();
return 0;
}
//=====================================================================================================
static void file_mod_exit(void)
{
printk(KERN_ALERT "file_mod exit\n");
}
//=====================================================================================================
module_init(file_mod_init);
module_exit(file_mod_exit);
Если кто найдет какие-нибудь ошибки, или недочеты, буду очень благодарен