Hello again, I forgot something, as uv-idle-start takes a pointer as its second argument the function must be called with like so: (uv-idle-start idler-ref (location wait_for_a_while))
cheers, Richard Richard writes: > Hello Omar, > > The problem with your code is that wait-for-a-while must be declared as > an external function; like so: > > (define-external > (wait_for_a_while ((c-pointer uv-idle-t) handle)) > void > (let lp ((counter 0)) > (if (>= counter 10000000) > (uv-idle-stop handle) > (lp (+ counter 1))))) > > note that the name of the function must be a valid C function name, so > it cannot be dash-seperated. Also looking at the libub documentation, > the callback did not have a status argument. > > An external function that is going to call such a callback function must > be declared using 'foreign-safe-lambda' instead of > 'foreign-lambda'. Thus uv-run must be declared as such: > > (define uv-run > (foreign-safe-lambda int "uv_run" (c-pointer uv-loop-t) int)) > > Hope this helps and good luck, > Richard > > > [email protected] writes: > >> Hello, >> >> I need some help getting started with ffi. >> >> I am attempting to bind libuv to scheme code. >> >> My chicken scheme code at http://pastebin.com/bwja0yet fails with the >> following error. >> >> The following code fails with the following: >> >> Error: bad argument count - received 152135942 but expected 2: 0 >> >> Call history: >> >> uv.scm:33: uv-default-loop >> uv.scm:33: uv-idle-init >> uv.scm:34: uv-idle-start >> uv.scm:36: uv-default-loop >> uv.scm:36: uv-run <-- >> >> >> I am attempting to port the following C code. >> >> http://pastebin.com/63gP8HFT >> >> - Omar >> >> _______________________________________________ >> Chicken-users mailing list >> [email protected] >> https://lists.nongnu.org/mailman/listinfo/chicken-users -- _______________________________________________ Chicken-users mailing list [email protected] https://lists.nongnu.org/mailman/listinfo/chicken-users
