You called
  b = unsafe_load(b_)
but b_::Ptr{Void}

On Mon, Aug 4, 2014 at 10:34 PM, Gerry Weaver <[email protected]> wrote:

> Hi Stefan,
>
> Holy crap! I apologize for the late night retardation. I pasted in some of
> the code from the docs to kind of start over and neglected to tweak
> everything. Anyway, here is the hopefully more correct version. Specifying
> the return type got me past the initial problem, but I'm getting some grief
> from ccall now in the form of to following:
>
> ERROR: pointerref: invalid pointer type
>  in init_func at /build/compvia/src/pqvm/service_test.jl:17
> while loading /build/compvia/src/pqvm/service_test.jl, in expression
> starting on line 42
>
>
> #typedef int (*pq_service_handler)(int *exit_flag, void *user_data);
>
> #int pq_service_create (const char *name,
> #                       const char *desc,
> #                       pq_service_handler init_func,
> #                       pq_service_handler service_func,
> #                       void *user_data);
>
>
>
>
> function init_func{Cint}(a_::Ptr{Cint}, b_::Ptr{Void})
>
>   a = unsafe_load(a_)
>   b = unsafe_load(b_)
>
>   return convert(Cint, 0)
>
> end
>
> const init_func_c = cfunction(init_func, Cint, (Ptr{Cint}, Ptr{Void}))
>
> function service_func{Cint}(a_::Ptr{Cint}, b_::Ptr{Void})
>
>   a = unsafe_load(a_)
>   b = unsafe_load(b_)
>
>   while a == 0
>     sleep(1)
>   end
>
>   return convert(Cint, 0)
>
> end
>
> const service_func_c = cfunction(service_func, Cint, (Ptr{Cint},
> Ptr{Void}))
>
>
> ccall((:pq_service_create,
> "/build/compvia/x86_linux_64/pqvm/libservice.so"),
>       Cint,
>       (Ptr{Uint8}, Ptr{Uint8}, Ptr{Void}, Ptr{Void}, Ptr{Void}),
>       "test_service", "test_service", init_func_c, service_func_c, C_NULL)
>
> Thanks,
> -G
>
>
>
>
>

Reply via email to