• Patrick Mochel's avatar
    Introduce struct device_interface. · 59d6f107
    Patrick Mochel authored
    Device interfaces are the logical interfaces of device classes that correlate
    directly to userspace interfaces, like device nodes. 
    
    Device interfaces are registered with the class they belong to. As devices
    are added to the class, they are added to each interface registered with
    the class. The interface is responsible for determining whether the device
    supports the interface or not. 
    
    The interface is responsible for allocating and initializing a struct 
    intf_data and calling interface_add_data() to add it to the device's list
    of interfaces it belongs to. This list will be iterated over when the device
    is removed from the class (instead of all possible interfaces for a class).
    This structure should probably be embedded in whatever per-device data 
    structure the interface is allocating anyway.
    
    Devices are enumerated within the interface. This happens in interface_add_data()
    and the enumerated value is stored in the struct intf_data for that device. 
    
    Interfaces get a directory in driverfs under their class's directory. Each
    time a device is added to the interface, a symlink is created in that 
    directory that points to the device's directory in the physical hierarchy.
    The name of this symlink is the interface-enumerated value of the device.
    59d6f107
class.c 2.35 KB