Browse thread
[Caml-list] Toplevel crashes when trying to call external functions
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
| Date: | -- (:) |
| From: | art yerkes <ayerkes@s...> |
| Subject: | Re: [Caml-list] Toplevel crashes when trying to call external functions |
On Sat, 10 Jul 2004 18:20:47 -0700 (PDT)
Andy Yang <yyu08@yahoo.com> wrote:
> Hi, all
>
> I am relatively new to Ocaml. Sorry about the spam if
> this is a trivial problem. I am trying to give call
> some external functions.
>
> Some codes are as follows:
>
> value zchaff_InitManager(void)
> {
> CAMLparam0();
> void * solver = SAT_InitManager();
> value val = alloc(1, Custom_tag);
> Int32_val(val) = (int) solver;
> CAMLreturn ( val );
> }
>
> void zchaff_ReadCnf(value mng, value filename)
> {
> CAMLparam2(mng, filename);
> void* solver = (void*)Int32_val(mng);
> char * fn = String_val(filename);
> read_cnf(solver, fn);
> CAMLreturn0;
> }
>
These may not solve this specific problem but I think they are good
advice:
First:
17.9.2. Custom blocks must be allocated via the alloc_custom function.
(And remember that the custom block size argument is in bytes).
Second:
Passing 1 as the block size to alloc allocates a block with one word
as a tail (at offset 0), but Data_custom_val accesses a value in the
tail at offset 1. This is probably the error you're looking for.
Third:
I don't understand why you're going through Int32_val and Val_int32
to get and set your pointer. You probably want to write a new macro
that will access the custom area as a pointer-sized chunk on every
architecture. Assuming pointers to be 32-bits really is a bad idea.
--
Hey, Adam Smith, keep your invisible hands to yourself!
-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners