From owner-svn-src-head@FreeBSD.ORG Sat Mar 5 14:41:50 2011 Return-Path: Delivered-To: svn-src-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 22C9A1065675; Sat, 5 Mar 2011 14:41:50 +0000 (UTC) (envelope-from trasz@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id 102598FC19; Sat, 5 Mar 2011 14:41:50 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id p25Efnul066157; Sat, 5 Mar 2011 14:41:49 GMT (envelope-from trasz@svn.freebsd.org) Received: (from trasz@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id p25Efn29066148; Sat, 5 Mar 2011 14:41:49 GMT (envelope-from trasz@svn.freebsd.org) Message-Id: <201103051441.p25Efn29066148@svn.freebsd.org> From: Edward Tomasz Napierala Date: Sat, 5 Mar 2011 14:41:49 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org X-SVN-Group: head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r219307 - in head: bin/ps sys/compat/freebsd32 sys/kern sys/sys X-BeenThere: svn-src-head@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for the src tree for head/-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 05 Mar 2011 14:41:50 -0000 Author: trasz Date: Sat Mar 5 14:41:49 2011 New Revision: 219307 URL: http://svn.freebsd.org/changeset/base/219307 Log: Export login class information via kinfo and make it possible to view it using "ps -o class". Modified: head/bin/ps/extern.h head/bin/ps/keyword.c head/bin/ps/print.c head/bin/ps/ps.1 head/sys/compat/freebsd32/freebsd32.h head/sys/kern/kern_proc.c head/sys/sys/user.h Modified: head/bin/ps/extern.h ============================================================================== --- head/bin/ps/extern.h Sat Mar 5 13:27:13 2011 (r219306) +++ head/bin/ps/extern.h Sat Mar 5 14:41:49 2011 (r219307) @@ -55,6 +55,7 @@ const char *fmt_argv(char **, char *, s double getpcpu(const KINFO *); void kvar(KINFO *, VARENT *); void label(KINFO *, VARENT *); +void loginclass(KINFO *, VARENT *); void logname(KINFO *, VARENT *); void longtname(KINFO *, VARENT *); void lstarted(KINFO *, VARENT *); Modified: head/bin/ps/keyword.c ============================================================================== --- head/bin/ps/keyword.c Sat Mar 5 13:27:13 2011 (r219306) +++ head/bin/ps/keyword.c Sat Mar 5 14:41:49 2011 (r219307) @@ -79,6 +79,8 @@ static VAR var[] = { CHAR, NULL, 0}, {"blocked", "", "sigmask", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, {"caught", "", "sigcatch", 0, NULL, NULL, 0, 0, CHAR, NULL, 0}, + {"class", "CLASS", NULL, LJUST, loginclass, NULL, MAXLOGNAME-1, 0, + CHAR, NULL, 0}, {"comm", "COMMAND", NULL, LJUST|DSIZ, ucomm, s_comm, COMMLEN + OCOMMLEN + 1, 0, CHAR, NULL, 0}, {"command", "COMMAND", NULL, COMM|LJUST|USER, command, NULL, 16, 0, Modified: head/bin/ps/print.c ============================================================================== --- head/bin/ps/print.c Sat Mar 5 13:27:13 2011 (r219306) +++ head/bin/ps/print.c Sat Mar 5 14:41:49 2011 (r219307) @@ -862,6 +862,26 @@ out: return; } +void +loginclass(KINFO *k, VARENT *ve) +{ + VAR *v; + char *s; + + v = ve->var; + /* + * Don't display login class for system processes; + * login classes are used for resource limits, + * and limits don't apply to system processes. + */ + if (k->ki_p->ki_flag & P_SYSTEM) { + (void)printf("%-*s", v->width, " -"); + return; + } + s = k->ki_p->ki_loginclass; + (void)printf("%-*s", v->width, *s ? s : "-"); +} + int s_comm(KINFO *k) { Modified: head/bin/ps/ps.1 ============================================================================== --- head/bin/ps/ps.1 Sat Mar 5 13:27:13 2011 (r219306) +++ head/bin/ps/ps.1 Sat Mar 5 14:41:49 2011 (r219307) @@ -29,7 +29,7 @@ .\" @(#)ps.1 8.3 (Berkeley) 4/18/94 .\" $FreeBSD$ .\" -.Dd July 24, 2010 +.Dd March 5, 2011 .Dt PS 1 .Os .Sh NAME @@ -280,6 +280,8 @@ be very young) it is possible for the su fields to exceed 100%. .It Cm %mem The percentage of real memory used by this process. +.It Cm class +Login class associated with the process. .It Cm flags The flags associated with the process as in the include file @@ -475,6 +477,8 @@ accounting flag (alias .Cm acflg ) .It Cm args command and arguments +.It Cm class +login class .It Cm comm command .It Cm command Modified: head/sys/compat/freebsd32/freebsd32.h ============================================================================== --- head/sys/compat/freebsd32/freebsd32.h Sat Mar 5 13:27:13 2011 (r219306) +++ head/sys/compat/freebsd32/freebsd32.h Sat Mar 5 14:41:49 2011 (r219307) @@ -316,7 +316,8 @@ struct kinfo_proc32 { char ki_lockname[LOCKNAMELEN+1]; char ki_comm[COMMLEN+1]; char ki_emul[KI_EMULNAMELEN+1]; - char ki_sparestrings[68]; + char ki_loginclass[LOGINCLASSLEN+1]; + char ki_sparestrings[50]; int ki_spareints[KI_NSPARE_INT]; u_int ki_cr_flags; int ki_jid; Modified: head/sys/kern/kern_proc.c ============================================================================== --- head/sys/kern/kern_proc.c Sat Mar 5 13:27:13 2011 (r219306) +++ head/sys/kern/kern_proc.c Sat Mar 5 14:41:49 2011 (r219307) @@ -44,6 +44,7 @@ __FBSDID("$FreeBSD$"); #include #include #include +#include #include #include #include @@ -745,6 +746,8 @@ fill_kinfo_proc_only(struct proc *p, str if (cred->cr_prison != curthread->td_ucred->cr_prison) kp->ki_jid = cred->cr_prison->pr_id; } + strlcpy(kp->ki_loginclass, cred->cr_loginclass->lc_name, + sizeof(kp->ki_loginclass)); } ps = p->p_sigacts; if (ps) { @@ -1059,6 +1062,7 @@ freebsd32_kinfo_proc_out(const struct ki bcopy(ki->ki_lockname, ki32->ki_lockname, LOCKNAMELEN + 1); bcopy(ki->ki_comm, ki32->ki_comm, COMMLEN + 1); bcopy(ki->ki_emul, ki32->ki_emul, KI_EMULNAMELEN + 1); + bcopy(ki->ki_loginclass, ki32->ki_loginclass, LOGINCLASSLEN + 1); CP(*ki, *ki32, ki_cr_flags); CP(*ki, *ki32, ki_jid); CP(*ki, *ki32, ki_numthreads); Modified: head/sys/sys/user.h ============================================================================== --- head/sys/sys/user.h Sat Mar 5 13:27:13 2011 (r219306) +++ head/sys/sys/user.h Sat Mar 5 14:41:49 2011 (r219307) @@ -100,6 +100,7 @@ #define KI_EMULNAMELEN 16 /* size of returned ki_emul */ #define KI_NGROUPS 16 /* number of groups in ki_groups */ #define LOGNAMELEN 17 /* size of returned ki_login */ +#define LOGINCLASSLEN 17 /* size of returned ki_loginclass */ /* Flags for the process credential. */ #define KI_CRF_CAPABILITY_MODE 0x00000001 @@ -172,12 +173,13 @@ struct kinfo_proc { char ki_lockname[LOCKNAMELEN+1]; /* lock name */ char ki_comm[COMMLEN+1]; /* command name */ char ki_emul[KI_EMULNAMELEN+1]; /* emulation name */ + char ki_loginclass[LOGINCLASSLEN+1]; /* login class */ /* * When adding new variables, take space for char-strings from the * front of ki_sparestrings, and ints from the end of ki_spareints. * That way the spare room from both arrays will remain contiguous. */ - char ki_sparestrings[68]; /* spare string space */ + char ki_sparestrings[50]; /* spare string space */ int ki_spareints[KI_NSPARE_INT]; /* spare room for growth */ u_int ki_cr_flags; /* Credential flags */ int ki_jid; /* Process jail ID */