Zhaoming Luo, le lun. 21 oct. 2024 20:51:21 +0800, a ecrit:
> On 10/21/24 8:12 PM, Samuel Thibault wrote:
> > I mean that it probably doesn't have to be in kernelland, and rather be
> > a userland translator.
> 
> Do you mean we can implement an userland translator (it is also a rtc device
> driver, something like /hurd/rtc?) without using the device interface (e.g.
> device_open("rtc",...) to open rtc) provided by gnumach? If the answer is yes.

Yes.

> How?

Thanks to the trivfs library. You can use devnode as a simple
trivfs-based translator, drop the device_* parts, and add the ioctl
parts.

>     Userland can implement device_open etc. Actually we would rather make
>     /dev/rtc expose the usual ioctls that applications expect to be able to
>     use, we don't necessarily want to implement the device_* interface.
> 
> How do we expose the usual ioctls?

By implementing the corresponding RPC, whose msgid is given by the
IOC_MSGID macro. For instance for

RTC_RD_TIME.    _IOR('p', 0x09, struct rtc_time)

the group is 'p' and the command is 0x9, so the subsystem would be
140000, and the exact RPC would be 140009. You'd probably want to create
a pioctl.defs file just like the existing hurd/rioctl.defs file, and
thus immediately get all the RPC stubs built to plug the RTC RPC
implementations.

Samuel

Reply via email to