/* Copyright (C) 2005-2009 Michel de Boer 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, see . */ #ifndef _PROHIBIT_THREAD_H #define _PROHIBIT_THREAD_H #include #include "threads/mutex.h" #include "threads/thread.h" using namespace std; // This class implements an interface to keep track of thread id's that are // prohibited from some actions, e.g. taking a certain lock class i_prohibit_thread { private: // List of thread id's that are prohibited from some action mutable t_mutex prohibited_mutex; set prohibited_threads; public: // Operations on the prohibited set of thread id's // Add/remove the thread id of the calling thread void add_prohibited_thread(void); void remove_prohibited_thread(void); // Returns true if the current thread is prohibited bool is_prohibited_thread(void) const; }; #endif