static ssize_t env_proc_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) { if(!env_valid){ char p[32]; char *page = (char *)p; int err = 0; ssize_t len = 0; printk("no env vaild\n"); page += sprintf(page, "\nno env vaild\n"); len = page - &p[0]; if(*ppos >= len){ return 0; } err = copy_to_user(buf,(char *)p,len); *ppos += len; if(err) return err; return len; }else{ int err = 0; int env_valid_length = get_env_valid_length(); if(*ppos >= env_valid_length) return 0; if((size+*ppos) > env_valid_length) size = env_valid_length - *ppos; err = copy_to_user(buf,g_env.env_data + *ppos,size); if(err) return err; *ppos += size; return size; } }
static ssize_t env_proc_read(struct file *file, char __user *buf, size_t size, loff_t *ppos) { char p[32]; char *page = (char *)p; int err = 0; ssize_t len = 0; int env_valid_length = 0; env_init(); if (!env_valid) { pr_debug("[%s]read no env valid\n", MODULE_NAME); page += sprintf(page, "\nno env valid\n"); len = page - &p[0]; if (*ppos >= len) { return 0; } err = copy_to_user(buf,(char *)p,len); *ppos += len; if (err) { return err; } return len; } else { env_valid_length = get_env_valid_length(); if (*ppos >= env_valid_length) { return 0; } if ((size + *ppos) > env_valid_length) { size = env_valid_length - *ppos; } err = copy_to_user(buf, g_env.env_data + *ppos, size); if (err) { return err; } *ppos += size; return size; } }