__s32 (*resolve_address)(void *ctx, __u64 address, struct perf_dlfilter_al *al);
        const __u8 *(*insn)(void *ctx, __u32 *length);
        const char *(*srcline)(void *ctx, __u32 *line_number);
-       void *(*reserved[122])(void *);
+       struct perf_event_attr *(*attr)(void *ctx);
+       void *(*reserved[121])(void *);
 };
 ----
 
 
 'srcline' return source file name and line number.
 
+'attr' returns perf_event_attr, refer <linux/perf_event.h>.
+
 The perf_dlfilter_al structure
 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
 
        return srcfile;
 }
 
+static struct perf_event_attr *dlfilter__attr(void *ctx)
+{
+       struct dlfilter *d = (struct dlfilter *)ctx;
+
+       if (!d->ctx_valid)
+               return NULL;
+
+       return &d->evsel->core.attr;
+}
+
 static const struct perf_dlfilter_fns perf_dlfilter_fns = {
        .resolve_ip      = dlfilter__resolve_ip,
        .resolve_addr    = dlfilter__resolve_addr,
        .resolve_address = dlfilter__resolve_address,
        .insn            = dlfilter__insn,
        .srcline         = dlfilter__srcline,
+       .attr            = dlfilter__attr,
 };
 
 static char *find_dlfilter(const char *file)
 
        const __u8 *(*insn)(void *ctx, __u32 *length);
        /* Return source file name and line number */
        const char *(*srcline)(void *ctx, __u32 *line_number);
+       /* Return perf_event_attr, refer <linux/perf_event.h> */
+       struct perf_event_attr *(*attr)(void *ctx);
        /* Reserved */
-       void *(*reserved[122])(void *);
+       void *(*reserved[121])(void *);
 };
 
 /*