|
本帖最后由 workhard123 于 2011-12-26 22:36 编辑
版主 你举得例子我懂 恩 但是联系我问的问题 我还是不能理解 基础比较差 见谅
贴上我的代码
实际上是写入了128个数据
但是在用户程序中write函数的返回值是6,不是实际写入的128
希望版主和各位帮忙分析下
谢谢
- int main(int argc, char **argv)
- {
- int fd = -1;
- int i=0;
- int count=0;
- unsigned char data_buf[128]={0};
- for(i=0;i<128;i++)
- data_buf[i]=i+1;
- fd = open("/dev/leds", O_RDWR);
- if (fd < 0) {
- printf("Can't open /dev/leds\n");
- return -1;
- }
- count=write(fd,data_buf,128);
- close(fd);
- return 0;
- }
复制代码 驱动代码- static int led_write(struct file *file,const char __user *buf,size_t count,loff_t *f_ops)
- {
- int i=0,intervalue=0;
- if(count>128)
- count=128;
- intervalue=copy_from_user(kbuf,buf,count);
- }
复制代码 |
|