📄 uart.c
字号:
#ifndef __KERNEL__
#define __KERNEL__
#endif
#ifndef MODULE
#define MODULE
#endif
#include <linux/config.h>
#include <linux/module.h>
#include <linux/errno.h>
#ifdef CONFIG_SMP
#define __SMP__
#endif
MODULE_LICENSE("GPL");
#include <asm/hardware.h>
#include <asm/irq.h>
#include <linux/delay.h>
#include <asm/uaccess.h>
#include <linux/fs.h>
#include <linux/kernel.h>
#include <linux/sched.h>
#include <linux/types.h>
//后来加的头文件
/*
#include <linux/init.h>
#include <linux/slab.h>
#include <linux/console.h>
#include <linux/serial_core.h>
#include <asm/arch/cpu_s3c2410.h>
#include <asm-arm/arch-s3c2410/S3C2410.h>
*/
#define DEBUG(str,args...)printk ("device_test:"str,##args)
int test_major = 0;
static void s3c2410uart_rx_interrupt(int irq, void *dev_id,
struct pt_regs *regs) ;
static int open_uart(struct inode *inode,struct file *file )
{
}
static int read_uart(struct file * pfile, char * data, size_t ncount , loff_t * nszie)
{
}
static int write_uart(struct file *pfile,const char *data,size_t ncount,loff_t *nsize)
{
}
static int release_uart(struct inode *inode, struct file *file)
{
}
static struct file_operations test_fops ={
owner: THIS_MODULE,
open: open_uart,
read: read_uart,
write: write_uart,
release: release_uart,
};
int cleanup_module(void)
{
unregister_chrdev(test_major,"uart");
return 0;
}
static void s3c2410uart_rx_interrupt(int irq, void *dev_id,
struct pt_regs *regs)
{
}
int init_module(void)
{
int result;
DEBUG("init module\n");
result = register_chrdev(0,"uart",&test_fops);
if(result<0)
{
DEBUG("error!");
return result;
}
if(test_major == 0)
{
test_major = result;
}
return 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -