void _locked() { // just locked
id = lockdep_locked(name, id, backtrace);
}
- void _unlocked() { // just unlocked
- id = lockdep_unlocked(name, id);
+ void _will_unlock() { // about to unlock
+ id = lockdep_will_unlock(name, id);
}
#else
void _register() {}
void _will_lock() {} // about to lock
void _locked() {} // just locked
- void _unlocked() {} // just unlocked
+ void _will_unlock() {} // about to unlock
#endif
public:
void Unlock() {
assert(nlock > 0);
--nlock;
+ if (lockdep && g_lockdep) _will_unlock();
int r = pthread_mutex_unlock(&_m);
assert(r == 0);
- if (lockdep && g_lockdep) _unlocked();
}
friend class Cond;
}
void unlock() {
- if (g_lockdep) id = lockdep_unlocked(name, id);
+ if (g_lockdep) id = lockdep_will_unlock(name, id);
pthread_rwlock_unlock(&L);
}
void _locked() { // just locked
id = lockdep_locked(name, id, backtrace);
}
- void _unlocked() { // just unlocked
- id = lockdep_unlocked(name, id);
+ void _will_unlock() { // about to unlock
+ id = lockdep_will_unlock(name, id);
}
#else
void _register() {}
void _will_lock() {} // about to lock
void _locked() {} // just locked
- void _unlocked() {} // just unlocked
+ void _will_unlock() {} // about to unlock
#endif
public:
void unlock() {
assert(nlock > 0);
--nlock;
+ if (lockdep && g_lockdep) _will_unlock();
int r = pthread_spin_unlock(&_s);
assert(r == 0);
- if (lockdep && g_lockdep) _unlocked();
}
public:
return id;
}
-int lockdep_unlocked(const char *name, int id)
+int lockdep_will_unlock(const char *name, int id)
{
pthread_t p = pthread_self();
- if (id < 0) id = lockdep_register(name);
+ if (id < 0) {
+ //id = lockdep_register(name);
+ assert(id == -1);
+ return id;
+ }
pthread_mutex_lock(&lockdep_mutex);
- dout(20) << "_unlocked " << name << std::endl;
+ dout(20) << "_will_unlock " << name << std::endl;
// don't assert.. lockdep may be enabled at any point in time
//assert(held.count(p));
extern int lockdep_register(const char *n);
extern int lockdep_will_lock(const char *n, int id);
extern int lockdep_locked(const char *n, int id, bool force_backtrace=false);
-extern int lockdep_unlocked(const char *n, int id);
+extern int lockdep_will_unlock(const char *n, int id);
extern int lockdep_dump_locks();
#endif