Source-Changes-D archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

Re: CVS commit: src/sys


> Module Name:    src
> Committed By:   dyoung
> Date:           Thu Nov 12 19:10:31 UTC 2009
> Modified Files:
>         src/sys/kern: subr_autoconf.c
>         src/sys/sys: device.h
> Log Message:
> Move a device-deactivation pattern that is replicated throughout
> the system into config_deactivate(dev): deactivate dev and all of
> its descendants.  Block all interrupts while calling each device's
> activation hook, ca_activate.  Now it is possible to simplify or
> to delete several device-activation hooks throughout the system.
> ...
> To generate a diff of this commit:
> cvs rdiff -u -r1.186 -r1.187 src/sys/kern/subr_autoconf.c
> cvs rdiff -u -r1.124 -r1.125 src/sys/sys/device.h

- Can you tell what relevant code requires alldevs_mtx to be at IPL_HIGH?

- Since alldevs_mtx became a spin-lock, it is no longer valid to assert for
  mutex _not_ being held.  In other words, such cases are wrong:


- You have added config_collect_garbage(), which is mostly called before
  config_alldevs_lock().  How about changing it to be used as/with last
  unlock?  That is, collect the objects into a list, release the lock and
  then destroy all objects.  Apart from avoiding unecessary unlock/relock
  dances, it would also be simpler.

- May I suggest to avoid "inverted" logic like this:

        if (rv != 0)
        else if (dev->dv_del_gen != 0)
        else {
                dev->dv_del_gen = alldevs_gen;
                alldevs_garbage = true;



Home | Main Index | Thread Index | Old Index