]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
common/Mutex: remove Mutex 29113/head
authorKefu Chai <kchai@redhat.com>
Mon, 22 Jul 2019 07:07:06 +0000 (15:07 +0800)
committerKefu Chai <kchai@redhat.com>
Sat, 3 Aug 2019 03:27:21 +0000 (11:27 +0800)
as it's replaced by `ceph::mutex`

Signed-off-by: Kefu Chai <kchai@redhat.com>
src/common/CMakeLists.txt
src/common/Mutex.cc [deleted file]
src/common/Mutex.h [deleted file]
src/crimson/CMakeLists.txt
src/test/common/CMakeLists.txt
src/test/common/test_mutex.cc [deleted file]

index af998d5a0b337e2b5f91a66eca5e63ecaabe98dc..eadaf285d4885908ff15f960591b053033f0901a 100644 (file)
@@ -21,7 +21,6 @@ set(common_srcs
   LogClient.cc
   LogEntry.cc
   ostream_temp.cc
-  Mutex.cc
   OutputDataSocket.cc
   PluginRegistry.cc
   Readahead.cc
diff --git a/src/common/Mutex.cc b/src/common/Mutex.cc
deleted file mode 100644 (file)
index e029adc..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software
- * Foundation.  See file COPYING.
- *
- */
-
-#include "common/Mutex.h"
-#include "common/config.h"
-#include "common/Clock.h"
-#include "common/valgrind.h"
-
-Mutex::Mutex(const std::string &n, bool r, bool ld,
-            bool bt) :
-  name(n), id(-1), recursive(r), lockdep(ld), backtrace(bt), nlock(0),
-  locked_by(0)
-{
-  ANNOTATE_BENIGN_RACE_SIZED(&id, sizeof(id), "Mutex lockdep id");
-  ANNOTATE_BENIGN_RACE_SIZED(&nlock, sizeof(nlock), "Mutex nlock");
-  ANNOTATE_BENIGN_RACE_SIZED(&locked_by, sizeof(locked_by), "Mutex locked_by");
-  if (recursive) {
-    // Mutexes of type PTHREAD_MUTEX_RECURSIVE do all the same checks as
-    // mutexes of type PTHREAD_MUTEX_ERRORCHECK.
-    pthread_mutexattr_t attr;
-    pthread_mutexattr_init(&attr);
-    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_RECURSIVE);
-    pthread_mutex_init(&_m,&attr);
-    pthread_mutexattr_destroy(&attr);
-    if (lockdep && g_lockdep)
-      _register();
-  }
-  else if (lockdep) {
-    // If the mutex type is PTHREAD_MUTEX_ERRORCHECK, then error checking
-    // shall be provided. If a thread attempts to relock a mutex that it
-    // has already locked, an error shall be returned. If a thread
-    // attempts to unlock a mutex that it has not locked or a mutex which
-    // is unlocked, an error shall be returned.
-    pthread_mutexattr_t attr;
-    pthread_mutexattr_init(&attr);
-    pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_ERRORCHECK);
-    pthread_mutex_init(&_m, &attr);
-    pthread_mutexattr_destroy(&attr);
-    if (g_lockdep)
-      _register();
-  }
-  else {
-    // If the mutex type is PTHREAD_MUTEX_DEFAULT, attempting to recursively
-    // lock the mutex results in undefined behavior. Attempting to unlock the
-    // mutex if it was not locked by the calling thread results in undefined
-    // behavior. Attempting to unlock the mutex if it is not locked results in
-    // undefined behavior.
-    pthread_mutex_init(&_m, NULL);
-  }
-}
-
-Mutex::~Mutex() {
-  ceph_assert(nlock == 0);
-
-  // helgrind gets confused by condition wakeups leading to mutex destruction
-  ANNOTATE_BENIGN_RACE_SIZED(&_m, sizeof(_m), "Mutex primitive");
-  pthread_mutex_destroy(&_m);
-
-  if (lockdep && g_lockdep) {
-    lockdep_unregister(id);
-  }
-}
-
-void Mutex::lock(bool no_lockdep)
-{
-  if (lockdep && g_lockdep && !no_lockdep && !recursive) _will_lock();
-  int r = pthread_mutex_lock(&_m);
-  ceph_assert(r == 0);
-  if (lockdep && g_lockdep) _locked();
-  _post_lock();
-}
-
-void Mutex::unlock()
-{
-  _pre_unlock();
-  if (lockdep && g_lockdep) _will_unlock();
-  int r = pthread_mutex_unlock(&_m);
-  ceph_assert(r == 0);
-}
diff --git a/src/common/Mutex.h b/src/common/Mutex.h
deleted file mode 100644 (file)
index 792ba32..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*- 
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- * Copyright (C) 2004-2006 Sage Weil <sage@newdream.net>
- *
- * This is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License version 2.1, as published by the Free Software 
- * Foundation.  See file COPYING.
- * 
- */
-
-#ifndef CEPH_MUTEX_H
-#define CEPH_MUTEX_H
-
-#include "include/ceph_assert.h"
-#include "lockdep.h"
-
-#include <string>
-#include <pthread.h>
-#include <mutex>
-
-using namespace ceph;
-
-class Mutex {
-private:
-  std::string name;
-  int id;
-  bool recursive;
-  bool lockdep;
-  bool backtrace;  // gather backtrace on lock acquisition
-
-  pthread_mutex_t _m;
-  int nlock;
-  pthread_t locked_by;
-
-  // don't allow copying.
-  void operator=(const Mutex &M);
-  Mutex(const Mutex &M);
-
-  void _register() {
-    id = lockdep_register(name.c_str());
-  }
-  void _will_lock() { // about to lock
-    id = lockdep_will_lock(name.c_str(), id, backtrace, recursive);
-  }
-  void _locked() {    // just locked
-    id = lockdep_locked(name.c_str(), id, backtrace);
-  }
-  void _will_unlock() {  // about to unlock
-    id = lockdep_will_unlock(name.c_str(), id);
-  }
-
-public:
-  Mutex(const std::string &n, bool r = false, bool ld=true, bool bt=false);
-  ~Mutex();
-  bool is_locked() const {
-    return (nlock > 0);
-  }
-  bool is_locked_by_me() const {
-    return nlock > 0 && locked_by == pthread_self();
-  }
-
-  bool TryLock() {
-    return try_lock();
-  }
-  bool try_lock() {
-    int r = pthread_mutex_trylock(&_m);
-    if (r == 0) {
-      if (lockdep && g_lockdep) _locked();
-      _post_lock();
-    }
-    return r == 0;
-  }
-
-  void Lock(bool no_lockdep=false) {
-    lock(no_lockdep);
-  }
-  void lock(bool no_lockdep=false);
-
-  void _post_lock() {
-    if (!recursive) {
-      ceph_assert(nlock == 0);
-      locked_by = pthread_self();
-    };
-    nlock++;
-  }
-
-  void _pre_unlock() {
-    ceph_assert(nlock > 0);
-    --nlock;
-    if (!recursive) {
-      ceph_assert(locked_by == pthread_self());
-      locked_by = 0;
-      ceph_assert(nlock == 0);
-    }
-  }
-  void Unlock() {
-    unlock();
-  }
-  void unlock();
-
-  friend class Cond;
-
-
-public:
-  typedef std::lock_guard<Mutex> Locker;
-};
-
-
-#endif
index 3d57f2c3ce8fb02f9f70aa4b105c2566ce4ae5ed..72c657616767a985badc81b14e0e731f43aebec3 100644 (file)
@@ -67,7 +67,6 @@ add_library(crimson-common STATIC
   ${PROJECT_SOURCE_DIR}/src/common/Graylog.cc
   ${PROJECT_SOURCE_DIR}/src/common/ostream_temp.cc
   ${PROJECT_SOURCE_DIR}/src/common/LogEntry.cc
-  ${PROJECT_SOURCE_DIR}/src/common/Mutex.cc
   ${PROJECT_SOURCE_DIR}/src/common/SubProcess.cc
   ${PROJECT_SOURCE_DIR}/src/common/TextTable.cc
   ${PROJECT_SOURCE_DIR}/src/common/Thread.cc
index c9c9177fa762a02089849cb9bc03bd7bd746650c..a3074d4319f44b454ffe3e6740ba01b8999696ac 100644 (file)
@@ -242,13 +242,6 @@ add_executable(unittest_mutex_debug
 add_ceph_unittest(unittest_mutex_debug)
 target_link_libraries(unittest_mutex_debug ceph-common)
 
-# unittest_mutex
-add_executable(unittest_mutex
-  test_mutex.cc
-  )
-add_ceph_unittest(unittest_mutex)
-target_link_libraries(unittest_mutex ceph-common)
-
 # unittest_shunique_lock
 add_executable(unittest_shunique_lock
   test_shunique_lock.cc
diff --git a/src/test/common/test_mutex.cc b/src/test/common/test_mutex.cc
deleted file mode 100644 (file)
index 95a9a62..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-// -*- mode:C++; tab-width:8; c-basic-offset:2; indent-tabs-mode:t -*-
-// vim: ts=8 sw=2 smarttab
-/*
- * Ceph - scalable distributed file system
- *
- */
-
-#include <common/Mutex.h>
-#include "gtest/gtest.h"
-#include "common/ceph_context.h"
-#include "common/config.h"
-#include "include/coredumpctl.h"
-
-static CephContext* cct;
-
-static void do_init() {
-  if (cct == nullptr) {
-    cct = new CephContext(0);
-    lockdep_register_ceph_context(cct);
-  }
-}
-
-static void disable_lockdep() {
-  if (cct) {
-    lockdep_unregister_ceph_context(cct);
-    cct->put();
-    cct = nullptr;
-  }
-}
-
-TEST(Mutex, NormalAsserts) {
-  Mutex* m = new Mutex("Normal",false);
-  m->Lock();
-  testing::GTEST_FLAG(death_test_style) = "threadsafe";
-  PrCtl unset_dumpable;
-  EXPECT_DEATH(m->Lock(), ".*");
-}
-
-TEST(Mutex, RecursiveWithLockdep) {
-  do_init();
-  Mutex* m = new Mutex("Recursive1",true);
-  m->Lock();
-  m->Lock();
-  m->Unlock();
-  m->Unlock();
-  delete m;
-}
-
-TEST(Mutex, RecursiveWithoutLockdep) {
-  disable_lockdep();
-  Mutex* m = new Mutex("Recursive2",true);
-  m->Lock();
-  m->Lock();
-  m->Unlock();
-  m->Unlock();
-  delete m;
-}
-
-TEST(Mutex, DeleteLocked) {
-  Mutex* m = new Mutex("Recursive3",false);
-  m->Lock();
-  PrCtl unset_dumpable;
-  EXPECT_DEATH(delete m,".*");
-}