static ssize_t sysfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos) { struct sysfs_buffer * buffer = file->private_data; ssize_t retval = 0; if (!*ppos) { if ((retval = fill_read_buffer(file,buffer))) return retval; } pr_debug("%s: count = %d, ppos = %lld, buf = %s\n", __FUNCTION__,count,*ppos,buffer->page); return flush_read_buffer(buffer,buf,count,ppos); }
static ssize_t configfs_read_file(struct file *file, char __user *buf, size_t count, loff_t *ppos) { struct configfs_buffer * buffer = file->private_data; ssize_t retval = 0; down(&buffer->sem); if (buffer->needs_read_fill) { if ((retval = fill_read_buffer(file->f_dentry,buffer))) goto out; } pr_debug("%s: count = %zd, ppos = %lld, buf = %s\n", __FUNCTION__, count, *ppos, buffer->page); retval = flush_read_buffer(buffer,buf,count,ppos); out: up(&buffer->sem); return retval; }