저는 리눅스를 처음 사용하고있어서 사용자가 장치 파일을 읽을 수있을뿐만 아니라 읽을 수있는 모듈을 만들었습니다. 다음 코드는 읽기가 제대로 작동하지만 쓰기 기능이 아닙니다.내 코드가 장치 파일에 읽고 쓰는 데 문제가 있습니까?
MODULE_LICENSE("DUAL BSD/GPL");
char message[80];
char *msg_ptr;
int dev_major = 0;
int dev_minor = 0;
struct cdev *cdev;
ssize_t dev_read(struct file *filp,char __user *buf,size_t count,loff_t *offset)
{
int i;
i=copy_to_user(buf,msg_ptr,count);
printk(KERN_ALERT"buff:%s",buf);
return 0;
}
ssize_t dev_write(struct file *filp,const char __user *buf,size_t count,loff_t *offset)
{
int j;
msg_ptr = kmalloc(sizeof(*buf),GFP_KERNEL);
copy_from_user(msg_ptr,buf,sizeof(*buf));
//printk(KERN_ALERT"msg_ptr:%s",msg_ptr);
return 0;
}
나는 문자 노드를 확인한 다음 하이>는/dev/my_dev 다음은 하이 인쇄 만/메시지/로그/var에에서 볼 수 있듯이 infintely 기록 에코 사용합니다.
포인터가 가리키는 객체의 크기입니다. 따라서 최악의 경우 : sizeof (* buf)는 1입니다. – ouah
copy_from_user (msg_ptr, buf, count); 나는 그것을 사용했지만 문제는 여전히 거기에있다 .......... 더 이상의 제안. – karan421