⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 xsb_edr_8led.c

📁 linux的内核实验代码
💻 C
字号:
#include <linux/module.h>#include <linux/config.h>#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <asm/hardware.h>#include <linux/ioport.h>#include <asm/io.h>#include <asm/delay.h>#include <asm/uaccess.h>#define DEVICE_NAME	"emdoor_8led"#define SEG_LED  	0x10500000static char Led_Buff=0x0;unsigned long * Led_Address;static void Updateled(void){	writew(Led_Buff,Led_Address);	return;	}static ssize_t Emdoor_8Led_write(struct file *file, const char *buffer, size_t count, loff_t * ppos){	if(count!=1)	{	printk(KERN_EMERG "the count of input is not one!!");	return 0;	}	copy_from_user(&Led_Buff, buffer, 1);	Updateled();	return 1;}static int Emdoor_8Led_open(struct inode *inode, struct file *filp){	MOD_INC_USE_COUNT;	return 0;}static int Emdoor_8Led_release(struct inode *inode, struct file *filp){	MOD_DEC_USE_COUNT;	return 0;}static struct file_operations Emdoor_fops = {	open:	Emdoor_8Led_open,	write:	Emdoor_8Led_write,	release:	Emdoor_8Led_release,	owner: THIS_MODULE,};static int __init Emdoor_8Led_init(void){	int ret;	Led_Address=ioremap(SEG_LED, 4);	ret = register_chrdev(60, DEVICE_NAME, &Emdoor_fops);	if (ret < 0) {		printk(DEVICE_NAME " can't get major number\n");		return ret;	}	//printk(DEVICE_NAME " initialized\n");	return 0;}static void __exit Emdoor_8Led_exit(void){		iounmap(Led_Address);	unregister_chrdev(60, DEVICE_NAME);}module_init(Emdoor_8Led_init);module_exit(Emdoor_8Led_exit);

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -