Annotation of driverkit/notes/kern_dev, revision 1.1

1.1     ! root        1:                notes on integrating kern_dev server
        !             2:                
        !             3: What Jim did:
        !             4: 
        !             5: * option in Makefile.m68k is udma
        !             6: 
        !             7: * changes to kernel:
        !             8: 
        !             9:   * syscall_sw.c:
        !            10:        #if UDMA
        !            11:                FN(device_master_self, 0),              /* 69 */
        !            12:        #else
        !            13:                FN(kern_invalid, 0),                    /* 69 */
        !            14:        #endif
        !            15: 
        !            16:   * add a call to ipc_dev_init() (one-time only init for kern_dev server,
        !            17:     in kern_dev.c) in mach_init.c
        !            18:     
        !            19:   * disabled the simple lock assertion in simple_lock_try (WHY???)
        !            20:   
        !            21:   * Add DEVICE_PRIV_TRAP to kern/ipc_ptraps.c
        !            22:   
        !            23:   * ipc_basic.c:
        !            24:   
        !            25:        #if UDMA
        !            26:        if (!dev_server_server(&kmsgptr->kmsg_header, &out_msg->kmsg_header))
        !            27:        #endif
        !            28: 
        !            29: What I have to do:
        !            30: 
        !            31: * Move everything except for the mig stuff from driverkit/m88k into the 
        !            32:   kernel. There's no reason for it to be outside.
        !            33:   --DONE
        !            34:   
        !            35: * one-time only init function in kern_dev_priv. Runs before libIO is init'd.
        !            36: 
        !            37:   -- create device_master_port using port_alloc
        !            38:   -- the rest of the stuff in autoconfig_int. This function which does the
        !            39:      one-time only init should be in kern_dev_priv so it's not 
        !            40:      KERNEL_FEATURES.
        !            41:      
        !            42:   ...DONE
        !            43:   
        !            44: * at autoconfig time (autoconf_int())
        !            45:     -- IOLibInit()
        !            46:     -- object_copyout() device_master_port to device_master_uport. This 
        !            47:        should be a static in autoconf!
        !            48:     -- in an IOTask thread, do
        !            49:            -- autosize_bus()
        !            50:            -- probe_drivers
        !            51:     ...DONE
        !            52:       
        !            53: * autosize_bus needs to create kern_dev_t's for hard-wired devices (adb
        !            54:   and frame buffer). Enumerate these neatly somehow.
        !            55:   ...DONE
        !            56:   
        !            57: * for test, call do_autoconf() from init_main. Maybe later from a loaded
        !            58:   server.
        !            59:   
        !            60: * Initialization sequeuence as of 2 Nov
        !            61:   dev_server_init() - end of setup_main() in kern/mach_init.c
        !            62:   objcInit() - main() in bsd/kern/init_main
        !            63:   do_autoconf() - just after objcInit(), before vfs_mountroot
        !            64:   
        !            65:   currently, setup_main() calls startup() early on, and this calls 
        !            66:   configure()...
        !            67:   
        !            68: testing libdriver in the 68k kernel
        !            69: 
        !            70: * configuration = LIBDRV, enables:
        !            71:        kernobjc
        !            72:        objctest
        !            73:        driverdbg
        !            74:        udma
        !            75:        xpr_debug
        !            76:        
        !            77:   setup_main() in kern/mach_init.c
        !            78:        dev_server_init()
        !            79:                xprInit()
        !            80:   main() in init_main.c
        !            81:        _objcInit() 
        !            82:        autoconf()         (before mounting root)
        !            83:            IOlibIOInit()
        !            84:            fork off iotaskTest() in Kernel/libIO.m
        !            85:            config FAKE_DEVICE (defined in kern_dev_priv.h)
        !            86:          
        !            87: Configuring w/FAKE_DEVICE true:
        !            88:        kernIOAttachInterrupt: avoids setting up h/w global_intr_map register
        !            89:        kernIOMapDevicePage: static fake device page for mapping
        !            90:        dev_intr_detach_com: avoid clearing global_intr_map
        !            91:        
        !            92: testing
        !            93:        objtest.m has NXlock test, kernel version. Invoked via loadable
        !            94:                server klibtest (in driverkit/tests), which calls
        !            95:                doNXLockTest.
        !            96:        IOLibIOInit forks off iotaskTest() in Kernel/libIO.m, tests 
        !            97:                mach functions.
        !            98:        dev_serv_test in driverkit/tests does half of Config's job,
        !            99:                doing IOGetDeviceType(), IOCreateDevicePort(), etc. for
        !           100:                each device known by kernel, and prints everything it 
        !           101:                finds.
        !           102:                
        !           103:            
        !           104:   

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.