#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/miscdevice.h>
#include <linux/mutex.h>
#include <linux/wait.h>
#include <net/nfc/nci_core.h>
#define IOCTL_GET_NCIDEV_IDX …
#define VIRTUAL_NFC_PROTOCOLS …
struct virtual_nci_dev { … };
static int virtual_nci_open(struct nci_dev *ndev)
{ … }
static int virtual_nci_close(struct nci_dev *ndev)
{ … }
static int virtual_nci_send(struct nci_dev *ndev, struct sk_buff *skb)
{ … }
static const struct nci_ops virtual_nci_ops = …;
static ssize_t virtual_ncidev_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{ … }
static ssize_t virtual_ncidev_write(struct file *file,
const char __user *buf,
size_t count, loff_t *ppos)
{ … }
static int virtual_ncidev_open(struct inode *inode, struct file *file)
{ … }
static int virtual_ncidev_close(struct inode *inode, struct file *file)
{ … }
static long virtual_ncidev_ioctl(struct file *file, unsigned int cmd,
unsigned long arg)
{ … }
static const struct file_operations virtual_ncidev_fops = …;
static struct miscdevice miscdev = …;
module_misc_device(…);
MODULE_LICENSE(…) …;
MODULE_DESCRIPTION(…) …;
MODULE_AUTHOR(…) …;