[ros-dev] HAL reorganisation

Maritn "E.T." Misuth et_ros at ethome.sk
Fri Dec 3 00:06:05 CET 2004


Ge van Geldorp wrote:

>As most of you know, I'm dabbling around a little bit with a port of ReactOS
>to the Xbox. I think most of the differences between a standard PC and the
>Xbox can be handled by using a custom HAL for the Xbox, after all, that's
>what the HAL is for.
>
>At the moment, we build 1 HAL, based on the value of MP in config it's
>either a UniProcessor HAL or a MultiProcessor HAL. Which code is compiled is
>based on preprocessor statements. I'd like to be able to build 3 HALs in
>parallel, the UP, MP and Xbox HALs. When installing ("make install"), the
>correct HAL would be selected based on the MP config var. When creating a
>boot cd, all three would be copied to the CD and the setup program would
>select the correct one to copy to the harddisk. This will allow us to build
>a single boot CD for different configurations. I'm aware that we'll need a
>NTKRNLMP.EXE on the boot CD too (I will try very very hard not to need a
>different kernel for Xbox) for this "single boot CD" idea to work, but
>that's a different problem and I'd like to tackle that later.
>
>The three HALs will share a lot of the code. To avoid code duplication, I
>propose to create a directory structure like this:
>
>hal
> |
> --- hal
> |
> --- halx86
> |     |
> |     +----- generic
> |     |        |
> |     |        +----- include
> |     |
> |     +----- up
> |     |
> |     +----- mp
> |     |
> |     +----- xbox
> |
> +-- hal68k :-)
> |
> +-- etc...
>
>The "generic" subdir will contain most of the code. The "up" subdir will
>contain mostly simple .c files which just include a .c file from generic.
>For example, the HalMakeBeep() function will be defined in generic/beep.c.
>In "up" there will be a file beep_up.c which contains only 'include
>"beep.c"', which will be compiled with the include path set to "../generic".
>The "mp" and "xbox" directories can either include "generic" files or have
>their own implementation of a given routine (e.g. display_xbox.c for
>HalDisplay* functions on the Xbox).
>
>Doing it this way we should have little code duplication and our dependency
>tracking system should work.
>
>Comments?
>
>Gé van Geldorp.
>
>
>_______________________________________________
>Ros-dev mailing list
>Ros-dev at reactos.com
>http://reactos.com:8080/mailman/listinfo/ros-dev
>
>
>  
>
I've heard that XBOX WinNT kernel implementation has only around 120 kb 
in mem, allows single process only, (propably windows messaging) is done 
by polling and has not memory protection, so games can access hardwae 
directly. Will ReactOS on XBOX mimic this behavior?



More information about the Ros-dev mailing list