A worrisome (to me) issue with the volk library is the use of
posix_memalign() in the qa tests. The worry is:
* posix_memalign() will never work on Windows with Microsoft's runtime
library *
That means that code that uses posix_memalign won't work on Windows with
MinGW or Microsoft native compilers. (The problem is not that memory
alignment is difficult; it is simply that there is no memory-aligned version
of malloc() in the Microsoft API that works with free().)
At present, posix_memalign is used in GNU Radio in machine-dependent code
(gcell, altivec, and arm7) and in the volk qa tests. If we can replace it
in volk and avoid its spread, we can continue to use GNU Radio on Windows.
One option is to use something like malloc16Align/free16Align (in
malloc16.{h,c}) in gnuradio-core. Can we structure the code to make this
available in volk, and anywhere else it is needed? We can add a version to
do more general alignment if needed. Would it help to wrap aligned buffers
in a C++ class to make it easier to catch errors (such as using free() on a
malloc16Align() buffer)?
Note that simply enhancing our own missing/posix_memalign function using
_mingw_aligned_malloc() or Microsofts's _aligned_malloc() won't work because
memory allocated with those cannot be released with free().
Trying not to cause too much trouble,
-- Don W.
_______________________________________________
Discuss-gnuradio mailing list
Discuss-gnuradio@gnu.org
http://lists.gnu.org/mailman/listinfo/discuss-gnuradio