[Kos-dev] OCaml dans KOS : ça tourne !

David MENTRE dmentre at linux-france.org
Sun Jan 16 12:55:48 CET 2005


Bonjour,

J'ai réussi à compiler le runtime est un petit programme OCaml comme
module KOS.

En gros, j'ai un programme dummy.ml du type :
----
external c_toto : unit -> unit = "c_toto"

let _ =
  c_toto ()
----

Avec un ocaml_asmrun.c :
----
#include <loader/mod.h>
#include <kos/macros.h>

void c_toto(void)
{
  ktty_printk("Toto called from ocaml code\n");
}

__init_text static int init_module_level4(kernel_parameter_t *kp)
{
  UNUSED(kp);

  ktty_printk("(Init module ocaml_asmrun...");
  caml_startup("");
  ktty_printk("Ok)\n");
  return 0;
}

DECLARE_INIT_SYMBOL(init_module_level4, INIT_LEVEL4);
----


Et ça affiche au boot :
(Init module ocaml_asmrun...Toto called from ocaml code
Ok)

:)

Bon, c'est strictement inutile et j'ai du hacker à mort le runtime ocaml
pour que ça compile et link : pas d'I/O, pas de float, les opérations
sur les int64 ne sont plus natives et ne marchent plus et j'en oublie.

Qui plus est, le runtime d'OCaml n'est pas du tout adapté à l'exécution
concurrente (il y a des gros verrous autour du GC), mais bon, ça prouve
que c'est possible.

À partir de maintenant, on peut essayer d'améliorer le code pour accéder
à plus de fonctionnalités de KOS (par ex. accéder aux IRQ), pour avoir
une meilleur intégration du GC avec les ressources de KOS, etc, voire
même modifier le runtime pour améliorer le parallélisme. Mais je ne suis
pas sur que ça en vaille la peine. :)

Si jamais quelqu'un veut le code, il n'a qu'à demander (le code d'OCaml
est sous LGPL).

Amicalement,
d.
-- 
pub  1024D/A3AD7A2A 2004-10-03 David MENTRE <dmentre at linux-france.org>
 5996 CC46 4612 9CA4 3562  D7AC 6C67 9E96 A3AD 7A2A



More information about the Kos-dev mailing list