Re: memory management, allocation and collection in kernel mode.

From: Mark Hayden (
Date: Thu Feb 11 1999 - 04:52:30 MET

Date: Thu, 11 Feb 1999 03:52:30 +0000
From: Mark Hayden <>
To: "Sussillo, David" <>
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.


"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

This archive was generated by hypermail 2b29 : Sun Jan 02 2000 - 11:58:19 MET