Linux and UNIX Man Pages

Linux & Unix Commands - Search Man Pages

ffi_prep_cif(3) [osx 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/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
Man Page

13 More Discussions You Might Find Interesting

1. AIX

AIX Links

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)
Discussion started by: Perderabo
0 Replies

2. OS X (Apple)

Mac OS X: Based on UNIX - Solid As a Rock

See this threads: Page Not Found - Apple Open Source - Apple (0 Replies)
Discussion started by: Neo
0 Replies

3. Shell Programming and Scripting

At A Glance Coloured Real Time Bargraph Generator...

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)
Discussion started by: wisecracker
0 Replies

4. UNIX for Advanced & Expert Users

When is a _function_ not a _function_?

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)
Discussion started by: wisecracker
2 Replies

5. OS X (Apple)

Installing Dash Shell on OS X Lion

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)
Discussion started by: Scrutinizer
2 Replies

6. OS X (Apple)

Hearing Aid for OSX 10.12.x and greater.

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)
Discussion started by: wisecracker
3 Replies

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

8. OS X (Apple)

Undeletable file

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)
Discussion started by: dpontius
29 Replies

9. Shell Programming and Scripting

To print diamond asterisk pattern based on inputs

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)
Discussion started by: rohit_shinez
13 Replies

10. 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

11. Shell Programming and Scripting

A dash to GOTO or a dash from GOTO, that is the question...

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)
Discussion started by: wisecracker
3 Replies

12. Shell Programming and Scripting

Syntax error in subtraction in Bash

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)
Discussion started by: ngabrani
2 Replies

13. Shell Programming and Scripting

Python: Refer a properties file from different location

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)
Discussion started by: saps19
15 Replies