lkml.org 
[lkml]   [2002]   [Sep]   [30]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: devicefs requests

    > 1) As new drivers pick up the model, check that all xxx_bus_type objects
    > get EXPORT_SYMBOLd and included in a include/xxxx header somewhere - My BIOS
    > EDD code walks the list of bus types looking for attached devices to compare
    > against (pci, ide, scsi, usb, ...).
    > ide_bus_type is in include/linux/ide.h but isn't EXPORT_SYMBOL;
    > usb_bus_type is in include/linux/usb.h but isn't EXPORT_SYMBOL;

    Yes, sorry about that. I think I've added most of them, and forgot to
    export them..

    > Alternately, keep the list of registered bus types accessible via a
    > list_for_each type macro. I like the exported symbols myself, it lets me
    > do:

    There is a master bus list: bus_drivers_list in drivers/base/bus.c. It
    could easily be exportable, and may be a good idea for you firmware
    people.

    > static const struct edd_known_bus_types_s edd_known_bus_types[] = {
    > {bus:&scsi_driverfs_bus_type, edd_type: "SCSI", match:
    > edd_match_scsidev},
    > // {bus:&ide_bus_type, edd_type: "ATA", match: NULL},
    > // {bus:&usb_bus_type, edd_type: "USB", match: NULL},
    > {bus:NULL, edd_type: NULL, match: NULL},
    > };
    >
    > so I can supply my own match functions which match one type of device (e.g.
    > EDD's idea of a SCSI device) to that of the standard device. I could
    > accomplish the same using well-known names for bus_type I suppose, and doing
    > a list_for_each until I find it. Just a different thing getting exported, a
    > well-known name and a lookup method rather than the symbol itself.

    Don't rely on the name, as it could change. It could, but at least the
    compiler will warn you..

    > 2) bus_for_each_dev() is really restrictive right now due to all the locking
    > mechanisms in place. In my code I'd like to, given a struct device *, walk
    > a list of devices on a given bus and compare each device with the given
    > device, returning a match, or not. As it stands, bus_for_each_dev returns
    > either success (the callback worked for each device on the list), or failure
    > (the callback failed for some device on the list), but I don't see a
    > mechanism to return which device failed without excessive abuse of the
    > void*. For now I've made a private copy of bus_for_each_dev which I've
    > mucked with the return the properly matching device, and wonder if this
    > couldn't be made more generic somehow.

    Yes, those helpers are restrictive, and not very useful to you in that
    case. It's easy to make more complex versions, but I fear the resulting
    code..

    -pat

    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:29    [W:0.025 / U:31.884 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site