Здравствуйте !
Вопрос про реализацию системного вызова в 2.6.21.5 Создаю свой собственный вызов sys_copy - получает дескрипторы входного и выходного файлов. Должен осуществлять копирование между ними в пространстве ядра ... Но возвращает значение < 0. Пытаюсь для копирования использовать sys_read/sys_write (read/write) из fs/read_write.c
#include <linux/stat.h>
#include <linux/types.h>
#include <asm/unistd.h>
#include <linux/stat.h>
#include <linux/fcntl.h>
#include <linux/file.h>
#include <linux/errno.h>
#define BUF_SIZE 10000
ssize_t sys_read(unsigned int fd, char __user * buf, size_t count);
ssize_t sys_write(unsigned int fd, const char __user * buf, size_t count);
int sys_copy (int out_fd, int in_fd, loff_t *offset, size_t count) {
char buffer[BUF_SIZE];
ssize_t number_characters_read; while ((number_characters_read = sys_read (in_fd, buffer, BUF_SIZE))!=0) {
sys_write (out_fd, buffer, number_characters_read);
}
if (number_characters_read == -1) {
return -EFAULT;
}
return 0;
}
Подскажите, пожалуйста, как сделать ...