Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ffi_prep_cif(3) [mojave man page]

ffi_prep_cif(3) 					   BSD Library Functions Manual 					   ffi_prep_cif(3)

NAME
ffi_prep_cif -- Prepare a ffi_cif structure for use with ffi_call or ffi_prep_closure. SYNOPSIS
#include <ffi/ffi.h> ffi_status ffi_prep_cif(ffi_cif *cif, ffi_abi abi, unsigned int nargs, ffi_type *rtype, ffi_type **atypes); DESCRIPTION
The ffi_prep_cif function prepares a ffi_cif structure for use with ffi_call or ffi_prep_closure. abi specifies a set of calling conventions to use. atypes is an array of nargs pointers to ffi_type structs that describe the data type, size and alignment of each argument. rtype points to an ffi_type that describes the data type, size and alignment of the return value. RETURN VALUES
Upon successful completion, ffi_prep_cif returns FFI_OK. It will return FFI_BAD_TYPEDEF if cif is NULL or atypes or rtype is malformed. If abi does not refer to a valid ABI, FFI_BAD_ABI will be returned. Available ABIs are defined in <ffi/ppc-ffitarget.h> and <ffi/x86-ffitarget.h>. SEE ALSO
ffi(3), ffi_call(3), ffi_prep_closure(3) Darwin July 20, 2007 Darwin

Check Out this Related Man Page

ffi_call(3)						   BSD Library Functions Manual 					       ffi_call(3)

NAME
ffi_call -- Invoke a foreign function. SYNOPSIS
#include <ffi.h> void ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue); DESCRIPTION
The ffi_call function provides a simple mechanism for invoking a function without requiring knowledge of the function's interface at compile time. fn is called with the values retrieved from the pointers in the avalue array. The return value from fn is placed in storage pointed to by rvalue. cif contains information describing the data types, sizes and alignments of the arguments to and return value from fn, and must be initialized with ffi_prep_cif before it is used with ffi_call. rvalue must point to storage that is sizeof(ffi_arg) or larger for non-floating point types. For smaller-sized return value types, the ffi_arg or ffi_sarg integral type must be used to hold the return value. EXAMPLES
#include <ffi.h> #include <stdio.h> unsigned char foo(unsigned int, float); int main(int argc, const char **argv) { ffi_cif cif; ffi_type *arg_types[2]; void *arg_values[2]; ffi_status status; // Because the return value from foo() is smaller than sizeof(long), it // must be passed as ffi_arg or ffi_sarg. ffi_arg result; // Specify the data type of each argument. Available types are defined // in <ffi/ffi.h>. arg_types[0] = &ffi_type_uint; arg_types[1] = &ffi_type_float; // Prepare the ffi_cif structure. if ((status = ffi_prep_cif(&cif, FFI_DEFAULT_ABI, 2, &ffi_type_uint8, arg_types)) != FFI_OK) { // Handle the ffi_status error. } // Specify the values of each argument. unsigned int arg1 = 42; float arg2 = 5.1; arg_values[0] = &arg1; arg_values[1] = &arg2; // Invoke the function. ffi_call(&cif, FFI_FN(foo), &result, arg_values); // The ffi_arg 'result' now contains the unsigned char returned from foo(), // which can be accessed by a typecast. printf("result is %hhu", (unsigned char)result); return 0; } // The target function. unsigned char foo(unsigned int x, float y) { unsigned char result = x - y; return result; } SEE ALSO
ffi(3), ffi_prep_cif(3) February 15, 2008
Man Page

11 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Split large xml into mutiple files and with header and footer in file

Split large xml into mutiple files and with header and footer in file tried below it splits unevenly and also i need help in adding header and footer command : csplit -s -k -f my_XML_split.xml extrfile.xml "/<Document>/" {1} sample xml <?xml version="1.0" encoding="UTF-8"?><Recipient>... (36 Replies)
Discussion started by: karthik
36 Replies

