From 6c03b632fddb9e938eceeda4dd05a0bb5b20d294 Mon Sep 17 00:00:00 2001 From: James Cherry Date: Sat, 30 Nov 2019 20:57:20 -0800 Subject: [PATCH] rm unused pthread files --- util/Mutex.cc | 40 ------------ util/Pthread.cc | 149 ------------------------------------------- util/Pthread.hh | 92 -------------------------- util/ThreadWorker.cc | 134 -------------------------------------- util/ThreadWorker.hh | 64 ------------------- 5 files changed, 479 deletions(-) delete mode 100644 util/Mutex.cc delete mode 100644 util/Pthread.cc delete mode 100644 util/Pthread.hh delete mode 100644 util/ThreadWorker.cc delete mode 100644 util/ThreadWorker.hh diff --git a/util/Mutex.cc b/util/Mutex.cc deleted file mode 100644 index 48e55260..00000000 --- a/util/Mutex.cc +++ /dev/null @@ -1,40 +0,0 @@ -// OpenSTA, Static Timing Analyzer -// Copyright (c) 2019, Parallax Software, Inc. -// -// 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 3 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 . - -#include "Machine.hh" -#include "Mutex.hh" - -namespace sta { - -Mutex::Mutex() -{ - int error = pthread_mutex_init(&mutex_, NULL); - CheckThreadError(error); -} - -Mutex::Mutex(const Mutex&) -{ - int error = pthread_mutex_init(&mutex_, NULL); - CheckThreadError(error); -} - - -Mutex::~Mutex() -{ - pthread_mutex_destroy(&mutex_); -} - -} // namespace diff --git a/util/Pthread.cc b/util/Pthread.cc deleted file mode 100644 index 972254bd..00000000 --- a/util/Pthread.cc +++ /dev/null @@ -1,149 +0,0 @@ -// OpenSTA, Static Timing Analyzer -// Copyright (c) 2019, Parallax Software, Inc. -// -// 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 3 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 . - -#include "StaConfig.hh" - -#if !PTHREADS - -#include "Pthread.hh" - -namespace sta { - -int -pthread_create(pthread_t *, - const pthread_attr_t *, - void *(*) (void *), - void *) -{ - return 0; -} - -int -pthread_join(pthread_t, - void **) -{ - return 0; -} - -int -pthread_attr_init(pthread_attr_t *) -{ - return 0; -} - -int -pthread_attr_setscope(pthread_attr_t *, - int) -{ - return 0; -} - -int -pthread_cond_init(pthread_cond_t *, - const pthread_condattr_t *) -{ - return 0; -} - -int -pthread_cond_destroy(pthread_cond_t *) -{ - return 0; -} - -int -pthread_cond_signal(pthread_cond_t *) -{ - return 0; -} - -int -pthread_cond_broadcast(pthread_cond_t *) -{ - return 0; -} - -int -pthread_cond_wait(pthread_cond_t *, - pthread_mutex_t *) -{ - return 0; -} - -int -pthread_mutex_init(pthread_mutex_t *, - const pthread_mutexattr_t *) -{ - return 0; -} - -int -pthread_mutex_destroy(pthread_mutex_t *) -{ - return 0; -} - -int -pthread_mutex_lock(pthread_mutex_t *) -{ - return 0; -} - -int -pthread_mutex_trylock(pthread_mutex_t *) -{ - return 0; -} - -int -pthread_mutex_unlock(pthread_mutex_t *) -{ - return 0; -} - -int -pthread_rwlock_init(pthread_rwlock_t *, - const pthread_rwlockattr_t *) -{ - return 0; -} - -int -pthread_rwlock_destroy(pthread_rwlock_t *) -{ - return 0; -} - -int -pthread_rwlock_rdlock(pthread_rwlock_t *) -{ - return 0; -} - -int -pthread_rwlock_wrlock(pthread_rwlock_t *) -{ - return 0; -} - -int -pthread_rwlock_unlock(pthread_rwlock_t *) -{ - return 0; -} - -} // namespace -#endif diff --git a/util/Pthread.hh b/util/Pthread.hh deleted file mode 100644 index a7de84c5..00000000 --- a/util/Pthread.hh +++ /dev/null @@ -1,92 +0,0 @@ -// OpenSTA, Static Timing Analyzer -// Copyright (c) 2019, Parallax Software, Inc. -// -// 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 3 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 STA_PTHREAD_H -#define STA_PTHREAD_H - -#include "StaConfig.hh" - -#if PTHREADS - #include - #define STA_PTHREAD_SCOPE_SYSTEM PTHREAD_SCOPE_SYSTEM -#else - -// Define standins for pthread API. - -namespace sta { - -#define STA_PTHREAD_SCOPE_SYSTEM 0 - -typedef int pthread_cond_t; -typedef int pthread_condattr_t; -typedef int pthread_mutex_t; -typedef int pthread_mutexattr_t; -typedef int pthread_rwlock_t; -typedef int pthread_rwlockattr_t; -typedef int pthread_t; -typedef int pthread_attr_t; - -int -pthread_create(pthread_t *, - const pthread_attr_t *, - void *(*) (void *), void *); -int -pthread_join(pthread_t, void **); -int -pthread_attr_init(pthread_attr_t *); -int -pthread_attr_setscope(pthread_attr_t *, int); - -int -pthread_cond_init(pthread_cond_t *, - const pthread_condattr_t *); -int -pthread_cond_destroy(pthread_cond_t *); -int -pthread_cond_signal(pthread_cond_t *); -int -pthread_cond_broadcast(pthread_cond_t *); -int -pthread_cond_wait(pthread_cond_t *, - pthread_mutex_t *); - -int -pthread_mutex_init(pthread_mutex_t *, - const pthread_mutexattr_t *); -int -pthread_mutex_destroy(pthread_mutex_t *); -int -pthread_mutex_lock(pthread_mutex_t *); -int -pthread_mutex_trylock(pthread_mutex_t *); -int -pthread_mutex_unlock(pthread_mutex_t *); - -int -pthread_rwlock_init(pthread_rwlock_t *, - const pthread_rwlockattr_t *); -int -pthread_rwlock_destroy(pthread_rwlock_t *); -int -pthread_rwlock_rdlock(pthread_rwlock_t *); -int -pthread_rwlock_wrlock(pthread_rwlock_t *); -int -pthread_rwlock_unlock(pthread_rwlock_t *); - -} // namespace -#endif // PTHREAD -#endif // STA_PTHREAD_H diff --git a/util/ThreadWorker.cc b/util/ThreadWorker.cc deleted file mode 100644 index 107654ce..00000000 --- a/util/ThreadWorker.cc +++ /dev/null @@ -1,134 +0,0 @@ -// OpenSTA, Static Timing Analyzer -// Copyright (c) 2019, Parallax Software, Inc. -// -// 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 3 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 . - -#include -#include "Machine.hh" -#include "Error.hh" -#include "Error.hh" -#include "ThreadException.hh" -#include "ThreadWorker.hh" - -namespace sta { - -bool ThreadWorker::default_attr_inited_ = false; -pthread_attr_t ThreadWorker::default_attr_; - -ThreadWorker::ThreadWorker() : - state_(state_ready), - func_(NULL), - arg_(NULL) -{ - int error = pthread_create(&thread_, defaultAttr(), threadBegin, this); - CheckThreadError(error); -} - -ThreadWorker::~ThreadWorker() -{ - // Stop the pthread function. - lock_.lock(); - state_ = state_stop; - condition_.signal(); - lock_.unlock(); - pthread_join(thread_, NULL); -} - -pthread_attr_t * -ThreadWorker::defaultAttr() -{ - if (!default_attr_inited_) { - int error; - - error = pthread_attr_init(&default_attr_); - CheckThreadError(error); - - // Make sure the thread contends for CPU time with threads - // in other processes. - error = pthread_attr_setscope(&default_attr_, STA_PTHREAD_SCOPE_SYSTEM); - CheckThreadError(error); - - // Set stack size to 1MB. -// error = pthread_attr_setstacksize(&default_attr_, (1 << 20)); - CheckThreadError(error); - - default_attr_inited_ = true; - } - return &default_attr_; -} - -void -ThreadWorker::beginTask(ThreadFunc func, - void *arg) -{ - lock_.lock(); - while (state_ != state_ready) - condition_.wait(lock_); - - func_ = func; - arg_ = arg; - state_ = state_run; - // Use broadcast instead of signal as start(), wait(), threadStart() - // may all be in different threads. - condition_.broadcast(); - lock_.unlock(); -} - -void -ThreadWorker::wait() -{ - lock_.lock(); - while (state_ != state_ready) - condition_.wait(lock_); - lock_.unlock(); -} - -// Evaluate tasks as they are assigned by and then wait for another -// task. -// This function is stopped by the ThreadWorker destructor. -void * -ThreadWorker::threadBegin(void *arg) -{ - ThreadWorker *worker = reinterpret_cast(arg); - while (true) { - worker->lock_.lock(); - while (worker->state_ != state_run && - worker->state_ != state_stop) - worker->condition_.wait(worker->lock_); - - if (worker->state_ == state_stop) { - // Stop the thread. - worker->lock_.unlock(); - break; - } - - try { - (*worker->func_)(worker->arg_); - } - // Keep the thread worker alive even after an exception. - catch (StaException &except) { - printf("Caught %s exception.", except.what()); - } - catch (...) { - printf("Caught ... exception."); - } - - worker->state_ = state_ready; - worker->condition_.broadcast(); - worker->lock_.unlock(); - } - return NULL; -} - -} // namespace diff --git a/util/ThreadWorker.hh b/util/ThreadWorker.hh deleted file mode 100644 index 3c7dac3a..00000000 --- a/util/ThreadWorker.hh +++ /dev/null @@ -1,64 +0,0 @@ -// OpenSTA, Static Timing Analyzer -// Copyright (c) 2019, Parallax Software, Inc. -// -// 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 3 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 STA_THREAD_WORKER_H -#define STA_THREAD_WORKER_H - -#include "Pthread.hh" -#include "DisallowCopyAssign.hh" -#include "Mutex.hh" -#include "Condition.hh" - -namespace sta { - -typedef void (*ThreadFunc)(void*); - -class ThreadWorker -{ -public: - ThreadWorker(); - ~ThreadWorker(); - // beginTask() caller must call wait(), or deadlock will happen. - void beginTask(ThreadFunc func, - void *arg); - void wait(); - -private: - DISALLOW_COPY_AND_ASSIGN(ThreadWorker); - - static pthread_attr_t *defaultAttr(); - static void *threadBegin(void *arg); - - typedef enum { - state_ready = 0, - state_run, - state_done, - state_stop - } TaskState; - - pthread_t thread_; - Mutex lock_; - Condition condition_; - TaskState state_; - ThreadFunc func_; - void *arg_; - - static bool default_attr_inited_; - static pthread_attr_t default_attr_; -}; - -} // namespace -#endif