Query: trampoline_r
OS: debian
Section: 3
Format: Original Unix Latex Style Formatted with HTML and a Horizontal Scroll Bar
TRAMPOLINE(3) Library Functions Manual TRAMPOLINE(3)NAMEtrampoline - closures as first-class C functionsSYNOPSIS#include <trampoline_r.h> function = alloc_trampoline_r(address, data0, data1); free_trampoline_r(function); is_trampoline_r(function) trampoline_r_address(function) trampoline_r_data0(function) trampoline_r_data1(function)DESCRIPTIONThese functions implement closures as first-class C functions. A closure consists of a regular C function and a piece of data which gets passed to the C function when the closure is called. Closures as first-class C functions means that they fit into a function pointer and can be called exactly like any other C function. func- tion = alloc_trampoline_r(address, data0, data1) allocates a closure. When function gets called, it stores in a special "lexical chain reg- ister" a pointer to a storage area containing data0 in its first word and data1 in its second word and calls the C function at address. The function at address is responsible for fetching data0 and data1 off the pointer. Note that the "lexical chain register" is a call-used register, i.e. is clobbered by function calls. This is much like gcc's local functions, except that the GNU C local functions have dynamic extent (i.e. are deallocated when the creating function returns), while trampoline provides functions with indefinite extent: function is only deallocated when free_trampoline_r(func- tion) is called. is_trampoline_r(function) checks whether the C function function was produced by a call to alloc_trampoline_r. If this returns true, the arguments given to alloc_trampoline_r can be retrieved: trampoline_r_address(function) returns address, trampoline_r_data0(function) returns data0, trampoline_r_data1(function) returns data1.SEE ALSOtrampoline(3), gcc(1), varargs(3)PORTINGThe way gcc builds local functions is described in the gcc source, file gcc-2.6.3/config/cpu/cpu.h.AUTHORBruno Haible <bruno@clisp.org>ACKNOWLEDGEMENTSMany ideas were cribbed from the gcc source. 22 October 1997 TRAMPOLINE(3)
Related Man Pages |
---|
alloca(3) - redhat |
stack(5) - bsd |
avcall(3) - debian |
shevek_closure(3) - debian |
std::regex_iterator(3) - debian |
Similar Topics in the Unix Linux Community |
---|
gcc problems |
Installing gcc - recieve error message gcc : cannot execute |
command 'cc' failed even though gcc is installed |
There is gcc but doesn't work !! |
Need gcc binary for a SPARC machine |