]> git.proxmox.com Git - mirror_ubuntu-artful-kernel.git/blobdiff - tools/perf/util/sort.c
perf tools: Add 'cgroup_id' sort order keyword
[mirror_ubuntu-artful-kernel.git] / tools / perf / util / sort.c
index 93f755ac60cac715ff31e3118281873a26c2df77..8b0d4e39f6402fa6f836821d43ee9a52115aea36 100644 (file)
@@ -536,6 +536,46 @@ struct sort_entry sort_cpu = {
        .se_width_idx   = HISTC_CPU,
 };
 
+/* --sort cgroup_id */
+
+static int64_t _sort__cgroup_dev_cmp(u64 left_dev, u64 right_dev)
+{
+       return (int64_t)(right_dev - left_dev);
+}
+
+static int64_t _sort__cgroup_inode_cmp(u64 left_ino, u64 right_ino)
+{
+       return (int64_t)(right_ino - left_ino);
+}
+
+static int64_t
+sort__cgroup_id_cmp(struct hist_entry *left, struct hist_entry *right)
+{
+       int64_t ret;
+
+       ret = _sort__cgroup_dev_cmp(right->cgroup_id.dev, left->cgroup_id.dev);
+       if (ret != 0)
+               return ret;
+
+       return _sort__cgroup_inode_cmp(right->cgroup_id.ino,
+                                      left->cgroup_id.ino);
+}
+
+static int hist_entry__cgroup_id_snprintf(struct hist_entry *he,
+                                         char *bf, size_t size,
+                                         unsigned int width __maybe_unused)
+{
+       return repsep_snprintf(bf, size, "%lu/0x%lx", he->cgroup_id.dev,
+                              he->cgroup_id.ino);
+}
+
+struct sort_entry sort_cgroup_id = {
+       .se_header      = "cgroup id (dev/inode)",
+       .se_cmp         = sort__cgroup_id_cmp,
+       .se_snprintf    = hist_entry__cgroup_id_snprintf,
+       .se_width_idx   = HISTC_CGROUP_ID,
+};
+
 /* --sort socket */
 
 static int64_t
@@ -1464,6 +1504,7 @@ static struct sort_dimension common_sort_dimensions[] = {
        DIM(SORT_TRANSACTION, "transaction", sort_transaction),
        DIM(SORT_TRACE, "trace", sort_trace),
        DIM(SORT_SYM_SIZE, "symbol_size", sort_sym_size),
+       DIM(SORT_CGROUP_ID, "cgroup_id", sort_cgroup_id),
 };
 
 #undef DIM