FFI(3) BSD Library Functions Manual FFI(3)NAME
FFI -- Foreign Function Interface
LIBRARY
libffi, -lffi
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);
ffi_status
ffi_prep_closure(ffi_closure *closure, ffi_cif *cif, void (*fun)(ffi_cif*,void*,void**,void*), void *user_data);
void
ffi_call(ffi_cif *cif, void (*fn)(void), void *rvalue, void **avalue);
DESCRIPTION
The foreign function interface provides a mechanism by which a function can generate a call to another function at runtime without requiring
knowledge of the called function's interface at compile time.
SEE ALSO ffi_prep_cif(3), ffi_prep_closure(3), ffi_call(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/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(long) or larger. For smaller return value sizes, the ffi_arg or ffi_sarg integral type must be
used to hold the return value.
EXAMPLES
#define MACOSX // for fficonfig.h on Darwin
#include <ffi/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)Darwin July 20, 2007 Darwin
Im trying to replace every line
line1
line2
line3
with:
line1
extraline1
line2
extraline2
line3
extraline3
with about 10 extra lines
I am able to add axtra lines with: (17 Replies)
Hello,
We have a directory with 15 sub-directories where each sub-directory contains 1.5 to 2 lakhs of files in it. Daily, around 300-500 files will be uploaded to each sub-directory.
Now, i need to get the list of files received today in most efficient way. I tried using "find with newer... (16 Replies)
Hi,
i have 2 files each with 200K lines. Each line contains a number. Now, i need to get the list of numbers existing in one fine and NOT in other file. I'm doing this by reading each number from 1 file and grepping on other file. But this taking LOT of time. Is there any efficient way of doing... (14 Replies)
Every day i ftp tar.gz a file from the production server to a back up machine.. This task creates way to much traffic on the network at the end of the day and puts and undo load on the production machine during operation hours. i would like to create a script that would automatically fire off the... (36 Replies)
hi all
I am new to unix and want to create a loop to repeat the loop and before that it ask me to do so.I know "while" may help but I put it in my work and getting stuk with it.any help appreciated. (13 Replies)
Hi,
I've got a query regarding which of the following is more efficient & why -
cat <filename>|cut -d'*' -f2- > <newfilename>
or
cut -d'*' -f2- <filename> > <newfilename>
Thanks. (17 Replies)
I don't know if this is a big issue or not, but I'm having difficulties. I apoligize for the upcoming essay :o.
I'm writing a script, similar to a paint program that edits images, but in the form of ANSI block characters. The program so far is working. I managed to save the image into a file,... (14 Replies)
I have a LAN for users 192.0.3.0
I have a WAN for servers 192.0.0.0
I have a iptables capable router with a static route from 192.0.3.0 to 192.0.0.0
my problem is SMB file sharing traffic is leaking on to our 192.0.0.0 and causing congestion. I only have one printer IP address that needs... (13 Replies)
Hi,
I have an XML file with around 1 billion rows in it and i am trying to find the number of times a particular tag occurs in it. The solution i am using works but takes a lot of time (~1 hr) .Please help me with an efficient way to do this.
Lets say the input file is
<Root>
... (13 Replies)
Hi all,
I am working on a software, which was developed using C programming on unix environment. I have added certain functionality to the software.
Now, I interested in measuring time taken by new functionality (Mean value of huge amount of tests). Since new function will be part of many... (14 Replies)
I have an awk parser, that works great if the data is NC_0000 (four digits), but if it is not that then the data is parsed. I'm not sure the most efficient way to obtain the desired output. Thank you :).
Code:
awk 'FNR > 1 && match($0, /NC_0000(*)\..*g\.(+)(.)>(.)/, a){ print a, a, a, a, a }'... (14 Replies)
I just learning shell script. Need your shell script expertise to help me. I would like to stemming the words by matching the root words first between both files and replace all words by "I" character but replace "B" character after root words and "E" before root words in affix_words.txt.
... (18 Replies)
I have not been able to append the contents of many files into one file. I have executed the CAT command shown below separately substituting an actual path and file name for the array variable to verify that I have the syntax correct. The bottom line - nothing is happening with CAT. I am running... (16 Replies)
My son does homework on a school laptop. I was thinking about setting up a gateway on my home network, so that I can monitor web traffic and know if he is doing his homework without standing over his shoulder. Ideally I would like to use the Raspberry Pi Model b that I already have. However, I... (15 Replies)