I personally think it's a bit "against" the philosophy of HALs, namely
having a lightweight hardware abstraction layer code for different platforms.
If you basically put all the HALs into one, then you obtain bloated stuff (which remains
in memory for the whole life of the OS). Example: standard HAL is 1MB vs. ACPI HAL which
is few kB.
A bit more work and you could even get a monolithic kernel! Nah joking xD ... but not
completely.
Note that if Windows nowadays has only one hal, it's because they now support
basically only one "architecture"/platform, namely, ACPI multiprocessor (to put
it simple). It has its pros, but also a lot of cons.
To solve the original problem you have encountered in our code, just introduce
common/generic .c files containing the code that is similar everywhere, even at the level
of all the hals, or at the level of (let's say) a given CPU "type" (x86,
x64...), then there are the other .c that implement the different flavours of the
procedures that depend on the specific arch/platform.
Like this:
HALs
+---- Generic code
+---- HAL for a given arch #1 (e.g. x86)
| +---- Generic code for this arch
| +---- Code for standard (non-ACPI) HAL
| +---- Code for ACPI HAL
| +---- Code for a different HAL flavour (platform)?
| +---- ...
|
+---- HAL for arch #2
| +---- Generic code
| +---- Code for platform
| +---- Code for second platform
| +---- ...
|
+---- etc...
This is very clear and maintainable.
H.
-----Message d'origine-----
De : Ros-dev [mailto:ros-dev-bounces@reactos.org] De la part de Colin Finck
Envoyé : dimanche 10 décembre 2017 19:55
À : ros-dev(a)reactos.org
Objet : Re: [ros-dev] Merging our x86 HALs
Am 10.12.2017 um 19:38 schrieb David Quintana (gigaherz):
Colin: Are we talking merge and decide which
method to use at runtime
Exactly! We don't even need boot flags: Just like the setup currently detects an
ACPI-compliant computer, the HAL could do this at boot-up.
It's also not too hard to detect the presence of an APIC.
I think a universal HAL for every x86 machine wouldn't be noticeably larger
than an ACPI+SMP HAL.
- Colin
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev