Subject: Re: device tree traversal
To: matthew green <mrg@eterna.com.au>
From: Jachym Holecek <freza@dspfpga.com>
List: tech-kern
Date: 07/03/2006 15:23:03
# matthew green 2006-07-03:
>    
>    	/* Allocate recursion context of max depth 16, topdown dir. */
>    	di = device_iterator_alloc(16, DIF_WAITOK | DIF_TOPDOWN);
> 
> 
> 
> why have this '16' limit at all?  i don't see why it's necessary
> or even a good idea.

The idea was to avoid any allocation in device_iterator_foreach(),
so that it could be used from interrupt context if needed (ie.
in config_{de,}activate()) -- we probably want to avoid allocations
within hardintrs.

I can see two possibilities:

  1. Just use realloc (we already cache dvi_flags, so we could pass
     M_{WAITOK,NOWAIT} correctly).

  2. Be aware of maximum device tree depth, allocate say 1.5 of that
     to be safe.

What do you think?

	-- Jachym