59 lines
1.2 KiB
C
Executable File
59 lines
1.2 KiB
C
Executable File
// SPDX-License-Identifier: GPL-2.0
|
|
/*
|
|
* Copyright (c) 2024 Samsung Electronics Co., Ltd
|
|
* http://www.samsung.com
|
|
*
|
|
*/
|
|
#include <linux/errno.h>
|
|
|
|
#include "kzt_main.h"
|
|
#include "kzt_common.h"
|
|
|
|
static long kzt_ioctl_get_version(struct file *filp, void __user *uarg)
|
|
{
|
|
struct kzt_get_version_arg arg;
|
|
|
|
if (copy_from_user(&arg, uarg, sizeof(arg)))
|
|
return -EFAULT;
|
|
|
|
arg.version = KZT_KERNEL_VERSION;
|
|
|
|
if (copy_to_user(uarg, &arg, sizeof(arg)))
|
|
return -EFAULT;
|
|
|
|
return 0;
|
|
}
|
|
|
|
static long kzt_ioctl_get_offsets(struct file *filp, void __user *uarg)
|
|
{
|
|
struct kzt_get_offsets_arg arg;
|
|
int err;
|
|
|
|
if (copy_from_user(&arg, uarg, sizeof(arg)))
|
|
return -EFAULT;
|
|
|
|
err = kzt_offset_get_offsets(&arg);
|
|
|
|
if (!err && copy_to_user(uarg, &arg, sizeof(arg)))
|
|
err = -EFAULT;
|
|
|
|
return err;
|
|
}
|
|
|
|
static long __kzt_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|
{
|
|
switch (cmd) {
|
|
case KZT_IOCTL_GET_VERSION:
|
|
return kzt_ioctl_get_version(filp, (void __user *)arg);
|
|
case KZT_IOCTL_GET_OFFSETS:
|
|
return kzt_ioctl_get_offsets(filp, (void __user *)arg);
|
|
default:
|
|
return -ENOTTY;
|
|
}
|
|
}
|
|
|
|
long kzt_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
|
|
{
|
|
return __kzt_ioctl(filp, cmd, arg);
|
|
}
|