Commit a2400995 authored by giles's avatar giles

Add a name mangling mechanism so we can safely compile in code we share with...

Add a name mangling mechanism so we can safely compile in code we share with applications that might link with use. Currently only hooked up for the timing liblet, but thread is the real target.

Basically we define _mangle() in config.h, and use that in timing.h (if available) to prepend the package name to all the symbols in the header and including C files. It's thus fairly invisible.

Unfortunately the prefix is hardwired, so it's another thing that has to be maintained by hand (not that is changes often, but we can't make it a macro). AH_VERBATIM seems to be the only way to add a macro that takes arguments, and it explicitly doesn't do shell expansion. Further, @PACKAGE@ substitution doesn't happen on config.h.in. Insert standard autotools frustration here.

svn path=/trunk/timing/; revision=5060
parent 7c40c8ae
......@@ -26,6 +26,8 @@
#include "timing.h"
/* see timing.h for an explanation of _mangle() */
/*
* Returns milliseconds no matter what.
*/
......
......@@ -11,6 +11,12 @@ typedef __int64 int64_t;
typedef unsigned __int64 uint64_t;
#endif
/* config.h should be included before we are to define _mangle */
#ifdef _mangle
# define timing_get_time _mangle(timing_get_time)
# define timing_sleep _mangle(timing_sleep)
#endif
uint64_t timing_get_time(void);
void timing_sleep(uint64_t sleeptime);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment