unsigned int nr_contended;
unsigned int nr_release;
- unsigned int nr_readlock;
+ union {
+ unsigned int nr_readlock;
+ unsigned int flags;
+ };
unsigned int nr_trylock;
/* these times are in nano sec. */
return NULL;
}
-static struct lock_stat *lock_stat_findnew(u64 addr, const char *name)
+static struct lock_stat *lock_stat_findnew(u64 addr, const char *name, int flags)
{
struct hlist_head *entry = lockhashentry(addr);
struct lock_stat *ret, *new;
goto alloc_failed;
new->addr = addr;
- new->name = zalloc(sizeof(char) * strlen(name) + 1);
+ new->name = strdup(name);
if (!new->name) {
free(new);
goto alloc_failed;
}
- strcpy(new->name, name);
+ new->flags = flags;
new->wait_time_min = ULLONG_MAX;
hlist_add_head(&new->hash_entry, entry);
if (show_thread_stats)
addr = sample->tid;
- ls = lock_stat_findnew(addr, name);
+ ls = lock_stat_findnew(addr, name, 0);
if (!ls)
return -ENOMEM;
if (show_thread_stats)
addr = sample->tid;
- ls = lock_stat_findnew(addr, name);
+ ls = lock_stat_findnew(addr, name, 0);
if (!ls)
return -ENOMEM;
if (show_thread_stats)
addr = sample->tid;
- ls = lock_stat_findnew(addr, name);
+ ls = lock_stat_findnew(addr, name, 0);
if (!ls)
return -ENOMEM;
if (show_thread_stats)
addr = sample->tid;
- ls = lock_stat_findnew(addr, name);
+ ls = lock_stat_findnew(addr, name, 0);
if (!ls)
return -ENOMEM;
if (!ls) {
char buf[128];
const char *caller = buf;
+ unsigned int flags = evsel__intval(evsel, sample, "flags");
if (lock_contention_caller(evsel, sample, buf, sizeof(buf)) < 0)
caller = "Unknown";
- ls = lock_stat_findnew(addr, caller);
+ ls = lock_stat_findnew(addr, caller, flags);
if (!ls)
return -ENOMEM;
}