rewrite the device subsystem interfaces (#48)
authorLunaixsky <lunaixsky@qq.com>
Wed, 20 Nov 2024 00:49:12 +0000 (00:49 +0000)
committerGitHub <noreply@github.com>
Wed, 20 Nov 2024 00:49:12 +0000 (00:49 +0000)
* 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


No differences found