|
|
1.1 ! root 1: struct device_slot { ! 2: dev_num ! 3: slot_id ! 4: dev_type ! 5: link ! 6: } ! 7: ! 8: config_scan( ! 9: boolean_t all_devices, ! 10: slot_id_t slot_id, ! 11: dev_type_t dev_type) ! 12: { ! 13: dev_num = 0; ! 14: ! 15: /* ! 16: * Scan hardware ! 17: */ ! 18: do { ! 19: get_dev_type(dev_num); ! 20: if error ! 21: continue; ! 22: if all_devices or dev_type and slot_id match our args ! 23: make a new device_slot, add to dev_slot_list; ! 24: } while drtn != no more devices; ! 25: ! 26: /* ! 27: * Create new dev_entry's ! 28: */ ! 29: for each entry in dev_slot_list { ! 30: if get_driver_entry(dev_num) != NULL ! 31: continue; // already have it ! 32: if(fid = get_driver_file(device_slot) != NULL) { ! 33: if(get_driver_entry(fid) != NULL) { ! 34: create_dev_entry(driver_entry, dev_num, ! 35: dev_type, slot_id); ! 36: } ! 37: else { ! 38: driver_entry = create_driver_entry(fid, ! 39: filename); ! 40: create_dev_entry(driver_entry, dev_num, ! 41: dev_type, slot_id); ! 42: } ! 43: } ! 44: else log no driver for this device; ! 45: } ! 46: ! 47: /* ! 48: * exec new drivers. have to do after last loop complete so each ! 49: * driver sees all of its dev_ports. ! 50: */ ! 51: for each entry in driver_list { ! 52: if(!running) ! 53: exec_driver(driver_entry); ! 54: } ! 55: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.