From 3adfc7842ccd5435fe89cf086e73ecf48de411c5 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Wed, 30 Mar 2005 22:52:54 +0000 Subject: [PATCH] Kill *_linux variants of atomic_count and lightweight_mutex. [SVN r27889] --- include/boost/detail/atomic_count.hpp | 7 +- include/boost/detail/atomic_count_linux.hpp | 69 ----------------- include/boost/detail/lightweight_mutex.hpp | 6 -- include/boost/detail/lwm_linux.hpp | 84 --------------------- 4 files changed, 1 insertion(+), 165 deletions(-) delete mode 100644 include/boost/detail/atomic_count_linux.hpp delete mode 100644 include/boost/detail/lwm_linux.hpp diff --git a/include/boost/detail/atomic_count.hpp b/include/boost/detail/atomic_count.hpp index 3ad92b1..9985b2c 100644 --- a/include/boost/detail/atomic_count.hpp +++ b/include/boost/detail/atomic_count.hpp @@ -73,9 +73,6 @@ // are called driven by smart_ptr interface... // -// Note: atomic_count_linux.hpp has been disabled by default; see the -// comments inside for more info. - #include #ifndef BOOST_HAS_THREADS @@ -92,13 +89,11 @@ typedef long atomic_count; } -#elif defined(BOOST_USE_ASM_ATOMIC_H) -# include #elif defined(BOOST_AC_USE_PTHREADS) # include #elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) # include -#elif defined(__GLIBCPP__) +#elif defined(__GLIBCPP__) || defined(__GLIBCXX__) # include #elif defined(BOOST_HAS_PTHREADS) # define BOOST_AC_USE_PTHREADS diff --git a/include/boost/detail/atomic_count_linux.hpp b/include/boost/detail/atomic_count_linux.hpp deleted file mode 100644 index e0b0dda..0000000 --- a/include/boost/detail/atomic_count_linux.hpp +++ /dev/null @@ -1,69 +0,0 @@ -#ifndef BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED -#define BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED - -// -// boost/detail/atomic_count_linux.hpp -// -// Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd. -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// - -// -// This implementation uses . This is a kernel header; -// using kernel headers in a user program may cause a number of problems, -// and not all flavors of Linux provide the atomic instructions. -// -// This file is only provided because the performance of this implementation -// is significantly higher than the pthreads version. Use at your own risk -// (by defining BOOST_USE_ASM_ATOMIC_H.) -// - -#include - -namespace boost -{ - -namespace detail -{ - -class atomic_count -{ -public: - - explicit atomic_count(long v) - { - atomic_t init = ATOMIC_INIT(v); - value_ = init; - } - - void operator++() - { - atomic_inc(&value_); - } - - long operator--() - { - return !atomic_dec_and_test(&value_); - } - - operator long() const - { - return atomic_read(&value_); - } - -private: - - atomic_count(atomic_count const &); - atomic_count & operator=(atomic_count const &); - - atomic_t value_; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_ATOMIC_COUNT_LINUX_HPP_INCLUDED diff --git a/include/boost/detail/lightweight_mutex.hpp b/include/boost/detail/lightweight_mutex.hpp index 22e0f54..a99689e 100644 --- a/include/boost/detail/lightweight_mutex.hpp +++ b/include/boost/detail/lightweight_mutex.hpp @@ -49,10 +49,6 @@ // where a spinlock can be several orders of magnitude faster than a CRITICAL_SECTION. -// Note: lwm_linux.hpp has been disabled by default; see the comments -// inside for more info. - - #include // Note to implementors: if you write a platform-specific spinlock @@ -75,8 +71,6 @@ # else # include # endif -#elif defined(BOOST_LWM_USE_SPINLOCK) && defined(BOOST_USE_ASM_ATOMIC_H) -# include #elif defined(BOOST_LWM_USE_CRITICAL_SECTION) # include #elif defined(BOOST_LWM_USE_PTHREADS) diff --git a/include/boost/detail/lwm_linux.hpp b/include/boost/detail/lwm_linux.hpp deleted file mode 100644 index f0cfb7f..0000000 --- a/include/boost/detail/lwm_linux.hpp +++ /dev/null @@ -1,84 +0,0 @@ -#ifndef BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED -#define BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED - -// -// boost/detail/lwm_linux.hpp -// -// Copyright (c) 2002 Peter Dimov and Multi Media Ltd. -// -// Distributed under the Boost Software License, Version 1.0. (See -// accompanying file LICENSE_1_0.txt or copy at -// http://www.boost.org/LICENSE_1_0.txt) -// - -// -// This implementation uses . This is a kernel header; -// using kernel headers in a user program may cause a number of problems, -// and not all flavors of Linux provide the atomic instructions. -// -// This file is only provided because the performance of this implementation -// is about 3.5 times higher than the pthreads version. Use at your own risk -// (by defining BOOST_USE_ASM_ATOMIC_H.) -// - -#include -#include - -namespace boost -{ - -namespace detail -{ - -class lightweight_mutex -{ -private: - - atomic_t a_; - - lightweight_mutex(lightweight_mutex const &); - lightweight_mutex & operator=(lightweight_mutex const &); - -public: - - lightweight_mutex() - { - atomic_t a = ATOMIC_INIT(1); - a_ = a; - } - - class scoped_lock; - friend class scoped_lock; - - class scoped_lock - { - private: - - lightweight_mutex & m_; - - scoped_lock(scoped_lock const &); - scoped_lock & operator=(scoped_lock const &); - - public: - - explicit scoped_lock(lightweight_mutex & m): m_(m) - { - while( !atomic_dec_and_test(&m_.a_) ) - { - atomic_inc(&m_.a_); - sched_yield(); - } - } - - ~scoped_lock() - { - atomic_inc(&m_.a_); - } - }; -}; - -} // namespace detail - -} // namespace boost - -#endif // #ifndef BOOST_DETAIL_LWM_LINUX_HPP_INCLUDED