title: Power Management Framework in Linux
body: <p>I observed that the whole device topology is based on <code>Buses --&gt; Device + Driver</code>. The power management offered by linux <code>(suspend + resume)</code> is present in bus. And similar functionality is there in device driver.</p>
  
  <pre><code>struct bus_type { ***
  
      int (*suspend)(struct device *dev, pm_message_t state);
  
      int (*resume)(struct device *dev);
  
      *** }
  
  
      struct device_driver { ***
  
      int (*suspend) (struct device *dev, pm_message_t state);
  
      int (*resume) (struct device *dev);
  
      *** }
  </code></pre>
  
  <p>So how is this implemented?</p>