[Haifux] Telling the kernel business is closed (my weekly riddle)
shachar at shemesh.biz
Mon Jun 27 12:00:26 MSD 2011
On 27/06/11 00:29, Eli Billauer wrote:
> The brute-force way to do this is to check a device-global flag every
> invocation of read(), write(), and other relevant methods. Maybe also
> before returning a successful value. If the flag is set ( = problem
> detected) return some -EDROPDEAD, so that application software reacts,
> and maybe someone will go to /var/log/messages to get a better idea of
> what happened. (I think I'll settle for -ENODEV)
Nobody expects ENODEV on an already opened device. I'd go for EIO, myself.
> So here comes my question: Is there a convention for how a device
> driver can tell the kernel that certain devices (as in /dev/something)
> have turned unusable, in particular when some of them are already
> open? I guess this is related to hotpluggable devices, but in the
> latter case I suppose it's the kernel informing the device driver
> about the event, and not vice versa.
I don't think you need to do anything beyond that, unless the situation
is recoverable without a reboot (say - by sending a reset to the chip).
If that's the case, I'd reset the chip, return EIO to any connection
opened before the reset, and treat new connection like I always would.
Of course, if there is a way for you to make the old connections still
function, even better.
Lingnu Open Source Consulting Ltd.
More information about the Haifux