From: Lunaixsky Date: Wed, 20 Nov 2024 00:49:12 +0000 (+0000) Subject: rewrite the device subsystem interfaces (#48) X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/commitdiff_plain/35a7d633d3f16c1e0539af6ca5d8e7482926cd93?hp=35a7d633d3f16c1e0539af6ca5d8e7482926cd93 rewrite the device subsystem interfaces (#48) * add a new initfn stage for decoupling, adjust loading orders * promote x86 intc to proper device rather than init fn * add devtree compatible driver manager * fix some issues in the devtree implementation * rewrite pci device model for peripherals * introduce changeling, or morphable. with main purpose of managing and decouple the objects that are passing around within the kernel, especially in device subsystem, things getting even more chaos. * rewrite the pci device model such that it: 1. provides unified way to export device driver, we completely remove the use of EXPORT_PCI_DEVICE 2. better integration with devicetree assisted device initialisation and configuration. 3. give the entire freedom to driver decide how to spawn their struct device instance. * re-organise the deivce_def to make the hooks more general and universal. * refactor device_def and device numbering * refactor the declaration of device_def more intuitive, enhance readbility * rename the device capability into potens * refactor the device numbering, using enum, remove the need of manually maintain the number. New macros allow developer to focus only on the name rather than prefixes/conventions. * minor fixes. * refactor the hwtimer/hwrtc with potens. * load and init of hwtimer and hwrtc are now done through the potens. * streamline the term dev creation by unifying with the potens. * move the *.lst file to a dedicated directory * minor cleanups * glue the device objects into devfs using changelings. * minor code cleanup * cleanup: remove the lx_timer_context * use safer method to resolve inode embedded device morpher * rework the dtm and allow pattern based compat field matching * add implementation for fast strlen and strnlen for x86 * use weak alias to decouple realm-specific impl. of hooks * replace device interface with device vendor in devclass * rename the weak to _weak for avoid accidential expansion * enable small function inlining as default optimization * move isrm_ivosalloc and isrm_ivexalloc to x86 specific * add comment regarding the regular expr used by pattern matcher ---