From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.1.3 (2006-06-01) on yquem.inria.fr X-Spam-Level: X-Spam-Status: No, score=0.0 required=5.0 tests=none autolearn=disabled version=3.1.3 Received: from mail4-relais-sop.national.inria.fr (mail4-relais-sop.national.inria.fr [192.134.164.105]) by yquem.inria.fr (Postfix) with ESMTP id BF73DBC69 for ; Mon, 14 Jan 2008 14:20:44 +0100 (CET) X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AgAAAIvwikfB/BYfhWdsb2JhbACQCgEBAQgEBg8TB5dIghU X-IronPort-AV: E=Sophos;i="4.24,282,1196636400"; d="scan'208";a="21206263" Received: from smtp20.orange.fr ([193.252.22.31]) by mail4-smtp-sop.national.inria.fr with ESMTP; 14 Jan 2008 14:20:43 +0100 Received: from me-wanadoo.net (localhost [127.0.0.1]) by mwinf2022.orange.fr (SMTP Server) with ESMTP id 891581C005C6 for ; Mon, 14 Jan 2008 14:19:22 +0100 (CET) Received: from [192.168.1.5] (ASt-Lambert-152-1-6-59.w82-124.abo.wanadoo.fr [82.124.36.59]) by mwinf2022.orange.fr (SMTP Server) with ESMTP id 4F5B21C000BD for ; Mon, 14 Jan 2008 14:19:22 +0100 (CET) X-ME-UUID: 20080114131922325.4F5B21C000BD@mwinf2022.orange.fr Message-ID: <478B6292.3030208@pragmadev.com> Date: Mon, 14 Jan 2008 14:24:34 +0100 From: David LONY Organization: PRAGMADEV User-Agent: Thunderbird 1.5.0.9 (Windows/20061207) MIME-Version: 1.0 To: caml-list@yquem.inria.fr Subject: Re: [Caml-list] Multiboot problem References: <478B335F.4050804@pragmadev.com> In-Reply-To: <478B335F.4050804@pragmadev.com> Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 8bit X-Spam: no; 0.00; malloc:01 ocaml:01 ocaml:01 libc:01 pointer:01 statically:01 mlvalues:01 argv:01 argv:01 freezes:01 implements:01 beginner's:01 bug:01 char:01 char:01 Does anyone can explain to me how the function caml_startup works ? Does it relies on malloc or free function or any functions of the C library ? I've tried to look for an explanation on the Ocaml manual but I found nothing... Regards. David LONY David LONY a écrit : > Hi all, > > I'm currently trying to make a multiboot sector with ocaml code. > Unfortunately, it doesn't work bu I don't know why... > To do that, I made a small program in ocaml : > > let test_char a = a+1 > let _ = Callback.register "caml_test_char" test_char;; > > I also made a dummy libc (all functions return 0 or NULL pointer) > because I have to provide all these functions if a wants to statically > link a C objects.. > This is my main file with the entry point of the kernel : > > /* Include definitions of the multiboot standard */ > #include > #include > #include > #include > > /* This is the entry point of the kernel */ > void sos_main(unsigned long magic, unsigned long addr) > { > static char * argv[]={ "ocaml", NULL }; > > multiboot_info_t *mbi; > > /* Retrieve grub information (memory...etc) */ > mbi = (multiboot_info_t *) addr; > > caml_startup(argv); > > /* Clean the screen and put a 'A' on it */ > sos_x86_videomem_setup(); > sos_x86_videomem_cls(SOS_X86_VIDEO_BG_BLACK); > sos_x86_videomem_putchar(1, 0, SOS_X86_VIDEO_FG_WHITE | > SOS_X86_VIDEO_BG_BLACK,'A'); > > /* An operatig system never ends */ > for (;;) > continue; > > return; > } > > > But qemu freezes when I call the caml_startup function (If I removed > it, it works well...)...Perhaps the caml_startup function relies on C > function that I don't implements ? > If someone have an idea.... Because I must call this function > (caml_startup) in order to call my ocaml function (test_char)... > > > Thanks a lot. > Regards, > David LONY > > > _______________________________________________ > Caml-list mailing list. Subscription management: > http://yquem.inria.fr/cgi-bin/mailman/listinfo/caml-list > Archives: http://caml.inria.fr > Beginner's list: http://groups.yahoo.com/group/ocaml_beginners > Bug reports: http://caml.inria.fr/bin/caml-bugs > >