diff options
author | Andrzej Bialecki <abial@FreeBSD.org> | 1998-08-27 17:38:45 +0000 |
---|---|---|
committer | Andrzej Bialecki <abial@FreeBSD.org> | 1998-08-27 17:38:45 +0000 |
commit | c9d8fd0a7bb8ae40b9da7c52caec851ca9d0cf3e (patch) | |
tree | 0f9c1dcefca21fb605aaf84b621c2813f01fa5e4 /release/picobsd/tinyware/sps | |
parent | 0b0c1554a87b20eb1377566bce8833788ec96394 (diff) | |
download | src-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')
-rw-r--r-- | release/picobsd/tinyware/sps/Makefile | 9 | ||||
-rw-r--r-- | release/picobsd/tinyware/sps/README | 17 | ||||
-rw-r--r-- | release/picobsd/tinyware/sps/sps.c | 104 |
3 files changed, 130 insertions, 0 deletions
diff --git a/release/picobsd/tinyware/sps/Makefile b/release/picobsd/tinyware/sps/Makefile new file mode 100644 index 000000000000..c8969bdf8e9a --- /dev/null +++ b/release/picobsd/tinyware/sps/Makefile @@ -0,0 +1,9 @@ +# $Id: Makefile,v 1.1 1998/07/16 23:21:59 abial Exp $ +# +PROG=sps +SRCS= sps.c +NOMAN=yes + +.include <bsd.prog.mk> + + diff --git a/release/picobsd/tinyware/sps/README b/release/picobsd/tinyware/sps/README new file mode 100644 index 000000000000..94098e7e3f2e --- /dev/null +++ b/release/picobsd/tinyware/sps/README @@ -0,0 +1,17 @@ +1998.07.17 + +This is a small 'ps' replacement, which uses information available via +sysctl(3) interface (contrary to the 'aps', which requires you to mount +procfs(5) to be able to get exactly the same info, so I think that 'sps' +is superior solution). + +When I have some time, I'll add usual switches and other functions that normal +'ps' has... + +The most serious limitation of 'sps' is that it's unable to retrieve the whole +command line. + + +<abial@nask.pl> + +$Id: README,v 1.1 1998/07/16 23:21:59 abial Exp $ 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); + +} |