123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288openCtypesmoduleTypes(F:Cstubs.Types.TYPE)=structmoduleLookup_mode=structletlookup_vendor=F.constant"PCI_LOOKUP_VENDOR"F.intletlookup_device=F.constant"PCI_LOOKUP_DEVICE"F.intletlookup_class=F.constant"PCI_LOOKUP_CLASS"F.intletlookup_subsystem=F.constant"PCI_LOOKUP_SUBSYSTEM"F.intletlookup_progif=F.constant"PCI_LOOKUP_PROGIF"F.intletlookup_numeric=F.constant"PCI_LOOKUP_NUMERIC"F.intletlookup_no_numbers=F.constant"PCI_LOOKUP_NO_NUMBERS"F.intletlookup_mixed=F.constant"PCI_LOOKUP_MIXED"F.intletlookup_network=F.constant"PCI_LOOKUP_NETWORK"F.intletlookup_skip_local=F.constant"PCI_LOOKUP_SKIP_LOCAL"F.intletlookup_cache=F.constant"PCI_LOOKUP_CACHE"F.intletlookup_refresh_cache=F.constant"PCI_LOOKUP_REFRESH_CACHE"F.intendmoduleFill_flag=structletfill_ident=F.constant"PCI_FILL_IDENT"F.intletfill_irq=F.constant"PCI_FILL_IRQ"F.intletfill_bases=F.constant"PCI_FILL_BASES"F.intletfill_rom_base=F.constant"PCI_FILL_ROM_BASE"F.intletfill_sizes=F.constant"PCI_FILL_SIZES"F.intletfill_class=F.constant"PCI_FILL_CLASS"F.intletfill_caps=F.constant"PCI_FILL_CAPS"F.intletfill_ext_caps=F.constant"PCI_FILL_EXT_CAPS"F.intletfill_phys_slot=F.constant"PCI_FILL_PHYS_SLOT"F.intletfill_module_alias=F.constant"PCI_FILL_MODULE_ALIAS"F.intletfill_rescan=F.constant"PCI_FILL_RESCAN"F.intendmodulePci_class=structletclass_not_defined=F.constant"PCI_CLASS_NOT_DEFINED"F.intletbase_class_storage=F.constant"PCI_BASE_CLASS_STORAGE"F.intletbase_class_network=F.constant"PCI_BASE_CLASS_NETWORK"F.intletbase_class_display=F.constant"PCI_BASE_CLASS_DISPLAY"F.intletbase_class_multimedia=F.constant"PCI_BASE_CLASS_MULTIMEDIA"F.intletbase_class_memory=F.constant"PCI_BASE_CLASS_MEMORY"F.intletbase_class_bridge=F.constant"PCI_BASE_CLASS_BRIDGE"F.intletbase_class_communication=F.constant"PCI_BASE_CLASS_COMMUNICATION"F.intletbase_class_system=F.constant"PCI_BASE_CLASS_SYSTEM"F.intletbase_class_input=F.constant"PCI_BASE_CLASS_INPUT"F.intletbase_class_docking=F.constant"PCI_BASE_CLASS_DOCKING"F.intletbase_class_processor=F.constant"PCI_BASE_CLASS_PROCESSOR"F.intletbase_class_serial=F.constant"PCI_BASE_CLASS_SERIAL"F.intletbase_class_wireless=F.constant"PCI_BASE_CLASS_WIRELESS"F.intletbase_class_intelligent=F.constant"PCI_BASE_CLASS_INTELLIGENT"F.intletbase_class_satellite=F.constant"PCI_BASE_CLASS_SATELLITE"F.intletbase_class_crypt=F.constant"PCI_BASE_CLASS_CRYPT"F.intletbase_class_signal=F.constant"PCI_BASE_CLASS_SIGNAL"F.intletclass_others=F.constant"PCI_CLASS_OTHERS"F.intendmoduleHeader=struct(* A subset of the PCI configuration address space (see pci/header.h) *)letheader_type=F.constant"PCI_HEADER_TYPE"F.intletheader_type_normal=F.constant"PCI_HEADER_TYPE_NORMAL"F.intletsubsystem_vendor_id=F.constant"PCI_SUBSYSTEM_VENDOR_ID"F.intletsubsystem_id=F.constant"PCI_SUBSYSTEM_ID"F.intletheader_type_cardbus=F.constant"PCI_HEADER_TYPE_CARDBUS"F.intletcb_subsystem_vendor_id=F.constant"PCI_CB_SUBSYSTEM_VENDOR_ID"F.intletcb_subsystem_id=F.constant"PCI_CB_SUBSYSTEM_ID"F.intendmoduleAccess_type=struct(* Just a subset of the access types we'll need internally *)letauto=F.constant"PCI_ACCESS_AUTO"F.uintletdump=F.constant"PCI_ACCESS_DUMP"F.uintendendmoduleBindings(F:Cstubs.FOREIGN)=structopenFmodulePci_cap=structtypepci_capletpci_cap:pci_capstructuretyp=structure"pci_cap"let(-:)tylabel=fieldpci_caplabeltyletnext=(ptr_optpci_cap)-:"next"letid=uint16_t-:"id"lettype_=uint16_t-:"type"letaddr=int-:"addr"let()=sealpci_captypet=pci_capstructureptrlett=ptrpci_capendmodulePci_dev=structtypepci_devletpci_dev:pci_devstructuretyp=structure"pci_dev"let(-:)tylabel=fieldpci_devlabeltyletnext=(ptr_optpci_dev)-:"next"letdomain=uint16_t-:"domain"letbus=uint8_t-:"bus"letdev=uint8_t-:"dev"letfunc=uint8_t-:"func"letknown_fields=int-:"known_fields"letvendor_id=uint16_t-:"vendor_id"letdevice_id=uint16_t-:"device_id"letdevice_class=uint16_t-:"device_class"letirq=int-:"irq"letpciaddr_t=nativeint(* TODO: this is derived at compile time in pci/types.h... *)letbase_addr=(array6pciaddr_t)-:"base_addr"letsize=(array6pciaddr_t)-:"size"letrom_base_addr=pciaddr_t-:"rom_base_addr"letrom_size=pciaddr_t-:"rom_size"letfirst_cap=Pci_cap.t-:"first_cap"letphy_slot=string_opt-:"phy_slot"letmodule_alias=string_opt-:"module_alias"(* Fields used internally *)letaccess=(ptrvoid)-:"access"letmethods=(ptrvoid)-:"methods"letcache=(ptruint8_t)-:"cache"letcache_len=int-:"cache_len"lethdrtype=int-:"hdrtype"letaux=(ptrvoid)-:"aux"let()=sealpci_devtypet=pci_devstructureptrlett=ptrpci_devendmodulePci_param=structtypepci_paramletpci_param:pci_paramstructuretyp=structure"pci_param"let(-:)tylabel=fieldpci_paramlabeltyletnext=ptr_optpci_param-:"next"letparam=string-:"param"letvalue=string-:"value"letvalue_malloced=int-:"value_malloced"lethelp=string-:"help"let()=sealpci_paramtypet=pci_paramstructureptrlett=ptrpci_paramendmodulePci_filter=structtypepci_filterletpci_filter:pci_filterstructuretyp=structure"pci_filter"let(-:)tylabel=fieldpci_filterlabeltyletdomain=int-:"domain"letbus=int-:"bus"letslot=int-:"slot"letfunc=int-:"func"letvendor=int-:"vendor"letdevice=int-:"device"let()=sealpci_filtertypet=pci_filterstructureptrlett=ptrpci_filterendmodulePci_access=structopenPci_devtypepci_accessletpci_access:pci_accessstructuretyp=structure"pci_access"let(-:)tylabel=fieldpci_accesslabeltyletmethod_=uint-:"method"letwriteable=int-:"writeable"letbuscentric=int-:"buscentric"letid_file_name=string-:"id_file_name"letfree_id_name=int-:"free_id_name"letnumeric_ids=int-:"numeric_ids"letlookup_mode=uint-:"lookup_mode"letdebugging=int-:"debugging"leterror=(ptrvoid)-:"error"letwarning=(ptrvoid)-:"warning"letdebug=(ptrvoid)-:"debug"letdevices=fieldpci_access"devices"(ptr_optpci_dev)(* Fields used internally *)letmethods=(ptrvoid)-:"methods"letparams=(ptrvoid)-:"params"letid_hash=(ptr(ptrvoid))-:"id_hash"letcurrent_id_bucket=(ptrvoid)-:"current_id_bucket"letid_load_failed=int-:"id_load_failed"letid_cache_status=int-:"id_cache_status"letfd=int-:"fd"letfd_rw=int-:"fd_rw"letfd_pos=int-:"fd_pos"letfd_vpd=int-:"fd_vpd"letcached_dev=(ptr_optpci_dev)-:"cached_dev"let()=sealpci_accesstypet=pci_accessstructureptrlett=ptrpci_accessendletpci_alloc=foreign"pci_alloc"(void@->returningPci_access.t)letpci_init=foreign"pci_init"(Pci_access.t@->returningvoid)letpci_cleanup=foreign"pci_cleanup"(Pci_access.t@->returningvoid)letpci_scan_bus=foreign"pci_scan_bus"(Pci_access.t@->returningvoid)letpci_get_dev=foreign"pci_get_dev"(Pci_access.t@->int@->int@->int@->int@->returningPci_dev.t)letpci_free_dev=foreign"pci_free_dev"(Pci_dev.t@->returningvoid)letpci_lookup_method=foreign"pci_lookup_method"(string@->returningint)letpci_get_method_name=foreign"pci_get_method_name"(int@->returningstring)letpci_get_param=foreign"pci_get_param"(Pci_access.t@->string@->returningstring)letpci_set_param=foreign"pci_set_param"(Pci_access.t@->string@->string@->returningint)letpci_walk_params=foreign"pci_walk_params"(Pci_access.t@->Pci_param.t@->returningPci_param.t)letpci_read_byte=foreign"pci_read_byte"(Pci_dev.t@->int@->returninguint8_t)letpci_read_word=foreign"pci_read_word"(Pci_dev.t@->int@->returninguint16_t)letpci_read_long=foreign"pci_read_long"(Pci_dev.t@->int@->returninguint32_t)letpci_read_block=foreign"pci_read_block"(Pci_dev.t@->int@->ptruint8_t@->int@->returningint)letpci_read_vpd=foreign"pci_read_vpd"(Pci_dev.t@->int@->ptruint8_t@->int@->returningint)letpci_write_byte=foreign"pci_write_byte"(Pci_dev.t@->int@->uint8_t@->returningint)letpci_write_long=foreign"pci_write_long"(Pci_dev.t@->int@->uint16_t@->returningint)letpci_write_block=foreign"pci_write_block"(Pci_dev.t@->int@->ptruint8_t@->int@->returningint)letpci_fill_info=foreign"pci_fill_info"(Pci_dev.t@->int@->returningint)letpci_setup_cache=foreign"pci_setup_cache"(Pci_dev.t@->ptruint8_t@->int@->returningvoid)letpci_find_cap=foreign"pci_find_cap"(Pci_dev.t@->uint@->uint@->returningPci_cap.t)letpci_filter_init=foreign"pci_filter_init"(Pci_access.t@->Pci_filter.t@->returningvoid)letpci_filter_parse_slot=foreign"pci_filter_parse_slot"(Pci_filter.t@->string@->returningstring)letpci_filter_parse_id=foreign"pci_filter_parse_id"(Pci_filter.t@->string@->returningstring)letpci_filter_match=foreign"pci_filter_match"(Pci_filter.t@->Pci_dev.t@->returningint)letpci_lookup_name_1_ary=foreign"pci_lookup_name"(Pci_access.t@->ptrchar@->int@->int@->int@->returningstring)letpci_lookup_name_2_ary=foreign"pci_lookup_name"(Pci_access.t@->ptrchar@->int@->int@->int@->int@->returningstring)letpci_lookup_name_4_ary=foreign"pci_lookup_name"(Pci_access.t@->ptrchar@->int@->int@->int@->int@->int@->int@->returningstring)letpci_load_name_list=foreign"pci_load_name_list"(Pci_access.t@->returningint)letpci_free_name_list=foreign"pci_free_name_list"(Pci_access.t@->returningvoid)letpci_set_name_list_path=foreign"pci_set_name_list_path"(Pci_access.t@->string@->int@->returningvoid)letpci_id_cache_flush=foreign"pci_id_cache_flush"(Pci_access.t@->returningvoid)end