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/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
Manufacturer Links
General Information
Home Page: IBM United States
Documentation/Information: IBM System p - UNIX servers: Support and services
pSeries and AIX Information Center
Developerworks AIX Wiki: AIX Wiki
AIX for System Administrators
In-depth information from IBM:
IBM... (0 Replies)
Not sure if anyone is interested but I am just getting into UNIX like shell scripting...
I have great interest in pseudo-animations in text mode and accessing HW like /dev/dsp for example...
...
Have fun, I do... ;o)
# !/bin/sh
#
# Bargraph_Generator.sh
#
# A DEMO 6 bit coloured... (0 Replies)
For a starter I know the braces are NOT in the code...
Consider these code snippets:-
#!/bin/bash --posix
x=0
somefunction()
if
then
echo "I am here."
fi
# somefunction
#!/bin/bash --posix
x=0
somefunction()
if (2 Replies)
For those interested in installing dash shell on OSX Lion to help test POSIX compliancy of shell scripts, it is quite easy. I did it like this:
If you don't have gcc on your system:
0. Download and install the Command Line Tools for Xcode package from Sign In - Apple *
1. Download the dash... (2 Replies)
Hearing Aid...
Hi folks yet another bizarre piece of code that is Apple OSX 10.12.x to at least 10.14.1 specific.
It requires only a default OSX install, and the internal microphone along with an external headphone assembly.
Pre-amble, 14-02-2019:
For over 3 weeks now I have been suffering a... (3 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)
Greetings,
I'm trying to delete a file with a weird name from within Terminal on a Mac.
It's a very old file (1992) with null characters in the name: ââWord FinderÂŽ Plusâ˘.
Here are some examples of what I've tried:
12FX009:5 dpontius$ ls
ââWord FinderÂŽ Plusâ˘
12FX009:5 dpontius$ rm... (29 Replies)
I have to print the number of stars that increases on each line from the minimum number until it reaches the maximum number, and then decreases until it goes back to the minimum number. After printing out the lines of stars, it should also print the total number of stars printed.
I have tried... (13 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)
Well, guys I saw a question about GOTO for Python.
So this gave me the inspiration to attempt a GOTO function for 'dash', (bash and ksh too).
Machine: MBP OSX 10.14.3, default bash terminal, calling '#!/usr/local/bin/dash'...
This is purely a fun project to see if it is possible in PURE... (3 Replies)
I am sharing a code snippet.
for (( i=0; i<=$(( $count -1 )); i++ ))
do
first=${barr2}
search=${barr1}
echo $first
echo "loop begins"
for (( j=0; j<=5000; j++ ))
do
if } == $search ]]; then
echo $j
break;
fi
done
second=${harr2}
echo $second (2 Replies)
Hi All,
I'm having a python script: test.py in /path/to/script/test.py
I'm using a properties file: test_properties.py (it is having values as dictionary{}) which is in same DIR as the script.
Sample Properties file:
params = {
'target_db' : 'a1_db'
'src_db' : ... (15 Replies)