Index: parmap.ml --- parmap.ml.orig +++ parmap.ml @@ -109,7 +109,8 @@ let redirect ?(path = (Printf.sprintf "/tmp/.parmap.%d (* unmarshal from a mmap seen as a bigarray *) let unmarshal fd = let a = - Bigarray.Array1.map_file fd Bigarray.char Bigarray.c_layout true (-1) in + Bigarray.array1_of_genarray @@ + Unix.map_file fd Bigarray.char Bigarray.c_layout true [|~-1|] in let res = Bytearray.unmarshal a 0 in Unix.close fd; res @@ -124,8 +125,9 @@ let unmarshal fd = - on Linux kernels, we might allocate a mmapped memory area of huge_size and marshal into it directly - let ba = Bigarray.Array1.map_file - fd Bigarray.char Bigarray.c_layout true huge_size in + let ba = + Bigarray.array1_of_genarray @@ + Unix.map_file fd Bigarray.char Bigarray.c_layout true huge_size in ignore(Bytearray.marshal_to_buffer ba 0 v [Marshal.Closures]); Unix.close fd @@ -624,7 +626,8 @@ let init_shared_buffer a = let size = Array.length a in let fd = Utils.tempfd() in let arr = - Bigarray.Array1.map_file fd Bigarray.float64 Bigarray.c_layout true size in + Bigarray.array1_of_genarray @@ + Unix.map_file fd Bigarray.float64 Bigarray.c_layout true [|size|] in (* The mmap() function shall add an extra reference to the file associated with the file descriptor fildes which is not removed by a subsequent