1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-25 19:56:53 +00:00

Added LOADP.

This commit is contained in:
Eric Swenson
2016-12-10 18:30:41 -08:00
parent 53d7bf50b2
commit 3dd6c71095
3 changed files with 144 additions and 0 deletions

View File

@@ -145,6 +145,7 @@ There's a [DDT cheat sheet](doc/DDT.md) for Unix users.
- INQUPD, processes INQUIR change requests.
- JOBS, list jobs by category.
- LISP, lisp interpreter and runtime library (autoloads only).
- LOADP, displays system load.
- LOCK, shut down system.
- LOOKUP, looks up user info in INQUIR database.
- LUSER, request help from registered list of logged-in users

View File

@@ -847,6 +847,10 @@ respond "*" ":link sys;ts pb,sys;ts probe\r"
respond "*" ":midas sys2;ts gmsgs_sysen1;gmsgs\r"
expect ":KILL"
# LOADP
respond "*" ":midas sys2;ts loadp_sysen1;loadp\r"
expect ":KILL"
# ndskdmp tape
respond "*" ":link kshack;good ram,.;ram ram\r"
respond "*" ":link kshack;ddt bin,.;@ ddt\r"

139
src/sysen1/loadp.11 Normal file
View File

@@ -0,0 +1,139 @@
; -*- Midas -*-
title LOADP -- Prints out information on current system load.
a=1
b=2
c=3
d=4
e=5
f=6
g=7
h=10
i=11
j=12
k=13
l=14
m=15
n=16
p=17
chttyo==1
define syscal name,args
.call [setz ? sixbit /name/ ? args(400000)]
termin
beg: move p,[-lpdl,,pdl-1]
.open chttyo,[.uao,,'tty ? setz ? setz]
.lose
syscal sstatu,[repeat 8,[ ? movem nfjobs]] ;# free job slots.
.lose %lssys
move a,[squoze 0,sloadu]
.eval a,
.lose
hrli a,(a)
hrri a,fairsh
.getloc a,
movei a,10000.
idivm a,fairsh
movei b,0 ;B indexes which tty we are looking at.
setzm nfstys ;Initialize counters: # of free stys
setzm nidle1 ;# of ttys idle less than 1 minute
setzm nidle5 ;# idle less than 5 minutes
setzm nidl10 ;# idle less than ten minutes
count: syscal ttyget,[movei 400000(b) ;D gets TTYST var - negative for
repeat 3,[ ? movem d]] ; free tty.
jrst print ;Error means we have run out of tty numbers.
syscal ttyvar,[movei 400000(b) ? [sixbit/ttytyp/]
movem a]
.lose %lssys
trnn a,%tysty ;If it's a sty, is it free?
jrst count1
jumpge d,count1
aos nfstys
count1: jumpl d,count2 ;Now count all non-free ttys idle < 1 min, etc.
syscal ttyvar,[%climm,,400000(b) ? [sixbit/idltim/]
%clout,,a]
.lose %lsfil
caige a,30.*60.
aos nidle1
caige a,30.*60.*5
aos nidle5
caige a,30.*60.*10.
aos nidl10
count2: aoja b,count
ascout: hrli a,440700 ;If C=1, "#" => "", else => "s"
ascou1: ildb b,a
jumpe b,cpopj
cain b,"#
jrst [ movei b,"s
caie c,1
.iot chttyo,b
jrst ascou1]
.iot chttyo,b
jrst ascou1
decout: move c,a ;leaves number in C.
decou1: idivi a,10.
hrlm b,(p)
skipe a
pushj p,decou1
hlrz b,(p)
addi b,"0
.iot chttyo,b
cpopj: popj p,
;Having collected the data, print it out.
print: movei a,[asciz /Fair Share = /]
pushj p,ascout
move a,fairsh
pushj p,decout
movei a,[asciz /%
/]
pushj p,ascout
move a,nidle1
pushj p,decout
movei a,[asciz/ user# idle less than 1 minute.
/]
pushj p,ascout
move a,nidle5
sub a,nidle1
pushj p,decout
movei a,[asciz/ idle 1 to 5 minutes.
/]
pushj p,ascout
move a,nidl10
sub a,nidle5
pushj p,decout
movei a,[asciz/ idle 5 to 10 minutes.
/]
pushj p,ascout
move a,nfstys
pushj p,decout
movei a,[asciz/ free net port#.
/]
pushj p,ascout
move a,nfjobs
pushj p,decout
movei a,[asciz/ free job slot#./]
pushj p,ascout
.logout 1,
fairsh: 0
nfstys: 0
nfjobs: 0
nidle1: 0
nidle5: 0
nidl10: 0
patch::
pat: block 40
epatch: -1
lpdl=10
pdl: block lpdl
end beg