1
0
forked from 0ad/0ad

Set svn:eol-style native

This was SVN commit r7809.
This commit is contained in:
Ykkrosh 2010-07-25 18:08:35 +00:00
parent f79056efbd
commit f6a1501410
3 changed files with 222 additions and 222 deletions

View File

@ -1,137 +1,137 @@
/* Copyright (c) 2010 Wildfire Games /* Copyright (c) 2010 Wildfire Games
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software. * in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
#ifndef INCLUDED_CODE_GENERATION #ifndef INCLUDED_CODE_GENERATION
#define INCLUDED_CODE_GENERATION #define INCLUDED_CODE_GENERATION
/** /**
* package code into a single statement. * package code into a single statement.
* *
* @param STMT_code__ code to be bundled. (must be interpretable as * @param STMT_code__ code to be bundled. (must be interpretable as
* a macro argument, i.e. sequence of tokens). * a macro argument, i.e. sequence of tokens).
* the argument name is chosen to avoid conflicts. * the argument name is chosen to avoid conflicts.
* *
* notes: * notes:
* - for(;;) { break; } and {} don't work because invocations of macros * - for(;;) { break; } and {} don't work because invocations of macros
* implemented with STMT often end with ";", thus breaking if() expressions. * implemented with STMT often end with ";", thus breaking if() expressions.
* - we'd really like to eliminate "conditional expression is constant" * - we'd really like to eliminate "conditional expression is constant"
* warnings. replacing 0 literals with extern volatile variables fools * warnings. replacing 0 literals with extern volatile variables fools
* VC7 but isn't guaranteed to be free of overhead. we will just * VC7 but isn't guaranteed to be free of overhead. we will just
* squelch the warning (unfortunately non-portable). * squelch the warning (unfortunately non-portable).
**/ **/
#define STMT(STMT_code__) do { STMT_code__; } while(false) #define STMT(STMT_code__) do { STMT_code__; } while(false)
/** /**
* execute the code passed as a parameter only the first time this is * execute the code passed as a parameter only the first time this is
* reached. * reached.
* may be called at any time (in particular before main), but is not * may be called at any time (in particular before main), but is not
* thread-safe. if that's important, use pthread_once() instead. * thread-safe. if that's important, use pthread_once() instead.
**/ **/
#define ONCE(ONCE_code__)\ #define ONCE(ONCE_code__)\
STMT(\ STMT(\
static bool ONCE_done__ = false;\ static bool ONCE_done__ = false;\
if(!ONCE_done__)\ if(!ONCE_done__)\
{\ {\
ONCE_done__ = true;\ ONCE_done__ = true;\
ONCE_code__;\ ONCE_code__;\
}\ }\
) )
/** /**
* execute the code passed as a parameter except the first time this is * execute the code passed as a parameter except the first time this is
* reached. * reached.
* may be called at any time (in particular before main), but is not * may be called at any time (in particular before main), but is not
* thread-safe. * thread-safe.
**/ **/
#define ONCE_NOT(ONCE_code__)\ #define ONCE_NOT(ONCE_code__)\
STMT(\ STMT(\
static bool ONCE_done__ = false;\ static bool ONCE_done__ = false;\
if(!ONCE_done__)\ if(!ONCE_done__)\
ONCE_done__ = true;\ ONCE_done__ = true;\
else\ else\
ONCE_code__;\ ONCE_code__;\
) )
/** /**
* execute the code passed as a parameter before main is entered. * execute the code passed as a parameter before main is entered.
* *
* WARNING: if the source file containing this is not directly referenced * WARNING: if the source file containing this is not directly referenced
* from anywhere, linkers may discard that object file (unless linking * from anywhere, linkers may discard that object file (unless linking
* statically). see http://www.cbloom.com/3d/techdocs/more_coding.txt * statically). see http://www.cbloom.com/3d/techdocs/more_coding.txt
**/ **/
#define AT_STARTUP(code__)\ #define AT_STARTUP(code__)\
namespace { struct UID__\ namespace { struct UID__\
{\ {\
UID__() { code__; }\ UID__() { code__; }\
} UID2__; } } UID2__; }
/** /**
* C++ new wrapper: allocates an instance of the given type and stores a * C++ new wrapper: allocates an instance of the given type and stores a
* pointer to it. sets pointer to 0 on allocation failure. * pointer to it. sets pointer to 0 on allocation failure.
* *
* this simplifies application code when on VC6, which may or * this simplifies application code when on VC6, which may or
* may not throw/return 0 on failure. * may not throw/return 0 on failure.
**/ **/
#define SAFE_NEW(type, ptr)\ #define SAFE_NEW(type, ptr)\
type* ptr;\ type* ptr;\
try\ try\
{\ {\
ptr = new type();\ ptr = new type();\
}\ }\
catch(std::bad_alloc)\ catch(std::bad_alloc)\
{\ {\
ptr = 0;\ ptr = 0;\
} }
/** /**
* delete memory ensuing from new and set the pointer to zero * delete memory ensuing from new and set the pointer to zero
* (thus making double-frees safe / a no-op) * (thus making double-frees safe / a no-op)
**/ **/
#define SAFE_DELETE(p)\ #define SAFE_DELETE(p)\
STMT(\ STMT(\
delete (p); /* if p == 0, delete is a no-op */ \ delete (p); /* if p == 0, delete is a no-op */ \
(p) = 0;\ (p) = 0;\
) )
/** /**
* delete memory ensuing from new[] and set the pointer to zero * delete memory ensuing from new[] and set the pointer to zero
* (thus making double-frees safe / a no-op) * (thus making double-frees safe / a no-op)
**/ **/
#define SAFE_ARRAY_DELETE(p)\ #define SAFE_ARRAY_DELETE(p)\
STMT(\ STMT(\
delete[] (p); /* if p == 0, delete is a no-op */ \ delete[] (p); /* if p == 0, delete is a no-op */ \
(p) = 0;\ (p) = 0;\
) )
/** /**
* free memory ensuing from malloc and set the pointer to zero * free memory ensuing from malloc and set the pointer to zero
* (thus making double-frees safe / a no-op) * (thus making double-frees safe / a no-op)
**/ **/
#define SAFE_FREE(p)\ #define SAFE_FREE(p)\
STMT(\ STMT(\
free((void*)p); /* if p == 0, free is a no-op */ \ free((void*)p); /* if p == 0, free is a no-op */ \
(p) = 0;\ (p) = 0;\
) )
#endif // #ifndef INCLUDED_CODE_GENERATION #endif // #ifndef INCLUDED_CODE_GENERATION

