目录
驱动代码:pdrv.c
#include <linux/init.h>
#include <linux/module.h>
#include <linux/platform_device.h>
#include <linux/mod_devicetable.h>
#include <linux/of.h>
#include <linux/uaccess.h>
#include <linux/gpio.h>
#include <linux/of_gpio.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/of_irq.h>
#include <linux/device.h>
#include "myled.h"
#include <linux/io.h>
#include <linux/ioctl.h>
#include <linux/poison.h>
#include <linux/slab.h>
#include <linux/cdev.h>
struct resource *res;
int irqno;
struct gpio_desc *desc;
struct gpio_desc *desc1;
wait_queue_head_t head;
unsigned int condition;
unsigned char number;
struct cdev *cdev;
struct class* cls;
struct device* dev;
dev_t dev1;
unsigned int major;
unsigned int minor;
//操作方法结构体
ssize_t mycdev_read(struct file *file, char __user *ubuf, size_t size, loff_t *loff)
{
int ret;
if(file->f_flags&O_NONBLOCK)
{
return -EINVAL;
}else
{
ret=wait_event_interruptible(head,condition);
if(ret)
{
printk("接收阻塞,休眠\n");
return ret;
}
}
if(size>sizeof(char))
size=sizeof(char);
ret=copy_to_user(ubuf,&number,size);
if(ret)
{
pri