Esempio n. 1
0
int handle_seek_call(unsigned long ioctl_arg)
{

    struct seek_args_t seek_args;
    int fd;
    int offset;

    if (0 != copy_from_user(&seek_args, (struct seek_args_t *)ioctl_arg,
                            sizeof(struct seek_args_t)))
    {
        printk("Error copying creat args from user\n");
        return -1;
    }

    fd = seek_args.fd;
    offset = seek_args.offset;

#ifdef DEBUG
    printk("Received seek call with args %i, %i\n", fd, offset);
#endif

    //	UNCOMMENT TO PASS TO RAMDISK
    //
    seek_args.ret_val = rd_seek(fd, offset);

    if (0 != copy_to_user((void*) ioctl_arg, (void*) &seek_args, sizeof(struct seek_args_t)))
    {
        printk("Error copying seek return value to user level\n");
        return -1;
    }

    return 1;
}
int main() {

	char a = 'a';
	rd_read(3, &a, 12);

	rd_close(10);

	rd_write(5, &a, 10);
	rd_seek(6, 14);
	rd_readdir(12, &a);
}