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
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
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)