I split out the libtracefs code from trace-cmd.git using "git subtree", which recreates all the commits of a directory and makes that directory a stand alone. I then updated the Makefiles, and copied over some of the header files used to build the library. I pushed this up to: https://git.kernel.org/pub/scm/libs/libtrace/libtracefs.git/ What libtracefs.so will be use for, is to allow programs to have an API to access the tracefs directory. Right now, it has a very limited set of functions that do the bare minimum, for example, to print all sched events: const char *tracefs_dir; char **sched_events; char *event; int i; tracefs_dir = tracefs_get_tracing_dir(); sched_events = tracefs_system_events(tracefs_dir, "sched"); if (!sched_events) return -1; for (i = 0; sched_events[i]; i++) printf("sched event: %s\n", sched_events[i]); tracefs_list_free(sched_events); We plan on adding man pages for all the functions, as well as expand the functionality. For example (TBD): char **funcs; funcs = tracefs_available_filter_functions(tracefs_dir, ".*lock.*"); Which would return a list of all functions that have "lock" in its name that can be traced by the function tracer. Same for setting and getting the ftrace filter, enabling disable events, and even setting filters and histograms. The version of this library is at 0.1.0 as we are working on it. It is currently at the stage that kernelshark can use it. Once libtracecmd is ready, then kernelshark will become its own repo as well. The repo is still a little rough around the edges, and needs some loving for making sure the library is installed properly, but it is now out there for people to have a look, and better yet, send patches! :-) Note: From now on, updates to libtraceevent and libtracefs will now be made in their corresponding git repos on kernel.org, and no longer fixed in trace-cmd or the kernel proper (with some exceptions). After a couple of years, when these are packaged in all major repos, I tend to remove the code from these other locations. -- Steve