[ros-kernel] suggested header file layout

Jonathan Wilson jonwil at tpgi.com.au
Wed Nov 12 21:22:02 CET 2003


Here is a suggestion to how to layout the header files
include\w32api our local copy of the w32api header files. Defines all 
public stuff (i.e. anything thats in the MS SDK)
include\msvcrt a local copy of MingW-Runtime, defines all MSVCRT.DLL 
exports and related definitions. All parts of ROS that need e.g. stdio.h or 
string.h or whatever pull them from here. Also, msvcrt.dll and crtdll.dll 
itself would also pull them from here.

I would suggest just putting both of these in include but since they are 
copied from elsewhere it makes more sense to give them their own folder and 
keep them seperate.

include\ddk DDK headers. Basicly, anything defined in the MS DDK. Plus (if 
desired) IFS kit headers containing things for IFS development (perhaps 
only those documented in the IFS kit or whatever)

include\undocumented header files containing things that are "public" in 
the sense that they are exported from some dll on real windows but that 
arent documented in the Platform SDK or MSDN. These are the things that 
w32api (for whatever reasons) arent interested in

include\undocumented\ddk same as include\undocumented but for stuff thats 
exposed by kernel-mode things like ntoskrnl, videoprt, hal etc

include\undocumented\napi a place for all the definitions that relate to 
the NT Native API (i.e. NTDLL.DLL exports and such)

include\internal place for internal headers that are only for ROS to use 
but that are used by several bits of the code and that dont go into 
subfolders of include\internal

include\internal\msvcrt header files containing defintions internal to 
msvcrt and/or crtdll but not visible to consumers of those 2 dlls

include\internal\wine header files that are needed for stuff internal to 
wine dlls

include\internal\win32k header files and definitions that are needed by 
both win32k and user32\gdi32

include\internal\ntos header files required by ntoskrnl,hal and the core 
and that arent generally visible (either in userland or kernelspace). Also, 
things needed by ntdll.dll to talk to kernel go in here.

<some folder>\include include files that are specifc to that module and 
dont get used outside that module

The include paths would be set as appropriate for each module so it can 
find what it needs.

Anyone want to comment (or suggest a better idea :)



More information about the Ros-kernel mailing list