Version française
Home     About     Download     Resources     Contact us    
Browse thread
memory management, allocation and collection in kernel mode.
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Mark Hayden <hayden@i...>
Subject: Re: memory management, allocation and collection in kernel mode.
It is not clear to me exactly what you are asking about,
however, I can tell that it is possible to run Ocaml
code in the Linux kernel.  I got an Ocaml program to run
as a dynamically loadable kernel module without
too many problems.  As far as memory management is concerned,
the approach I took was to intercept the calls to malloc()
that Ocaml made to add new heap segments.

--Mark

"Sussillo, David" wrote:
> 
> Hello,
> 
> Est ce qu'il ya quelqun qui sait ce que j'ai besoin de changer dans le "
>  OCaml memory management system " pour que le "program" funcion bien dans
> le "kernel" mode?
> 
>  ------------------------------
> 
> Does anybody have an idea what would need to change in the OCaml memory
> management system in order for an OCaml program to function properly in
> kernel mode?  (Linux on a PII).  Linux has a physically mapped kernel
> space because it doesn' make much sense for a kernel to manage it's own
> virtual memory, so it just ignores the whole problem by ignoring virtual
> addressing.  What that means is one has to deal with a physical
> addressing scheme if one wants to run in kernel/system mode.
> 
> I've not looke at the OCaml sources at all, but I would assume that the
> memory management routines are assuming that whatever process they are
> running in is running in user mode.  At this point I don't understand the
> ramifications of this fact.
> 
> As far as I can tell, there are a couple of alternatives:
>    a .   The allocation and GC routines might not even think about the
> difference between user mode and system mode at all since memory is
> segmented and each process is running in it's own address space. However,
> if one was to run these routines in the kernel, then it would be
> important to 'gel' with the way memory is allocated in a kernel, at the
> very least, an offset of something like 0xffff0000.
>    b.    The allocation and GC rountines take full advantage of running
> in their own address space (and segment) and put memory all over the
> place.  In which case, one would be hard pressed to figure out how to
> make it work the memory management machinery work in kernel mode.
> 
> So then there are a few questions:
> 1.  Will someone point out to me where I might look in the compiler
> source for all of the memory management routines, allocataion and GC? I
> guess it's important to see how the compiler reasons about the memory
> requirements of OCaml structures, as well as the emitted code (or
> libraries?) that it using during runtime.
> 
> 
> 2. If anyone has any insight into the memory management ramifications of
> running an OCaml program in kernel mode, might they elucidate? As I'm
> just starting out, I'm interested in both general and specific remarks.
> 
> Thanks,
>  -dave