mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-17 20:25:19 +00:00
perf tools: Introduce per user view
The new --uid command line option will show only the tasks for a given user, using the proc interface to figure out the existing tasks. Kernel work is needed to close races at startup, but this should already be useful in many use cases. Cc: David Ahern <dsahern@gmail.com> Cc: Frederic Weisbecker <fweisbec@gmail.com> Cc: Mike Galbraith <efault@gmx.de> Cc: Paul Mackerras <paulus@samba.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Stephane Eranian <eranian@google.com> Link: http://lkml.kernel.org/n/tip-bdnspm000gw2l984a2t53o8z@git.kernel.org Signed-off-by: Arnaldo Carvalho de Melo <acme@redhat.com>
This commit is contained in:
parent
9ae7d3351a
commit
0d37aa34f8
18 changed files with 200 additions and 22 deletions
|
@ -7,6 +7,7 @@
|
|||
* Copyright (C) Linus Torvalds, 2005
|
||||
*/
|
||||
#include "util.h"
|
||||
#include "debug.h"
|
||||
|
||||
static void report(const char *prefix, const char *err, va_list params)
|
||||
{
|
||||
|
@ -81,3 +82,41 @@ void warning(const char *warn, ...)
|
|||
warn_routine(warn, params);
|
||||
va_end(params);
|
||||
}
|
||||
|
||||
uid_t parse_target_uid(const char *str, pid_t tid, pid_t pid)
|
||||
{
|
||||
struct passwd pwd, *result;
|
||||
char buf[1024];
|
||||
|
||||
if (str == NULL)
|
||||
return UINT_MAX;
|
||||
|
||||
/* CPU and PID are mutually exclusive */
|
||||
if (tid > 0 || pid > 0) {
|
||||
ui__warning("PID/TID switch overriding UID\n");
|
||||
sleep(1);
|
||||
return UINT_MAX;
|
||||
}
|
||||
|
||||
getpwnam_r(str, &pwd, buf, sizeof(buf), &result);
|
||||
|
||||
if (result == NULL) {
|
||||
char *endptr;
|
||||
int uid = strtol(str, &endptr, 10);
|
||||
|
||||
if (*endptr != '\0') {
|
||||
ui__error("Invalid user %s\n", str);
|
||||
return UINT_MAX - 1;
|
||||
}
|
||||
|
||||
getpwuid_r(uid, &pwd, buf, sizeof(buf), &result);
|
||||
|
||||
if (result == NULL) {
|
||||
ui__error("Problems obtaining information for user %s\n",
|
||||
str);
|
||||
return UINT_MAX - 1;
|
||||
}
|
||||
}
|
||||
|
||||
return result->pw_uid;
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue