diff options
author | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
---|---|---|
committer | upstream source tree <ports@midipix.org> | 2015-03-15 20:14:05 -0400 |
commit | 554fd8c5195424bdbcabf5de30fdc183aba391bd (patch) | |
tree | 976dc5ab7fddf506dadce60ae936f43f58787092 /contrib/gthr_supp_vxw_5x.c | |
download | cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.bz2 cbb-gcc-4.6.4-15d2061ac0796199866debe9ac87130894b0cdd3.tar.xz |
obtained gcc-4.6.4.tar.bz2 from upstream website;upstream
verified gcc-4.6.4.tar.bz2.sig;
imported gcc-4.6.4 source tree from verified upstream tarball.
downloading a git-generated archive based on the 'upstream' tag
should provide you with a source tree that is binary identical
to the one extracted from the above tarball.
if you have obtained the source via the command 'git clone',
however, do note that line-endings of files in your working
directory might differ from line-endings of the respective
files in the upstream repository.
Diffstat (limited to 'contrib/gthr_supp_vxw_5x.c')
-rw-r--r-- | contrib/gthr_supp_vxw_5x.c | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/contrib/gthr_supp_vxw_5x.c b/contrib/gthr_supp_vxw_5x.c new file mode 100644 index 000000000..6ce288f3e --- /dev/null +++ b/contrib/gthr_supp_vxw_5x.c @@ -0,0 +1,92 @@ +/* Kernel-side additional module for the VxWorks threading support + logic for GCC. Written 2002 by Zack Weinberg. + + This file is distributed with GCC, but it is not part of GCC. + The contents of this file are in the public domain. */ + +/* If you are using the Tornado IDE, copy this file to + $WIND_BASE/target/config/comps/src/gthread_supp.c. Then create a + file named 10comp_gthread_supp.cdf in target/config/comps/vxWorks + with the following contents: + + Component INCLUDE_GCC_GTHREAD { + NAME GCC 3.x gthread support (required by C++) + CONFIGLETTES gthread_supp.c + REQUIRES INCLUDE_CPLUS + INCLUDE_WHEN INCLUDE_CPLUS + _FOLDER FOLDER_CPLUS + } + + If you are using command line builds, instead copy this file to + $WIND_BASE/target/src/config/gthread_supp.c, and add the following + block to target/src/config/usrExtra.c: + + #ifdef INCLUDE_CPLUS + #include "../../src/config/gthread_supp.c" + #endif + + You should now be able to rebuild your application using GCC 3.x. */ + +#include <vxWorks.h> +#include <taskLib.h> + +/* This file provides these routines: */ +extern void *__gthread_get_tsd_data (WIND_TCB *tcb); +extern void __gthread_set_tsd_data (WIND_TCB *tcb, void *data); + +extern void __gthread_enter_tsd_dtor_context (WIND_TCB *tcb); +extern void __gthread_leave_tsd_dtor_context (WIND_TCB *tcb); + +/* Set and retrieve the TSD data block for the task TCB. + + Possible choices for TSD_SLOT are: + reserved1 + reserved2 + spare1 + spare2 + spare3 + spare4 + (these are all fields of the TCB structure; all have type 'int'). + + If you find that the slot chosen by default is already used for + something else, simply change the #define below and recompile this + file. No other file should reference TSD_SLOT directly. */ + +/* WARNING: This code is not 64-bit clean (it assumes that a pointer + can be held in an 'int' without truncation). As much of the rest + of VxWorks also makes this assumption, we can't really avoid it. */ + +#define TSD_SLOT reserved1 + +void * +__gthread_get_tsd_data (WIND_TCB *tcb) +{ + return (void *) (tcb->TSD_SLOT); +} + +void +__gthread_set_tsd_data (WIND_TCB *tcb, void *data) +{ + tcb->TSD_SLOT = (int) data; +} + +/* Enter and leave "TSD destructor context". This is defined as a + state in which it is safe to call free() from a task delete hook + on a memory block allocated by the task being deleted. + For VxWorks 5.x, nothing needs to be done. */ + +#if __GNUC__ >= 2 +#define UNUSED __attribute__((unused)) +#else +#define UNUSED +#endif + +void +__gthread_enter_tsd_dtor_context (WIND_TCB *tcb UNUSED) +{ +} + +void +__gthread_leave_tsd_dtor_context (WIND_TCB *tcb UNUSED) +{ +} |