欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
Linux PCI橋驅動(dòng)程序源碼

Linux PCI橋驅動(dòng)程序源碼

2007-5-27 05:06|查看數: 520

在網(wǎng)上有很多介紹Linux驅動(dòng)程序開(kāi)發(fā)的文章,看下來(lái),很多寫(xiě)的不盡完善,找了一下Linux的內核源碼,將其貼出共享,也督促自己盡量的搞懂這些東西。

 


/*
 * Copyright (c) 2001 Red Hat, Inc. All rights reserved.
 *
 * This software may be freely redistributed under the terms
 *  of the GNU public license.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 *
 *  Author: Arjan van de Ven <
arjanv@redhat.com>
 *
 */


/*
 * Generic PCI driver for PCI bridges for powermanagement purposes
 *
 */

#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/pci.h>
#include <linux/init.h>

static struct pci_device_id bridge_pci_table[] __devinitdata = {
        {/* handle all PCI bridges */
 class:          ((PCI_CLASS_BRIDGE_PCI << 8) | 0x00),
 class_mask:     ~0,
 vendor:         PCI_ANY_ID,
 device:         PCI_ANY_ID,
 subvendor:      PCI_ANY_ID,
 subdevice:      PCI_ANY_ID,
 },
        ,
};

static int bridge_probe(struct pci_dev *pdev, const struct pci_device_id *id);
static int pci_bridge_save_state_bus(struct pci_bus *bus, int force);
int pci_generic_resume_compare(struct pci_dev *pdev);

int pci_bridge_force_restore = 0;


static int __init bridge_setup(char *str)
{
 if (!strcmp(str,"force"))
  pci_bridge_force_restore = 1;
 else if (!strcmp(str,"noforce"))
  pci_bridge_force_restore = 0;
 return 0;
}

__setup("resume=",bridge_setup);


static int pci_bridge_save_state_bus(struct pci_bus *bus, int force)
{
 struct list_head *list;
 int error = 0;

 list_for_each(list, &bus->children) {
  error = pci_bridge_save_state_bus(pci_bus_b(list),force);
  if (error) return error;
 }
 list_for_each(list, &bus->devices) {
  pci_generic_suspend_save(pci_dev_b(list),0);
 }
 return 0;
}


static int pci_bridge_restore_state_bus(struct pci_bus *bus, int force)
{
 struct list_head *list;
 int error = 0;
 static int printed_warning=0;

 list_for_each(list, &bus->children) {
  error = pci_bridge_restore_state_bus(pci_bus_b(list),force);
  if (error) return error;
 }
 list_for_each(list, &bus->devices) {
  if (force)
   pci_generic_resume_restore(pci_dev_b(list));
  else {
   error = pci_generic_resume_compare(pci_dev_b(list));
   if (error && !printed_warning++) {
    printk(KERN_WARNING "resume warning: bios doesn't restore PCI state properlyn");
    printk(KERN_WARNING "resume warning: if resume failed, try booting with resume=forcen");
   }
   if (error)
    return error;
  }
 }
 return 0;
}

static int bridge_suspend(struct pci_dev *dev, u32 force)
{
 pci_generic_suspend_save(dev,force);
 if (dev->subordinate)
  pci_bridge_save_state_bus(dev->subordinate,force);
 return 0;
}

static int bridge_resume(struct pci_dev *dev)
{

 pci_generic_resume_restore(dev);
 if (dev->subordinate)
  pci_bridge_restore_state_bus(dev->subordinate,pci_bridge_force_restore);
 return 0;
}


MODULE_DEVICE_TABLE(pci, bridge_pci_table);
static struct pci_driver bridge_ops = {
        name:           "PCI Bridge",  
        id_table:       bridge_pci_table,
        probe:          bridge_probe,   
        suspend:  bridge_suspend,
        resume:  bridge_resume
};

static int __devinit bridge_probe(struct pci_dev *pdev, const struct pci_device_id *id)
{
 return 0;
}

static int __init bridge_init(void)
{
        pci_register_driver(&bridge_ops);
        return 0;
}

static void __exit bridge_exit(void)
{
        pci_unregister_driver(&bridge_ops);
}


module_init(bridge_init)
module_exit(bridge_exit)

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Linux設備驅動(dòng)編程之復雜設備驅動(dòng)
rk系列之PCIE設備枚舉
【原創(chuàng )】Linux PCI驅動(dòng)框架分析(二)
pci 學(xué)習筆記
Linux硬件信息命令大全
struct device_driver的probe的調用 - linux驅動(dòng)程序 - l...
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久