newbus: type (max value) for device order
John Baldwin
jhb at freebsd.org
Fri Sep 3 17:51:26 UTC 2010
On Friday, September 03, 2010 12:59:27 pm M. Warner Losh wrote:
> In message: <201009031001.58036.jhb at freebsd.org>
> John Baldwin <jhb at FreeBSD.org> writes:
> : On Friday, September 03, 2010 3:43:36 am Andriy Gapon wrote:
> : >
> : > device_add_child_ordered() takes order as a parameter of int type.
> : > struct device stores it as u_char.
> : >
> : > This can be confusing, can't it?
> : > In fact, up to r203776 we used to use order value of 100000 in acpi.c (which
> : > effectively was 160 according to my calculations).
> : >
> : > Not sure what I want to suggest, perhaps defining DEVICE_MAX_ORDER or something.
> : > Or changing the type in struct device to int.
> :
> : Just fix device_t to store an int I think. Also, it should probably be a
> : u_int as negative values don't really make sense.
>
> One caution:
> u_short flags; /**< internal device flags */
> #define DF_ENABLED 1 /* device should be probed/attached */
> #define DF_FIXEDCLASS 2 /* devclass specified at create time */
> #define DF_WILDCARD 4 /* unit was originally wildcard */
> #define DF_DESCMALLOCED 8 /* description was malloced */
> #define DF_QUIET 16 /* don't print verbose attach message */
> #define DF_DONENOMATCH 32 /* don't execute DEVICE_NOMATCH again */
> #define DF_EXTERNALSOFTC 64 /* softc not allocated by us */
> #define DF_REBID 128 /* Can rebid after attach */
> #define DF_REMAPPED 256 /* all remapping completed */
> u_char order; /**< order from device_add_child_ordered() */
> u_char pad;
>
> I'd be inclined to change this to:
>
> u_int flags; /**< internal device flags */
> #define DF_ENABLED 1 /* device should be probed/attached */
> #define DF_FIXEDCLASS 2 /* devclass specified at create time */
> #define DF_WILDCARD 4 /* unit was originally wildcard */
> #define DF_DESCMALLOCED 8 /* description was malloced */
> #define DF_QUIET 16 /* don't print verbose attach message */
> #define DF_DONENOMATCH 32 /* don't execute DEVICE_NOMATCH again */
> #define DF_EXTERNALSOFTC 64 /* softc not allocated by us */
> #define DF_REBID 128 /* Can rebid after attach */
> #define DF_REMAPPED 256 /* all remapping completed */
> u_int order; /**< order from device_add_child_ordered() */
>
> so that the padding and such remains consistent.
Agreed.
> I think this is even an MFCable change, since device_t's size isn't
> exposed outside of subr_bus.c...
Yes.
--
John Baldwin
More information about the freebsd-arch
mailing list