pci.c
上传用户:qddsws
上传日期:2022-06-22
资源大小:723k
文件大小:1k
源码类别:

操作系统开发

开发平台:

C/C++

  1. #include <pci.h>
  2. static int x;
  3. void __init_bus init_pci_bus (struct bus_driver* newbus) {
  4. struct device* root_device;
  5. root_device=(struct device*) kmalloc (sizeof(struct device));
  6. root_device->name=(char*)kmalloc((1+strlen(ROOT_DEV_STR))*sizeof(char));
  7. strcpy(root_device->name,ROOT_DEV_STR);
  8. root_device->parent_bus = newbus;
  9. newbus->dev_root=root_device;
  10. INIT_LIST_HEAD (&root_device->dev_list);
  11. kprint ("init Pci bus: ");
  12. kprint (newbus->name);
  13. kprint ("n");
  14. print_PCI_bios_entryp();
  15.         print_bus_enum ();
  16. pci_scan_the_bus(newbus);
  17. }
  18. #include <devices/rtl8029.h>
  19. void pci_scan_the_bus (struct bus_driver* actbus) {
  20. struct device* rtl;
  21. rtl=(struct device*)kmalloc(sizeof(struct device));
  22. rtl->name=(char*)kmalloc((1+strlen("RTL 8029"))*sizeof(char));
  23. strcpy(rtl->name,"RTL 8029");
  24. rtl->parent_bus = actbus;
  25. rtl->init=(void*)&init_rtl8029;
  26. pci_add_device(actbus,rtl);
  27. /* Rutines PCIBOS!!! */
  28. }
  29. void pci_add_device (struct bus_driver* actbus, struct device* newdev) {
  30. list_add (&newdev->dev_list,&actbus->dev_root->dev_list);
  31. if (newdev->init!=(void*)NULL) newdev->init(newdev);
  32. }