General system helper functions.
More...
#include <system.h>
|
enum | CPU_ExtensionPPC { altivec
} |
|
enum | CPU_ExtensionX86 {
mmx
, mmx_ex
, _3d_now
, _3d_now_ex
,
sse
, sse2
, sse3
, ssse3
,
sse4_a
, sse4_1
, sse4_2
, xop
,
avx
, aes
, fma3
, fma4
} |
|
|
static void * | aligned_alloc (size_t size, size_t alignment=16) |
| Allocates aligned memory.
|
|
static void | aligned_free (void *ptr) |
| Frees aligned memory.
|
|
static int | capture_stack_trace (int frames_to_skip, int max_frames, void **out_frames, unsigned int *out_hash=nullptr) |
| Captures a stack back trace by walking up the stack and recording the information for each frame.
|
|
static bool | detect_cpu_extension (CPU_ExtensionPPC ext) |
|
static bool | detect_cpu_extension (CPU_ExtensionX86 ext) |
|
static std::string | get_exe_path () |
| Returns the full dirname of the executable that started this.
|
|
static uint64_t | get_microseconds () |
| Get the current time microseconds.
|
|
static int | get_num_cores () |
| Return the number of CPU cores.
|
|
static std::vector< std::string > | get_stack_frames_text (void **frames, int num_frames) |
| Returns the function names and lines for the specified stack frame addresses.
|
|
static uint64_t | get_time () |
| Get the current time (since system boot), in milliseconds.
|
|
static void | pause (int millis) |
| Pause for 'millis' milliseconds.
|
|
static void | sleep (int millis) |
| Sleep for 'millis' milliseconds.
|
|
General system helper functions.
◆ CPU_ExtensionPPC
◆ CPU_ExtensionX86
Enumerator |
---|
mmx | |
mmx_ex | |
_3d_now | |
_3d_now_ex | |
sse | |
sse2 | |
sse3 | |
ssse3 | |
sse4_a | |
sse4_1 | |
sse4_2 | |
xop | |
avx | |
aes | |
fma3 | |
fma4 | |
◆ aligned_alloc()
static void * clan::System::aligned_alloc |
( |
size_t | size, |
|
|
size_t | alignment = 16 ) |
|
static |
Allocates aligned memory.
◆ aligned_free()
static void clan::System::aligned_free |
( |
void * | ptr | ) |
|
|
static |
◆ capture_stack_trace()
static int clan::System::capture_stack_trace |
( |
int | frames_to_skip, |
|
|
int | max_frames, |
|
|
void ** | out_frames, |
|
|
unsigned int * | out_hash = nullptr ) |
|
static |
Captures a stack back trace by walking up the stack and recording the information for each frame.
◆ detect_cpu_extension() [1/2]
◆ detect_cpu_extension() [2/2]
◆ get_exe_path()
static std::string clan::System::get_exe_path |
( |
| ) |
|
|
static |
Returns the full dirname of the executable that started this.
process (aka argv[0])
This is necessary since when programms are started from the PATH there is no clean and simple way to figure out the location of the data files, thus information is read from /proc/self/exe
under GNU/Linux and from GetModuleFileName() on Win32.
- Returns
- full dirname of the executable, trailing slash is included
◆ get_microseconds()
static uint64_t clan::System::get_microseconds |
( |
| ) |
|
|
static |
Get the current time microseconds.
◆ get_num_cores()
static int clan::System::get_num_cores |
( |
| ) |
|
|
static |
Return the number of CPU cores.
◆ get_stack_frames_text()
static std::vector< std::string > clan::System::get_stack_frames_text |
( |
void ** | frames, |
|
|
int | num_frames ) |
|
static |
Returns the function names and lines for the specified stack frame addresses.
On Linux, to obtain function names, remember to link with the -rdynamic flag
◆ get_time()
static uint64_t clan::System::get_time |
( |
| ) |
|
|
static |
Get the current time (since system boot), in milliseconds.
◆ pause()
static void clan::System::pause |
( |
int | millis | ) |
|
|
static |
Pause for 'millis' milliseconds.
This function acts as sleep, but the function "may" perform a spinlock on some operating systems to give a more accurate pause. This may have a side effect of causing 100% cpu usage. If you do not require an accurate pause, use sleep instead.
◆ sleep()
static void clan::System::sleep |
( |
int | millis | ) |
|
|
static |
Sleep for 'millis' milliseconds.
It is possible for this function to sleep for more than millis, depending on the OS scheduler. If you require a more accurate sleep, consider pause.
The documentation for this class was generated from the following file: