> I happen to notice the new binary file support in sysfs and had to take
> for a spin. If I understand this correct my write file will need to
> allocate the buffer->data, but then I have no way of freeing that memory
> since I don't get a release callback.
Hm, good point. Perhaps a better way to do it would be:
open()
allocate buffer
fill buffer
read()
copy_to_user()
write()
copy_from_user()
sync with driver
close()
free buffer
Once the buffer is filled, then the user could read()/seek() on it to
their hearts' content, without having to call the driver back.
On a write, the user would end up modifying the desired bits of the
buffer, then sysfs would call the ->write() method, passing the entire
buffer.
All this assumes that the buffer will not change while the file is open,
but for these purposes, I think that's ok to make.
> Here is a patch that:
> * makes sysfs cleanup the buffer->data allocated by the attribute write
> functions
> * fixes a bug that causes the kernel to oops when somebody attempts to
> write to the file.
Thanks.
> BTW, would you be totally opposed to a patch that added open, release,
> and ioctl to the list of functions supported by sysfs binary files?
->ioctl() - No.
Why ->open() and ->release()? If we free the buffer in our release(), then
why do you need a notification?
> Another question... How would a driver know that the various write and
> read calls are coming from the same open, or would there be a way for a
> driver to make it so that only one thing can open the sysfs file at a
> time?
I don't think you could know that a ->read() came from the same process as
the previous ->read(). Why would you need to know that?
Thanks,
-pat
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/