2. What is on Your Mind?

Instructions to Clear Data Cache in Safari, Chrome, Firefox, Opera Browsers (Pictures)

Here are instructions to clear the data cache for four browsers, Safari, Chrome, Firefox, Opera. In these examples I'm using MacOS Mojave, but it should be similar for any OS. You can use these instructions to to clear and reload the cache if you have any issues with the Vue.js UserCP (current... (1 Reply)
Discussion started by: Neo
1 Replies

3. OS X (Apple)

12-Core MacPro (2013) kernel_task over 1200%

Yesterday someone asked me to install TeamViewer and share my Mac screen with them while on a conference call. I shut down my Mac before sleeping and woke up to some major problem with my 12-core CPU in hyperdrive, and the system activity monitor showed my Mac kernel_task was at 1,200% and the... (30 Replies)
Discussion started by: Neo
30 Replies

4. UNIX for Advanced & Expert Users

Shopt -s histappend

What is the point of this? Whenever I close my shell it appends to the history file without adding this. I have never seen it overwrite my history file. # When the shell exits, append to the history file instead of overwriting it shopt -s histappend (3 Replies)
Discussion started by: cokedude
3 Replies

5. UNIX for Beginners Questions & Answers

Cannot extract libraries using sed

Hi, I am attempting to extract the /lib/ paths using sed but it does not appear to work. ./copy_chroot_lib.sh ls echo | sed s#*\(/lib\).*#\1#g linux-vdso.so.1 (0x00007fff77df1000) libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f28190ac000) ... (8 Replies)
Discussion started by: sand1234
8 Replies

6. UNIX for Beginners Questions & Answers

UNIX tool on MacOS that can increase resolution of a file

hi, I am searching for a native tool on MacOS that can increase the resolution of a group of image files whose aspect ratios (file width versus height) vary widely. There are numerous files so I don't wish to do this manually. Someone suggested the sips command with the resampling option but... (5 Replies)
Discussion started by: Godtookapicture
5 Replies

7. Shell Programming and Scripting

Controlling user input

I'm trying to use a bash script for a psych experiment that involves listening to sound files and responding. If I have something like the code below, how can I make sure that a key press is assigned to RESPONSE only after the second echo statement? for i in 1 2 3; do echo "Ready?" sleep 2 ... (10 Replies)
Discussion started by: darwin_886
10 Replies

8. Programming

My first PERL incarnation... Audio Oscillograph

Hi all... Well guys and gals, I jumped in at the deep end and found things that PERL cannot do by default. Many tricky terminal escape codes are not catered for so I had to create workarounds. One thing I searched for was this: Passing perl variable to shell command AND, @Neo this was... (15 Replies)
Discussion started by: wisecracker
15 Replies

9. News, Links, Events and Announcements

Python 3.8.0rc1 released.

Python 3.8.0rc1 released today, 1st October 2019... Just tried it out testing my AMIGA Python 1.4.0 code inside it and all are working, I can now test to the latest Python incarnation now. Subjective opinion is that is seems seriously quick on my OSX 10.14.6, latest Mojave update. Python... (0 Replies)
Discussion started by: wisecracker
0 Replies

10. UNIX for Beginners Questions & Answers

[BASH] eval command not expanding variables as expected.

Hi Guys, I wrote a collection of bash functions years ago and now need to use them again but I'm getting some error messages when eval tries to expand the variables names. I recollect that I used the shopt command to set one of the options but I can't quite remember the command that I... (8 Replies)
Discussion started by: ASGR
8 Replies

11. OS X (Apple)

How can I direct messages from mac console.app to a log file?

I'm trying to complete a bash script to capture if an external webcam is active in a video conference session. Some users will switch the camera to the built-in MAC camera. When this happens I want to trigger a set of events. Things tried: reviewed the console.app to look for patterns on when... (6 Replies)
Discussion started by: dallas88
6 Replies