////////////////////////////////////////////////////////////////////////////// // // (C) Copyright Ion Gaztanaga 2005-2008. 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) // // See http://www.boost.org/libs/interprocess for documentation. // ////////////////////////////////////////////////////////////////////////////// #ifndef BOOST_INTERPROCESS_DETAIL_OS_THREAD_FUNCTIONS_HPP #define BOOST_INTERPROCESS_DETAIL_OS_THREAD_FUNCTIONS_HPP #include #include #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) # include #else # ifdef BOOST_HAS_UNISTD_H # include # include # include # else # error Unknown platform # endif #endif namespace boost { namespace interprocess { namespace detail{ #if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) typedef unsigned long OS_process_id_t; typedef unsigned long OS_thread_id_t; inline OS_process_id_t get_current_process_id() { return winapi::get_current_process_id(); } inline OS_thread_id_t get_current_thread_id() { return winapi::get_current_thread_id(); } inline OS_thread_id_t get_invalid_thread_id() { return OS_thread_id_t(0xffffffff); } inline bool equal_thread_id(OS_thread_id_t id1, OS_thread_id_t id2) { return id1 == id2; } inline void thread_yield() { winapi::sched_yield(); } #else //#if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) typedef pthread_t OS_thread_id_t; typedef int OS_process_id_t; inline OS_process_id_t get_current_process_id() { return getpid(); } inline pthread_t get_current_thread_id() { return pthread_self(); } inline OS_thread_id_t get_invalid_thread_id() { static pthread_t invalid_id; return invalid_id; } inline bool equal_thread_id(OS_thread_id_t id1, OS_thread_id_t id2) { return 0 != pthread_equal(id1, id2); } inline void thread_yield() { sched_yield(); } #endif //#if (defined BOOST_WINDOWS) && !(defined BOOST_DISABLE_WIN32) } //namespace detail{ } //namespace interprocess { } //namespace boost { #include #endif //BOOST_INTERPROCESS_DETAIL_OS_THREAD_FUNCTIONS_HPP