• Home
  • Raw
  • Download

Lines Matching refs:buffer

74 static int fill_read_buffer(struct dentry * dentry, struct sysfs_buffer * buffer)  in fill_read_buffer()  argument
78 struct sysfs_ops * ops = buffer->ops; in fill_read_buffer()
82 if (!buffer->page) in fill_read_buffer()
83 buffer->page = (char *) get_zeroed_page(GFP_KERNEL); in fill_read_buffer()
84 if (!buffer->page) in fill_read_buffer()
91 buffer->event = atomic_read(&attr_sd->s_attr.open->event); in fill_read_buffer()
92 count = ops->show(kobj, attr_sd->s_attr.attr, buffer->page); in fill_read_buffer()
107 buffer->needs_read_fill = 0; in fill_read_buffer()
108 buffer->count = count; in fill_read_buffer()
137 struct sysfs_buffer * buffer = file->private_data; in sysfs_read_file() local
140 mutex_lock(&buffer->mutex); in sysfs_read_file()
141 if (buffer->needs_read_fill || *ppos == 0) { in sysfs_read_file()
142 retval = fill_read_buffer(file->f_path.dentry,buffer); in sysfs_read_file()
147 __func__, count, *ppos, buffer->page); in sysfs_read_file()
148 retval = simple_read_from_buffer(buf, count, ppos, buffer->page, in sysfs_read_file()
149 buffer->count); in sysfs_read_file()
151 mutex_unlock(&buffer->mutex); in sysfs_read_file()
166 fill_write_buffer(struct sysfs_buffer * buffer, const char __user * buf, size_t count) in fill_write_buffer() argument
170 if (!buffer->page) in fill_write_buffer()
171 buffer->page = (char *)get_zeroed_page(GFP_KERNEL); in fill_write_buffer()
172 if (!buffer->page) in fill_write_buffer()
177 error = copy_from_user(buffer->page,buf,count); in fill_write_buffer()
178 buffer->needs_read_fill = 1; in fill_write_buffer()
181 buffer->page[count] = 0; in fill_write_buffer()
198 flush_write_buffer(struct dentry * dentry, struct sysfs_buffer * buffer, size_t count) in flush_write_buffer() argument
202 struct sysfs_ops * ops = buffer->ops; in flush_write_buffer()
209 rc = ops->store(kobj, attr_sd->s_attr.attr, buffer->page, count); in flush_write_buffer()
237 struct sysfs_buffer * buffer = file->private_data; in sysfs_write_file() local
240 mutex_lock(&buffer->mutex); in sysfs_write_file()
241 len = fill_write_buffer(buffer, buf, count); in sysfs_write_file()
243 len = flush_write_buffer(file->f_path.dentry, buffer, len); in sysfs_write_file()
246 mutex_unlock(&buffer->mutex); in sysfs_write_file()
266 struct sysfs_buffer *buffer) in sysfs_get_open_dirent() argument
281 list_add_tail(&buffer->list, &od->buffers); in sysfs_get_open_dirent()
315 struct sysfs_buffer *buffer) in sysfs_put_open_dirent() argument
321 list_del(&buffer->list); in sysfs_put_open_dirent()
336 struct sysfs_buffer *buffer; in sysfs_open_file() local
380 buffer = kzalloc(sizeof(struct sysfs_buffer), GFP_KERNEL); in sysfs_open_file()
381 if (!buffer) in sysfs_open_file()
384 mutex_init(&buffer->mutex); in sysfs_open_file()
385 buffer->needs_read_fill = 1; in sysfs_open_file()
386 buffer->ops = ops; in sysfs_open_file()
387 file->private_data = buffer; in sysfs_open_file()
390 error = sysfs_get_open_dirent(attr_sd, buffer); in sysfs_open_file()
399 kfree(buffer); in sysfs_open_file()
408 struct sysfs_buffer *buffer = filp->private_data; in sysfs_release() local
410 sysfs_put_open_dirent(sd, buffer); in sysfs_release()
412 if (buffer->page) in sysfs_release()
413 free_page((unsigned long)buffer->page); in sysfs_release()
414 kfree(buffer); in sysfs_release()
434 struct sysfs_buffer * buffer = filp->private_data; in sysfs_poll() local
446 if (buffer->event != atomic_read(&od->event)) in sysfs_poll()
452 buffer->needs_read_fill = 1; in sysfs_poll()