Я хочу передать буфер сетевого пакета в C. Я уже понял, как это сделать для простых типов OCaml, но я не знаю, как передать буфер из этой библиотеки CStruct.
Используемая мной библиотека использует https://github.com/mirage/ocaml-cstruct который я не знаю почему, но похоже, что он имитирует структуру C, поэтому я думаю, что это должно быть легко передать как буфер в C.
Вот как в моем коде создается буфер:
let buf = Cstruct.create size in
Если мы посмотрим на его код, он вызывает https://github.com/mirage/ocaml-cstruct/blob/master/lib/cstruct.ml#L98
let buffer = Bigarray_compat.(Array1.create char c_layout len) in
{ buffer ; len ; off = 0 }
Для последней версии OCaml Bigarray - это просто стандартная библиотека Bigarray, это просто модуль, который
include Stdlib.Bigarray
Я не мог Вы не найдете ничего о передаче большого массива в C в качестве указателя, который можно прочитать.