aboutsummaryrefslogtreecommitdiff
path: root/release/picobsd/tinyware/sps/sps.c
diff options
context:
space:
mode:
authorAndrzej Bialecki <abial@FreeBSD.org>1998-08-27 17:38:45 +0000
committerAndrzej Bialecki <abial@FreeBSD.org>1998-08-27 17:38:45 +0000
commitc9d8fd0a7bb8ae40b9da7c52caec851ca9d0cf3e (patch)
tree0f9c1dcefca21fb605aaf84b621c2813f01fa5e4 /release/picobsd/tinyware/sps/sps.c
parent0b0c1554a87b20eb1377566bce8833788ec96394 (diff)
downloadsrc-c9d8fd0a7bb8ae40b9da7c52caec851ca9d0cf3e.tar.gz
src-c9d8fd0a7bb8ae40b9da7c52caec851ca9d0cf3e.zip
Initial import of PicoBSD v0.4 tree.
Notes
Notes: svn path=/cvs2svn/branches/PICOBSD/; revision=38589
Diffstat (limited to 'release/picobsd/tinyware/sps/sps.c')
-rw-r--r--release/picobsd/tinyware/sps/sps.c104
1 files changed, 104 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/sps/sps.c b/release/picobsd/tinyware/sps/sps.c
new file mode 100644
index 000000000000..8685eae67640
--- /dev/null
+++ b/release/picobsd/tinyware/sps/sps.c
@@ -0,0 +1,104 @@
+/*-
+ * Copyright (c) 1998 Andrzej Bialecki
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $Id: sps.c,v 1.2 1998/07/17 07:55:47 abial Exp $
+ */
+
+/*
+ * Small replacement for ps(1) - uses only sysctl(3) to retrieve info
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <sys/param.h>
+#include <sys/sysctl.h>
+#include <sys/stat.h>
+#include <sys/proc.h>
+#include <sys/user.h>
+
+char p_stat[]="?iRSTZ";
+
+int
+main(int argc, char *argv[])
+{
+ int mib[3],i=0,num,len;
+ struct kinfo_proc kp,*t,*u;
+ char buf[20],vty[5],pst[5];
+ int ma,mi;
+
+ mib[0]=CTL_KERN;
+ mib[1]=KERN_PROC;
+ mib[2]=KERN_PROC_ALL;
+ if(sysctl(mib,3,NULL,&len,NULL,0)) {
+ perror("sysctl sizing");
+ exit(1);
+ }
+ t=(struct kinfo_proc *)malloc(len);
+ if(sysctl(mib,3,t,&len,NULL,0)) {
+ perror("sysctl info");
+ exit(1);
+ }
+ num=len / sizeof(struct kinfo_proc);
+ i=0;
+ printf("USERNAME PID PPID PRI NICE TTY STAT WCHAN COMMAND\n");
+ while(i<num) {
+ u=(t+num-i-1);
+ ma=major(u->kp_eproc.e_tdev);
+ mi=minor(u->kp_eproc.e_tdev);
+ switch(ma) {
+ case 255:
+ strcpy(vty,"??");
+ break;
+ case 12:
+ if(mi!=255) {
+ sprintf(vty,"v%d",mi);
+ break;
+ }
+ /* FALLTHROUGH */
+ case 0:
+ strcpy(vty,"con");
+ break;
+ case 5:
+ sprintf(vty,"p%d",mi);
+ break;
+ }
+ sprintf(pst,"%c",p_stat[u->kp_proc.p_stat]);
+ printf("%8s%5d%5d %3d %4d %3s %-4s %-7s (%s)\n",
+ u->kp_eproc.e_login,
+ u->kp_proc.p_pid,
+ u->kp_eproc.e_ppid,
+ u->kp_proc.p_priority,
+ u->kp_proc.p_nice,
+ vty,
+ pst,
+ u->kp_eproc.e_wmesg,
+ u->kp_proc.p_comm);
+ i++;
+ }
+ free(t);
+ exit(0);
+
+}