[lkml]   [2002]   [Sep]   [25]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
Messages in this thread
    Subjectdevicefs 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;

    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

    struct edd_known_bus_types_s {
    struct bus_type *bus;
    const char *edd_type;
    int (*match)(struct device *edd_dev, struct device *dev);

    static const struct edd_known_bus_types_s edd_known_bus_types[] = {
    {bus:&scsi_driverfs_bus_type, edd_type: "SCSI", match:
    // {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.

    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.



    Matt Domsch
    Sr. Software Engineer, Lead Engineer, Architect
    Dell Linux Solutions
    Linux on Dell mailing lists @

    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to
    More majordomo info at
    Please read the FAQ at

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