函数原型:
ssize_t (*write) (struct file *,char __user *,size_t count,loff_t*)
ssize_t (*read) (struct file *,char __user *,size_t,loff_t*)
描术:向设备发送或接收数据。返回正值表示写入或是读取到的字节数。
参数 file (目前没用过.不知道玩法)
参数 __user: 指向调用此驱动的用户空间buff区,conut是写入的字节个数. loff_t目前也不知道是啥玩意,暂不研究
write在内核代码空间的实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
static ssize_t test_mod_write(struct file *file, const char *buffer, size_t count, loff_t * ppos) { char stats[20]; int ret; if (count == 0) { return count; } ret = copy_from_user(&stats, buffer, count); stats[count] = 0; printk(KERN_ALERT"%.*sn",count-1,stats); //printk(KERN_ALERT"%sn%dn",stats,count); return count; } |