Skip site navigation (1)Skip section navigation (2)
Date:      Mon, 27 May 2019 08:44:43 +0300
From:      Andriy Gapon <avg@FreeBSD.org>
To:        freebsd-arch@FreeBSD.ORG
Subject:   proposal: require ivar accessors to succeed
Message-ID:  <2b2ab28f-45c5-1c28-f923-170d95c20c3d@FreeBSD.org>

next in thread | raw e-mail | index | archive | help

__BUS_ACCESSOR() macro is used to define accessors to bus IVAR variables.
Unfortunately, accessors defined in such a fashion completely ignore return
values of BUS_READ_IVAR() and BUS_WRITE_IVAR() method calls.  There is no way to
see if a call is successful.  Typically, this should not be a problem as a
device driver targets a specific bus (sometimes, buses) and it should know what
IVARs the bus has.  So, the driver should make only those IVAR calls that are
supposed to always succeed on the bus.
But sometimes things can go wrong as with everything else.

So, I am proposing to add some code to __BUS_ACCESSOR to verify the success.
For example, we can panic when a call fails.  The checks could be under
INVARIANTS or under DIAGNOSTICS or under a new kernel option.
A less drastic option is to print a warning message on an error.

This is mostly intended to help driver writers and maintainers.

Opinions, suggestions, etc are welcome.
Thank you.
-- 
Andriy Gapon



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?2b2ab28f-45c5-1c28-f923-170d95c20c3d>