Xiang Xiao kirjoitti torstai 22. joulukuuta 2022:
> On Thu, Dec 22, 2022 at 2:28 PM Jukka Laitinen <jukka.laiti...@iki.fi>
> wrote:
> 
> > Hi,
> >
> > We've implemented and been using "posix shm" support for nuttx ( not
> > up-streamed to mainline nuttx so far - I am open to discussion whether
> > there is interest for it ). For this, we've naturally utilized the
> > interfaces mentioned in the subject.
> >
> >
> Yes, it's a very useful feature.
> 
> 
> > Currently those operations are implemented as FIOC_ ioctls:s to the
> > drivers - such as our shmfs and upstream video, leds and and shmfs.
> >
> > While this works fine, I can't help thinking that implementing this
> > functionality as IOCTLs is wrong, and those should be specified in
> > "struct file_operations" instead.
> >
> >
> You mean FIOC_MMAP? We also find that the rigid design of FIOC_MMAP makes
> it hard to implement some advanced features inside the driver since it
> doesn't map to mmap/mumap very well.
> 
> 
> > This is my thinking around the subject:
> >
> > - IOCTLs are ment for communication from userspace application to the
> > drivers. It doesn't make sense for an application to perform a direct
> > IOCTL (such as FIOC_MMAP, FIOC_MUNMAP or FIOC_TRUNCATE). Application
> > should always use posix mmap, munmap and truncate calls instead.
> >
> > - For mmap, munmap and truncate there is a syscall lookup already in
> > place in nuttx - there is no ioctl needed for the userspace-kernel
> > communication
> >
> > - Especially for "unmap", the ioctl doesn't make sense, since file_ioctl
> > is supposed to work on a file pointer. But unmap cannot be done on a
> > file. Even when unmapping a previously mapped "file", unmap can only
> > work on inode, since there may not be an open file, or even a linked
> > inode present. It must be possible to do "munmap" for a mapped file,
> > even if the actual file is closed and/or deleted after mapping. (and
> > yes, I realize that I earlier added the FIOC_MUNMAP myself - since the
> > others were implemented as ioctls, and we really need the unmap).
> >
> > So what do you think, is my reasoning above right, and should the above
> > operations moved to file_struct instead of the being IOCTLs?
> >
> >
> It's fine to define map/unmap related operation directly in file_operations
> since other OS make the similar decision:
> https://github.com/torvalds/linux/blob/master/include/linux/fs.h#L2102
> https://github.com/torvalds/linux/blob/master/include/linux/mm.h#L540-L612
> 
> But it's important to convert the current fs/driver to utilize the new
> interface to demonstrate that the design is flexible enough to support all
> possible usage.
> 
>

Thanks for your input! I'll provide a PR proposal early next year.

- Jukka
 
> 
> > Br,
> >
> > Jukka
> >
> >
> >
> >
> >
> >
>

Reply via email to