#define LOGDEBUG(fmt, ...) \
printk(KERN_DEBUG "%s: " fmt, DRIVER_NAME, ##__VA_ARGS__)
+#define LOGINFO(fmt, ...) \
+ printk(KERN_INFO "%s: " fmt, DRIVER_NAME, ##__VA_ARGS__)
+
#define LOGERR(fmt, ...) \
printk(KERN_ERR "%s: " fmt, DRIVER_NAME, ##__VA_ARGS__)
/* device protocol */
#define __MAX_BUF_SIZE 1024
+enum ioctl_cmd {
+ IOCTL_CMD_BOOT_DONE,
+};
+
enum
{
route_qemu = 0,
return ret;
}
+static long evdi_ioctl(struct file *file, unsigned int cmd, unsigned long arg)
+{
+ switch (cmd) {
+ case IOCTL_CMD_BOOT_DONE:
+ LOGINFO("BOOTING DONE.\n");
+ break;
+ default:
+ LOGERR("not available command.\n");
+ return -EIO;
+ }
+ return 0;
+}
+
static struct file_operations evdi_fops = {
.owner = THIS_MODULE,
.open = evdi_open,
.read = evdi_read,
.write = evdi_write,
.poll = evdi_poll,
+ .unlocked_ioctl = evdi_ioctl,
};