{
lock->line = line;
lock->file = file;
+ pthread_getname_np(pthread_self(),
+ lock->owner_name, sizeof(lock->owner_name));
}
int _mutex_lock(struct mutex *lock, char *file, int line)
{
int ret = 0;
+ int contended = 0;
if (!pthread_mutex_trylock(&lock->lock))
goto out_lock;
- pr_info("Lock contention on lock %s on %s:%d\n",
- lock->name, lock->file, lock->line);
+ contended = 1;
+ pr_info("Lock contention at %s:%d on lock %s acquired by %s at %s:%d\n",
+ file, line, lock->name,
+ lock->owner_name, lock->file, lock->line);
ret = pthread_mutex_lock(&lock->lock);
if (ret)
- pr_err("Acquirin lock %s failed: %m, acquired %s:%d\n",
+ pr_err("Acquirin lock %s failed: %m, acquired on %s:%d\n",
lock->name, lock->file, lock->line);
out_lock:
+ if (contended)
+ pr_info("Lock %s acquired at %s:%d after contention\n",
+ lock->name, file, line);
_mutex_lock_acquired(lock, file, line);
return ret;
}