struct bus_type {
  const char       *name;

  struct subsystem subsys;
  struct kset      drivers;
  struct kset      devices;
  struct klist     klist_devices;
  struct klist     klist_drivers;

  struct bus_attribute    *bus_attrs;
  struct device_attribute *dev_attrs;
  struct driver_attribute *drv_attrs;

  int (*match)(struct device *dev, struct device_driver *drv);
  int (*uevent)(struct device *dev, char **envp,
                int num_envp, char *buffer, int buffer_size);
  int (*probe)(struct device *dev);
  int (*remove)(struct device *dev);
  int (*shutdown)(struct device *dev);
  int (*suspend)(struct device *dev, pm_message_t state);
  int (*resume)(struct device *dev);
};