1*1fd5a2e1SPrashanth Swaminathan.Dd January 25, 2011 2*1fd5a2e1SPrashanth Swaminathan.Dt ffi_prep_cif_var 3 3*1fd5a2e1SPrashanth Swaminathan.Sh NAME 4*1fd5a2e1SPrashanth Swaminathan.Nm ffi_prep_cif_var 5*1fd5a2e1SPrashanth Swaminathan.Nd Prepare a 6*1fd5a2e1SPrashanth Swaminathan.Nm ffi_cif 7*1fd5a2e1SPrashanth Swaminathanstructure for use with 8*1fd5a2e1SPrashanth Swaminathan.Nm ffi_call 9*1fd5a2e1SPrashanth Swaminathanfor variadic functions. 10*1fd5a2e1SPrashanth Swaminathan.Sh SYNOPSIS 11*1fd5a2e1SPrashanth Swaminathan.In ffi.h 12*1fd5a2e1SPrashanth Swaminathan.Ft ffi_status 13*1fd5a2e1SPrashanth Swaminathan.Fo ffi_prep_cif_var 14*1fd5a2e1SPrashanth Swaminathan.Fa "ffi_cif *cif" 15*1fd5a2e1SPrashanth Swaminathan.Fa "ffi_abi abi" 16*1fd5a2e1SPrashanth Swaminathan.Fa "unsigned int nfixedargs" 17*1fd5a2e1SPrashanth Swaminathan.Fa "unsigned int ntotalargs" 18*1fd5a2e1SPrashanth Swaminathan.Fa "ffi_type *rtype" 19*1fd5a2e1SPrashanth Swaminathan.Fa "ffi_type **atypes" 20*1fd5a2e1SPrashanth Swaminathan.Fc 21*1fd5a2e1SPrashanth Swaminathan.Sh DESCRIPTION 22*1fd5a2e1SPrashanth SwaminathanThe 23*1fd5a2e1SPrashanth Swaminathan.Nm ffi_prep_cif_var 24*1fd5a2e1SPrashanth Swaminathanfunction prepares a 25*1fd5a2e1SPrashanth Swaminathan.Nm ffi_cif 26*1fd5a2e1SPrashanth Swaminathanstructure for use with 27*1fd5a2e1SPrashanth Swaminathan.Nm ffi_call 28*1fd5a2e1SPrashanth Swaminathanfor variadic functions. 29*1fd5a2e1SPrashanth Swaminathan.Fa abi 30*1fd5a2e1SPrashanth Swaminathanspecifies a set of calling conventions to use. 31*1fd5a2e1SPrashanth Swaminathan.Fa atypes 32*1fd5a2e1SPrashanth Swaminathanis an array of 33*1fd5a2e1SPrashanth Swaminathan.Fa ntotalargs 34*1fd5a2e1SPrashanth Swaminathanpointers to 35*1fd5a2e1SPrashanth Swaminathan.Nm ffi_type 36*1fd5a2e1SPrashanth Swaminathanstructs that describe the data type, size and alignment of each argument. 37*1fd5a2e1SPrashanth Swaminathan.Fa rtype 38*1fd5a2e1SPrashanth Swaminathanpoints to an 39*1fd5a2e1SPrashanth Swaminathan.Nm ffi_type 40*1fd5a2e1SPrashanth Swaminathanthat describes the data type, size and alignment of the 41*1fd5a2e1SPrashanth Swaminathanreturn value. 42*1fd5a2e1SPrashanth Swaminathan.Fa nfixedargs 43*1fd5a2e1SPrashanth Swaminathanmust contain the number of fixed (non-variadic) arguments. 44*1fd5a2e1SPrashanth SwaminathanNote that to call a non-variadic function 45*1fd5a2e1SPrashanth Swaminathan.Nm ffi_prep_cif 46*1fd5a2e1SPrashanth Swaminathanmust be used. 47*1fd5a2e1SPrashanth Swaminathan.Sh RETURN VALUES 48*1fd5a2e1SPrashanth SwaminathanUpon successful completion, 49*1fd5a2e1SPrashanth Swaminathan.Nm ffi_prep_cif_var 50*1fd5a2e1SPrashanth Swaminathanreturns 51*1fd5a2e1SPrashanth Swaminathan.Nm FFI_OK . 52*1fd5a2e1SPrashanth SwaminathanIt will return 53*1fd5a2e1SPrashanth Swaminathan.Nm FFI_BAD_TYPEDEF 54*1fd5a2e1SPrashanth Swaminathanif 55*1fd5a2e1SPrashanth Swaminathan.Fa cif 56*1fd5a2e1SPrashanth Swaminathanis 57*1fd5a2e1SPrashanth Swaminathan.Nm NULL 58*1fd5a2e1SPrashanth Swaminathanor 59*1fd5a2e1SPrashanth Swaminathan.Fa atypes 60*1fd5a2e1SPrashanth Swaminathanor 61*1fd5a2e1SPrashanth Swaminathan.Fa rtype 62*1fd5a2e1SPrashanth Swaminathanis malformed. If 63*1fd5a2e1SPrashanth Swaminathan.Fa abi 64*1fd5a2e1SPrashanth Swaminathandoes not refer to a valid ABI, 65*1fd5a2e1SPrashanth Swaminathan.Nm FFI_BAD_ABI 66*1fd5a2e1SPrashanth Swaminathanwill be returned. Available ABIs are 67*1fd5a2e1SPrashanth Swaminathandefined in 68*1fd5a2e1SPrashanth Swaminathan.Nm <ffitarget.h> 69*1fd5a2e1SPrashanth Swaminathan. 70*1fd5a2e1SPrashanth Swaminathan.Sh SEE ALSO 71*1fd5a2e1SPrashanth Swaminathan.Xr ffi 3 , 72*1fd5a2e1SPrashanth Swaminathan.Xr ffi_call 3 , 73*1fd5a2e1SPrashanth Swaminathan.Xr ffi_prep_cif 3 74