字符设备驱动
任务
编写利用字符设备实现对字符串加密解密的程序。
加密:将大小写字母循环加4
解密:将大小写字母循环减4
例如:"China!“加密成"Glmre!”
驱动代码
//这是驱动代码,实现一个主设备号,两个次设备。一个次设备号加密,一个次设备号解密。
//相应的测试程序是 test1.c
#include<linux/module.h>
#include<linux/types.h>
#include<linux/kdev_t.h>
#include<linux/fs.h>
#include<linux/cdev.h>
#include<asm/uaccess.h>
#define OFFSET 4
#define Major 200
#define SIZE 256
MODULE_LICENSE("GPL");
dev_t mydev;//存放申请的主次设备号
struct cdev mycdev[2]; //用于描述设备信息的结构体
char str[SIZE]={
0}; //用于存放从用户态传送到内存态的数据
ssize_t my_write1(struct file* pfile,const char __user * buff, size_t num, loff_t *f_p)
{
int n=0;
printk(KERN_INFO"Write1 now\n");
if(num>SIZE) //若是num大小超出存储的数组大小
return -ENOMEM;
if(copy_from_user(str,buff,num)) //若是还有从用户态未读完的数据
return -EFAULT;
// copy_from_user(str,buff,num);
#if 1
while(str[n] != 0) //字符加密,即字母往后循环移动 OFFSET 位数
{
if( ('a'<=str[n]&&str[n]<='z') || ('A'<=str[n]&&str[n]<='Z') )
{
if( ('a'<=str[n]&&str[n]<=('z'-OFFSET)) || ('A'<=str[n]&&str[n]<=('Z'-OFFSET)) )
str[n] +


802

被折叠的 条评论
为什么被折叠?



