Changeset View
Changeset View
Standalone View
Standalone View
head/sys/compat/linprocfs/linprocfs.c
Show First 20 Lines • Show All 761 Lines • ▼ Show 20 Lines | sbuf_printf(sb, | ||||
(int)(averunnable.ldavg[2] * 100 / averunnable.fscale % 100), | (int)(averunnable.ldavg[2] * 100 / averunnable.fscale % 100), | ||||
1, /* number of running tasks */ | 1, /* number of running tasks */ | ||||
nprocs, /* number of tasks */ | nprocs, /* number of tasks */ | ||||
lastpid /* the last pid */ | lastpid /* the last pid */ | ||||
); | ); | ||||
return (0); | return (0); | ||||
} | } | ||||
static int | |||||
linprocfs_get_tty_nr(struct proc *p) | |||||
{ | |||||
struct session *sp; | |||||
const char *ttyname; | |||||
int error, major, minor, nr; | |||||
PROC_LOCK_ASSERT(p, MA_OWNED); | |||||
sx_assert(&proctree_lock, SX_LOCKED); | |||||
if ((p->p_flag & P_CONTROLT) == 0) | |||||
return (-1); | |||||
sp = p->p_pgrp->pg_session; | |||||
if (sp == NULL) | |||||
return (-1); | |||||
ttyname = devtoname(sp->s_ttyp->t_dev); | |||||
error = linux_driver_get_major_minor(ttyname, &major, &minor); | |||||
if (error != 0) | |||||
return (-1); | |||||
nr = makedev(major, minor); | |||||
return (nr); | |||||
} | |||||
/* | /* | ||||
* Filler function for proc/pid/stat | * Filler function for proc/pid/stat | ||||
*/ | */ | ||||
static int | static int | ||||
linprocfs_doprocstat(PFS_FILL_ARGS) | linprocfs_doprocstat(PFS_FILL_ARGS) | ||||
{ | { | ||||
struct kinfo_proc kp; | struct kinfo_proc kp; | ||||
struct timeval boottime; | struct timeval boottime; | ||||
char state; | char state; | ||||
static int ratelimit = 0; | static int ratelimit = 0; | ||||
int tty_nr; | |||||
vm_offset_t startcode, startdata; | vm_offset_t startcode, startdata; | ||||
getboottime(&boottime); | getboottime(&boottime); | ||||
sx_slock(&proctree_lock); | sx_slock(&proctree_lock); | ||||
PROC_LOCK(p); | PROC_LOCK(p); | ||||
fill_kinfo_proc(p, &kp); | fill_kinfo_proc(p, &kp); | ||||
tty_nr = linprocfs_get_tty_nr(p); | |||||
sx_sunlock(&proctree_lock); | sx_sunlock(&proctree_lock); | ||||
if (p->p_vmspace) { | if (p->p_vmspace) { | ||||
startcode = (vm_offset_t)p->p_vmspace->vm_taddr; | startcode = (vm_offset_t)p->p_vmspace->vm_taddr; | ||||
startdata = (vm_offset_t)p->p_vmspace->vm_daddr; | startdata = (vm_offset_t)p->p_vmspace->vm_daddr; | ||||
} else { | } else { | ||||
startcode = 0; | startcode = 0; | ||||
startdata = 0; | startdata = 0; | ||||
} | } | ||||
Show All 10 Lines | if (kp.ki_stat > sizeof(linux_state)) { | ||||
} | } | ||||
} else | } else | ||||
state = linux_state[kp.ki_stat - 1]; | state = linux_state[kp.ki_stat - 1]; | ||||
PS_ADD("state", "%c", state); | PS_ADD("state", "%c", state); | ||||
PS_ADD("ppid", "%d", p->p_pptr ? p->p_pptr->p_pid : 0); | PS_ADD("ppid", "%d", p->p_pptr ? p->p_pptr->p_pid : 0); | ||||
PS_ADD("pgrp", "%d", p->p_pgid); | PS_ADD("pgrp", "%d", p->p_pgid); | ||||
PS_ADD("session", "%d", p->p_session->s_sid); | PS_ADD("session", "%d", p->p_session->s_sid); | ||||
PROC_UNLOCK(p); | PROC_UNLOCK(p); | ||||
if (kp.ki_tdev == NODEV) | PS_ADD("tty", "%d", tty_nr); | ||||
PS_ADD("tty", "%s", "-1"); | |||||
else | |||||
PS_ADD("tty", "%ju", (uintmax_t)kp.ki_tdev); | |||||
PS_ADD("tpgid", "%d", kp.ki_tpgid); | PS_ADD("tpgid", "%d", kp.ki_tpgid); | ||||
PS_ADD("flags", "%u", 0); /* XXX */ | PS_ADD("flags", "%u", 0); /* XXX */ | ||||
PS_ADD("minflt", "%lu", kp.ki_rusage.ru_minflt); | PS_ADD("minflt", "%lu", kp.ki_rusage.ru_minflt); | ||||
PS_ADD("cminflt", "%lu", kp.ki_rusage_ch.ru_minflt); | PS_ADD("cminflt", "%lu", kp.ki_rusage_ch.ru_minflt); | ||||
PS_ADD("majflt", "%lu", kp.ki_rusage.ru_majflt); | PS_ADD("majflt", "%lu", kp.ki_rusage.ru_majflt); | ||||
PS_ADD("cmajflt", "%lu", kp.ki_rusage_ch.ru_majflt); | PS_ADD("cmajflt", "%lu", kp.ki_rusage_ch.ru_majflt); | ||||
PS_ADD("utime", "%ld", TV2J(&kp.ki_rusage.ru_utime)); | PS_ADD("utime", "%ld", TV2J(&kp.ki_rusage.ru_utime)); | ||||
PS_ADD("stime", "%ld", TV2J(&kp.ki_rusage.ru_stime)); | PS_ADD("stime", "%ld", TV2J(&kp.ki_rusage.ru_stime)); | ||||
▲ Show 20 Lines • Show All 1,041 Lines • Show Last 20 Lines |