summaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authorAnthony Green <green@moxielogic.com>2011-11-12 17:22:24 -0500
committerAnthony Green <green@moxielogic.com>2011-11-12 17:22:24 -0500
commit4f17e1f142e805b13959ba2594ee735eae439f4e (patch)
tree60c0f51d422aa03184965a54efbc06b7605dc459 /doc
parentff9454da44859716a5bd4eaa344499288c79694f (diff)
downloadlibffi-4f17e1f142e805b13959ba2594ee735eae439f4e.tar.gz
Fix last patch
Diffstat (limited to 'doc')
-rw-r--r--doc/libffi.info74
-rw-r--r--doc/libffi.texi4
2 files changed, 50 insertions, 28 deletions
diff --git a/doc/libffi.info b/doc/libffi.info
index c0fb005..402f760 100644
--- a/doc/libffi.info
+++ b/doc/libffi.info
@@ -1,10 +1,10 @@
-This is /home/green/libffi/doc/libffi.info, produced by makeinfo
-version 4.13 from /home/green/libffi/doc/libffi.texi.
+This is ../libffi/doc/libffi.info, produced by makeinfo version 4.13
+from ../libffi/doc/libffi.texi.
This manual is for Libffi, a portable foreign-function interface
library.
- Copyright (C) 2008, 2010 Red Hat, Inc.
+ Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License as
@@ -27,7 +27,7 @@ libffi
This manual is for Libffi, a portable foreign-function interface
library.
- Copyright (C) 2008, 2010 Red Hat, Inc.
+ Copyright (C) 2008, 2010, 2011 Red Hat, Inc.
Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU General Public License as
@@ -115,8 +115,6 @@ To prepare a call interface object, use the function `ffi_prep_cif'.
want. *note Multiple ABIs:: for more information.
NARGS is the number of arguments that this function accepts.
- `libffi' does not yet handle varargs functions; see *note Missing
- Features:: for more information.
RTYPE is a pointer to an `ffi_type' structure that describes the
return type of the function. *Note Types::.
@@ -129,6 +127,30 @@ To prepare a call interface object, use the function `ffi_prep_cif'.
properly; `FFI_BAD_TYPEDEF' if one of the `ffi_type' objects is
incorrect; or `FFI_BAD_ABI' if the ABI parameter is invalid.
+ If the function being called is variadic (varargs) then
+`ffi_prep_cif_var' must be used instead of `ffi_prep_cif'.
+
+ -- Function: ffi_status ffi_prep_cif_var (ffi_cif *CIF, ffi_abi
+ varabi, unsigned int NFIXEDARGS, unsigned int varntotalargs,
+ ffi_type *RTYPE, ffi_type **ARGTYPES)
+ This initializes CIF according to the given parameters for a call
+ to a variadic function. In general it's operation is the same as
+ for `ffi_prep_cif' except that:
+
+ NFIXEDARGS is the number of fixed arguments, prior to any variadic
+ arguments. It must be greater than zero.
+
+ NTOTALARGS the total number of arguments, including variadic and
+ fixed arguments.
+
+ Note that, different cif's must be prepped for calls to the same
+ function when different numbers of arguments are passed.
+
+ Also note that a call to `ffi_prep_cif_var' with
+ NFIXEDARGS=NOTOTALARGS is NOT equivalent to a call to
+ `ffi_prep_cif'.
+
+
To call a function using an initialized `ffi_cif', use the
`ffi_call' function:
@@ -511,9 +533,7 @@ File: libffi.info, Node: Missing Features, Next: Index, Prev: Using libffi,
`libffi' is missing a few features. We welcome patches to add support
for these.
- * There is no support for calling varargs functions. This may work
- on some platforms, depending on how the ABI is defined, but it is
- not reliable.
+ * Variadic closures.
* There is no support for bit fields in structures.
@@ -521,6 +541,9 @@ for these.
* The "raw" API is undocumented.
+ Note that variadic support is very new and tested on a relatively
+small number of platforms.
+

File: libffi.info, Node: Index, Prev: Missing Features, Up: Top
@@ -538,11 +561,12 @@ Index
* closure API: The Closure API. (line 13)
* closures: The Closure API. (line 13)
* FFI: Introduction. (line 31)
-* ffi_call: The Basics. (line 41)
+* ffi_call: The Basics. (line 63)
* ffi_closure_alloc: The Closure API. (line 19)
* ffi_closure_free: The Closure API. (line 26)
* FFI_CLOSURES: The Closure API. (line 13)
* ffi_prep_cif: The Basics. (line 16)
+* ffi_prep_cif_var: The Basics. (line 39)
* ffi_prep_closure_loc: The Closure API. (line 34)
* ffi_status <1>: The Closure API. (line 37)
* ffi_status: The Basics. (line 18)
@@ -570,24 +594,24 @@ Index
* ffi_type_void: Primitive Types. (line 10)
* Foreign Function Interface: Introduction. (line 31)
* void <1>: The Closure API. (line 20)
-* void: The Basics. (line 43)
+* void: The Basics. (line 65)

Tag Table:
-Node: Top724
-Node: Introduction1466
-Node: Using libffi3102
-Node: The Basics3588
-Node: Simple Example6374
-Node: Types7401
-Node: Primitive Types7684
-Node: Structures9504
-Node: Type Example10364
-Node: Multiple ABIs11587
-Node: The Closure API11958
-Node: Closure Example14902
-Node: Missing Features16461
-Node: Index16954
+Node: Top712
+Node: Introduction1460
+Node: Using libffi3096
+Node: The Basics3582
+Node: Simple Example7224
+Node: Types8251
+Node: Primitive Types8534
+Node: Structures10354
+Node: Type Example11214
+Node: Multiple ABIs12437
+Node: The Closure API12808
+Node: Closure Example15752
+Node: Missing Features17311
+Node: Index17764

End Tag Table
diff --git a/doc/libffi.texi b/doc/libffi.texi
index 8c4ce87..f0e6517 100644
--- a/doc/libffi.texi
+++ b/doc/libffi.texi
@@ -152,9 +152,7 @@ If the function being called is variadic (varargs) then
@code{ffi_prep_cif_var} must be used instead of @code{ffi_prep_cif}.
@findex ffi_prep_cif_var
-@defun ffi_status ffi_prep_cif_var (ffi_cif *@var{cif}, ffi_abi
-var{abi}, unsigned int @var{nfixedargs}, unsigned int
-var{ntotalargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes})
+@defun ffi_status ffi_prep_cif_var (ffi_cif *@var{cif}, ffi_abi var{abi}, unsigned int @var{nfixedargs}, unsigned int var{ntotalargs}, ffi_type *@var{rtype}, ffi_type **@var{argtypes})
This initializes @var{cif} according to the given parameters for
a call to a variadic function. In general it's operation is the
same as for @code{ffi_prep_cif} except that: