16 printf(
"%d %d: %d\n", a1, a2, result);
23 void *data __UNUSED__)
27 a1 = *(
signed short *)avals[0];
28 a2 = *(
signed short *)avals[1];
34 typedef signed short (*
test_type)(
signed short,
signed short);
40 ffi_closure *pcl = ffi_closure_alloc(
sizeof(ffi_closure), &code);
42 ffi_type * cl_arg_types[3];
44 unsigned short a, b, res_closure;
53 cl_arg_types[0] = &ffi_type_sshort;
54 cl_arg_types[1] = &ffi_type_sshort;
55 cl_arg_types[2] =
NULL;
59 &ffi_type_sshort, cl_arg_types) == FFI_OK);
63 printf(
"res: %d\n", (
unsigned short)res_call);
68 res_closure = (*((
test_type)code))(2, 32765);
70 printf(
"res: %d\n", res_closure);
signed short test_func_fn(signed short a1, signed short a2)
static void test_func_gn(ffi_cif *cif __UNUSED__, void *rval, void **avals, void *data __UNUSED__)
ffi_status ffi_prep_closure_loc(ffi_closure *closure, ffi_cif *cif, void(*fun)(ffi_cif *, void *, void **, void *), void *user_data, void *codeloc)
signed short(* test_type)(signed short, signed short)
void ffi_call(ffi_cif *cif, void(*fn)(void), void *rvalue, void **avalue)
ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes)