From 7b09710392d35fb55b52031d447a542d99fc6b4b Mon Sep 17 00:00:00 2001 From: Tavian Barnes Date: Tue, 19 Aug 2014 17:10:03 -0400 Subject: Modularize the libdimension codebase. --- libdimension/internal/platform.h | 67 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 67 insertions(+) create mode 100644 libdimension/internal/platform.h (limited to 'libdimension/internal/platform.h') diff --git a/libdimension/internal/platform.h b/libdimension/internal/platform.h new file mode 100644 index 0000000..e037d21 --- /dev/null +++ b/libdimension/internal/platform.h @@ -0,0 +1,67 @@ +/************************************************************************* + * Copyright (C) 2010-2011 Tavian Barnes * + * * + * This file is part of The Dimension Library. * + * * + * The Dimension Library is free software; you can redistribute it and/ * + * or modify it under the terms of the GNU Lesser General Public License * + * as published by the Free Software Foundation; either version 3 of the * + * License, or (at your option) any later version. * + * * + * The Dimension Library is distributed in the hope that it will be * + * useful, but WITHOUT ANY WARRANTY; without even the implied warranty * + * of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with this program. If not, see * + * . * + *************************************************************************/ + +/** + * @file + * Internal platform abstractions. + */ + +#ifndef DMNSN_INTERNAL_PLATFORM_H +#define DMNSN_INTERNAL_PLATFORM_H + +#include "internal.h" +#include "dimension/platform.h" +#include +#include +#include + +/** + * Print a stack trace, if implemented for the current platform. + * @param[in,out] file The file to which to write the stack trace. + */ +DMNSN_INTERNAL void dmnsn_backtrace(FILE *file); + +/** + * Is the calling thread the main thread? + * @return Whether this is the main execution thread, or \c true if we can't + * tell. + */ +DMNSN_INTERNAL bool dmnsn_is_main_thread(void); + +/** + * Are we running on a little-endian computer? + * @return Whether the current architecture is little-endian. + */ +DMNSN_INTERNAL bool dmnsn_is_little_endian(void); + +/** + * How many CPUs are available? + * @return The number of CPUs available to dimension. + */ +DMNSN_INTERNAL size_t dmnsn_ncpus(void); + +/** + * Calculate process times. + * @param[out] timer The timer in which to store the current total process + * times. + */ +DMNSN_INTERNAL void dmnsn_get_times(dmnsn_timer *timer); + +#endif // DMNSN_INTERNAL_PLATFORM_H -- cgit v1.2.3