svn commit: r196779 - in head/sys: kern sys

Attilio Rao attilio at freebsd.org
Thu Sep 3 13:46:43 UTC 2009


2009/9/3 Attilio Rao <attilio at freebsd.org>:
> Author: attilio
> Date: Thu Sep  3 13:40:41 2009
> New Revision: 196779
> URL: http://svn.freebsd.org/changeset/base/196779
>
> Log:
>  Add intermediate states for attaching and detaching that will be
>  reused by the enhached newbus locking once it is checked in.
>  This change can be easilly MFCed to STABLE_8 at the appropriate moment.

About this commit, there are a few of things which worths nothing:
- This has been committed separately from the new-bus locking because
it is planned to be MFCed before 8.0 goes out in order to offer the
correct ABI compatibility for merging, while 8.1-REL, the newbus
locking
- Probabilly what we really wanted here is just a transitioning state
instead than both DS_ATTACHING and DS_DETACHING. Some consumers would
eventually understand what of the 2 is that and one of these consumers
is device_is_attached(). That function is used improperly by many
detach handlers in a construct like:

int
foo_attach(device_t dev)
{
...
if (error != 0)
        foo_detach(dev);
...
}

int
foo_detach(device_dev)
{
...
if (device_is_attached(dev)) {
 /* do some handover */
}
...
}

That is an incorrect behaviour which needs to be discouraged and that
will be fixed during 9.0.
In the while this semantic (used by many drivers) makes the
single-transition state impraticable and so we will need to stick with
that device states also in 9.0.

Attilio


-- 
Peace can only be achieved by understanding - A. Einstein


More information about the svn-src-head mailing list