View File

@ -1,59 +1,59 @@
/* Copyright (c) 2010 Wildfire Games /* Copyright (c) 2010 Wildfire Games
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software. * in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
#include "precompiled.h" #include "precompiled.h"
#include "lib/sysdep/numa.h" #include "lib/sysdep/numa.h"
#include "lib/bits.h" #include "lib/bits.h"
#include "lib/sysdep/os_cpu.h" #include "lib/sysdep/os_cpu.h"
size_t numa_NumNodes() size_t numa_NumNodes()
{ {
return 1; return 1;
} }
size_t numa_NodeFromProcessor(size_t processor) size_t numa_NodeFromProcessor(size_t processor)
{ {
return 0; return 0;
} }
uintptr_t numa_ProcessorMaskFromNode(size_t node) uintptr_t numa_ProcessorMaskFromNode(size_t node)
{ {
debug_assert(node == 0); debug_assert(node == 0);
return bit_mask<uintptr_t>(os_cpu_NumProcessors()); return bit_mask<uintptr_t>(os_cpu_NumProcessors());
} }
size_t numa_AvailableMemory(size_t node) size_t numa_AvailableMemory(size_t node)
{ {
debug_assert(node == 0); debug_assert(node == 0);
return os_cpu_MemoryAvailable(); return os_cpu_MemoryAvailable();
} }
double numa_Factor() double numa_Factor()
{ {
return 1.0; return 1.0;
} }
bool numa_IsMemoryInterleaved() bool numa_IsMemoryInterleaved()
{ {
return false; return false;
} }

View File

@ -1,26 +1,26 @@
/* Copyright (c) 2010 Wildfire Games /* Copyright (c) 2010 Wildfire Games
* *
* Permission is hereby granted, free of charge, to any person obtaining * Permission is hereby granted, free of charge, to any person obtaining
* a copy of this software and associated documentation files (the * a copy of this software and associated documentation files (the
* "Software"), to deal in the Software without restriction, including * "Software"), to deal in the Software without restriction, including
* without limitation the rights to use, copy, modify, merge, publish, * without limitation the rights to use, copy, modify, merge, publish,
* distribute, sublicense, and/or sell copies of the Software, and to * distribute, sublicense, and/or sell copies of the Software, and to
* permit persons to whom the Software is furnished to do so, subject to * permit persons to whom the Software is furnished to do so, subject to
* the following conditions: * the following conditions:
* *
* The above copyright notice and this permission notice shall be included * The above copyright notice and this permission notice shall be included
* in all copies or substantial portions of the Software. * in all copies or substantial portions of the Software.
* *
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
* EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
* IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
* CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
* TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/ */
#ifndef INCLUDED_UNUMA #ifndef INCLUDED_UNUMA
#define INCLUDED_UNUMA #define INCLUDED_UNUMA
#endif // #ifndef INCLUDED_UNUMA #endif // #ifndef INCLUDED_UNUMA