diff options
Diffstat (limited to 'intern/cycles/util')
-rw-r--r-- | intern/cycles/util/util_stats.h | 53 | ||||
-rw-r--r-- | intern/cycles/util/util_thread.h | 3 |
2 files changed, 56 insertions, 0 deletions
diff --git a/intern/cycles/util/util_stats.h b/intern/cycles/util/util_stats.h new file mode 100644 index 00000000000..405c81a1e1f --- /dev/null +++ b/intern/cycles/util/util_stats.h @@ -0,0 +1,53 @@ +/* + * Copyright 2012, Blender Foundation. + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program 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 General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software Foundation, + * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + */ + +#ifndef __UTIL_STATS_H__ +#define __UTIL_STATS_H__ + +#include "util_thread.h" + +CCL_NAMESPACE_BEGIN + +class Stats { +public: + Stats() : lock(), mem_used(0), mem_peak(0) {} + + void mem_alloc(size_t size) { + lock.lock(); + + mem_used += size; + if(mem_used > mem_peak) + mem_peak = mem_used; + + lock.unlock(); + } + + void mem_free(size_t size) { + lock.lock(); + mem_used -= size; + lock.unlock(); + } + + spin_lock lock; + size_t mem_used; + size_t mem_peak; +}; + +CCL_NAMESPACE_END + +#endif /* __UTIL_STATS_H__ */ diff --git a/intern/cycles/util/util_thread.h b/intern/cycles/util/util_thread.h index 843764ca9d6..6d1bd0023a7 100644 --- a/intern/cycles/util/util_thread.h +++ b/intern/cycles/util/util_thread.h @@ -33,6 +33,9 @@ typedef boost::mutex thread_mutex; typedef boost::mutex::scoped_lock thread_scoped_lock; typedef boost::condition_variable thread_condition_variable; +/* use boost for spinlocks as well */ +typedef boost::detail::spinlock spin_lock; + /* own pthread based implementation, to avoid boost version conflicts with * dynamically loaded blender plugins */ |