home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / misc / volume13 / u386mon / part01 next >
Text File  |  1990-07-02  |  46KB  |  1,503 lines

  1. Newsgroups: comp.sources.misc
  2. subject: v13i099: u386mon 1.10 (SCO&ISC UNIX monitor) part 01/04
  3. From: wht@gatech.edu@n4hgf.UUCP (Warren Tucker)
  4. Sender: allbery@uunet.UU.NET (Brandon S. Allbery - comp.sources.misc)
  5.  
  6. Posting-number: Volume 13, Issue 99
  7. Submitted-by: wht@gatech.edu@n4hgf.UUCP (Warren Tucker)
  8. Archive-name: u386mon/part01
  9.  
  10. This is u386mon, a "performance" monitor for SCO UNIX V/386.  Thanks to
  11. peter@radig.de (Peter Radig), dug@kd4nc (Doug Drye) and
  12. jdc@uudell.dell.com (Jeremy Chatfield), it also works with ISC 386/ix.
  13. It may work with other UNIX systems with a little work.  It requires
  14. terminfo style curses and will use color if you have it.  It works best
  15. with a 43 line (or greater) screen, but will work with a 25 line screen
  16. with some limitations.  It has been tested with 25 and 43 line screens
  17. on the multiscreen console and on a Wyse 60 (under SCO, using terminfo
  18. wy60, yielding interesting "color" mappings).
  19.  
  20. This little light show has already helped me diagnose the traditional
  21. "stop-the-world-and-beat-disk-continually-for-15-seconds" problem as
  22. memory exhaustion.  It has also been a good learning experience.
  23.  
  24. It has been tested extensively on SCO Unix. I know of no bugs on ISC 386/ix,
  25. but I don't have root access on a 386/ix system, so have limited
  26. test experience there.
  27.  
  28. Thanks for all the reports and suggestions, guys.  Here is the latest
  29. and greatest.  Check out the renice.
  30.  
  31. #!/bin/sh
  32. # This is u386mon.1.10, a shell archive (shar 3.30)
  33. # made 06/27/1990 06:01 UTC by wht@n4hgf
  34. # Source directory /u1/src/u386mon
  35. #
  36. # existing files WILL be overwritten
  37. #
  38. # This shar contains:
  39. # length  mode       name
  40. # ------ ---------- ------------------------------------------
  41. #  13194 -rw-r--r-- README
  42. #   7573 -rw-r--r-- Makefile.sco
  43. #   7654 -rw-r--r-- Makefile.isc
  44. #   5036 -rw-r--r-- bootinfo.c
  45. #   7070 -rw-r--r-- detail.c
  46. #  16615 -rw-r--r-- det_proc.c
  47. #  12386 -rw-r--r-- det_sio.c
  48. #   4936 -rw-r--r-- disputil.c
  49. #   2780 -rw-r--r-- libkmem.c
  50. #   2778 -rw-r--r-- libmem.c
  51. #   1964 -rw-r--r-- libswap.c
  52. #   2706 -rw-r--r-- libnlsym.c
  53. #   2933 -rw-r--r-- nlsym.c
  54. #   3411 -rw-r--r-- proc.c
  55. #   1941 -rw-r--r-- tune.c
  56. #  28919 -rw-r--r-- u386mon.c
  57. #   2079 -rw-r--r-- var.c
  58. #    859 -rw-r--r-- libkmem.h
  59. #    855 -rw-r--r-- libmem.h
  60. #    780 -rw-r--r-- libswap.h
  61. #    826 -rw-r--r-- libnlsym.h
  62. #   6985 -rw-r--r-- lint_args.h
  63. #   5457 -rw-r--r-- nlsym.h
  64. #   3211 -rw-r--r-- u386mon.h
  65. #   1186 -rw-r--r-- renice/Makefile
  66. #   4189 -rw-r--r-- renice/renice.c
  67. #
  68. if touch 2>&1 | fgrep 'mmdd' > /dev/null
  69.  then TOUCH=touch
  70.  else TOUCH=true
  71. fi
  72. # ============= README ==============
  73. echo "x - extracting README (Text)"
  74. sed 's/^X//' << 'SHAR_EOF' > README &&
  75. Xu386mon README - last updated Tue Jun 26 16:29:46 EDT 1990
  76. X
  77. XThis is u386mon, a "performance" monitor for SCO UNIX V/386.  Thanks to
  78. Xpeter@radig.de (Peter Radig), dug@kd4nc (Doug Drye) and jdc@uudell.dell.com
  79. X(Jeremy Chatfield), it also works with ISC 386/ix.  It may work with other
  80. XUNIX systems with a little work.  It requires terminfo style curses and will
  81. Xuse color if you have it.  It works best with a 43 line (or greater) screen,
  82. Xbut will work with a 25 line screen with some limitations.  It has been tested
  83. Xwith 25 and 43 line screens on the multiscreen console and on a Wyse 60 (under
  84. XSCO, using terminfo wy60, yielding interesting "color" mappings).
  85. X
  86. XThis little light show has already helped me diagnose the traditional
  87. X"stop-the-world-and-beat-disk-continually-for-15-seconds" problem as
  88. Xmemory exhaustion.  It has also been a good learning experience.
  89. X
  90. XRead through this and you will finally reach "How to get going" below.
  91. X
  92. XSample output
  93. X=============
  94. X(with 43-line screen; a 25 line screen will be missing Var/Bootinfo/Tune/Proc
  95. Xon the 'main' display)
  96. X
  97. X u386mon 1.05  n4hgf - i386 3.2                               18:24:15 wht@n4hgf
  98. X---- CPU --- tot usr ker brk ---------------------------------------------------
  99. X Instant %    24  12  12   0 uuuuuukkkkkk                                       
  100. X 5 Sec Avg %  27  13  14   0 uuuuuukkkkkkk                                      
  101. X10 Sec Avg %  22  12  10   0 uuuuuukkkkk                                        
  102. X---- Wait -- tot  io swp pio -- (% of real time) -------------------------------
  103. X Instant %     0   0   0   0                                                    
  104. X 5 Sec Avg %   0   0   0   0                                                    
  105. X10 Sec Avg %   0   0   0   0                                                    
  106. X---- Sysinfo/Minfo --- (last 1 second activity) --------------------------------
  107. Xbread         0  rawch      1     pswitch    6    vfault    0    unmodsw   0    
  108. Xbwrite        0  canch      0     syscall  167    demand    0    unmodfl   0    
  109. Xlread        23  outch   1822     sysread   85    pfault    0    psoutok   0    
  110. Xlwrite        0                   syswrit    6    cw        0    psinfai   0    
  111. Xswapin        0  msg        0     sysfork    0    steal     0    psinok    0    
  112. Xswapout       0  sema       0     sysexec    0    frdpgs    0    rsout     0    
  113. Xbswapin       0                                   vfpg      0    rsin      0    
  114. Xbswapout      0  maxmem    5716k  runque     0    sfpg      0                   
  115. Xiget          2  frmem     2260k  runocc     0    vspg      0    pages on       
  116. Xnamei         1  mem used    61%  swpque     0    sspg      0    swap      0    
  117. Xdirblk        2  nswap    10000k  swpocc     0    pnpfault  0    cache     0    
  118. Xreadch    34944  frswp     9912k                  wrtfault  0    file      0    
  119. Xwritch     2078  swp used     1%                                                
  120. X                                                                                
  121. X                                                                                
  122. X                                                                                
  123. X-- Var ---------  -- Bootinfo ----------  -- Tune ---------  -- Proc ---        
  124. Xv_autoup      10  basemem      640k       t_ageintvl      9  sleep    24        
  125. Xv_buf        600  extmem      6144k       t_bdflushr      1  run       0        
  126. Xv_clist      200  bflags   00000000       t_gpgshi       40  zombie    3        
  127. Xv_file       200  memory available        t_gpgslo       25  stop      0        
  128. Xv_hbuf        64  00000000 000a0000       t_gpgsmsk   0x420  idle      0        
  129. Xv_inode      200  00100000 00600000       t_maxfc         1  onproc    1        
  130. Xv_maxpmem      0  00f40000 00060000 NODM  t_maxsc         1  xbrk      0        
  131. Xv_maxup       60  memory used             t_maxumem    2560  total    28        
  132. Xv_mount        5  00000000 00004000 RSVD  t_minarmem     25  in mem   28        
  133. Xv_pbuf        20  006b9000 00038000 KBSS  t_minasmem     25                     
  134. Xv_proc       100  006f1000 0000f000 KDTA                                        
  135. Xv_region     210  00fa5000 0005b000 KTXT                                        
  136. Xv_vhndfrac    16                                                                
  137. X                                                                                
  138. XThe main display
  139. X================
  140. X
  141. XA brief description of reported information:
  142. X
  143. X1.  The CPU utilization is shown with smoothing of 1 ("instant"),
  144. X    5 and 10 seconds.  Total CPU usage is shown, with user, kernel
  145. X    and "break" subdivided.  Most performance utilities (vmstat)
  146. X    lump kernel (CPU_KERNEL) and wait (CPU_WAIT) times together
  147. X    as kernel time.  u386mon considers CPU_WAIT time as idle (the
  148. X    CPU could have been doing something if an otherwise ready process
  149. X    wasn't waited).
  150. X
  151. X    On a color display, total cpu utilization is displayed in
  152. X    green if the cpu utilization is below 70%, yellow if utilization
  153. X    is between 70% and 89% and red if 90% or above.
  154. X
  155. X2.  The Wait display shows the 1 ("instant"), 5 and 10 second smoothed
  156. X    percentages of real time no process could be run because otherwise
  157. X    ready to run processes were waiting on logical, swap or physical I/O.
  158. X
  159. X    On a color display, total wait time is displayed in green if it is
  160. X    below 30%, yellow if utilization is between 30% and 49% and red if
  161. X    50% or above.
  162. X
  163. X3.  Sysinfo/Minfo display shows, generally, the number of events for a
  164. X    measured value since the last display update.  For example, runque
  165. X    shows the number of times a process was placed on the run queue.
  166. X    An exception is the memory and swap space fields:  These numbers
  167. X    reflect absolute current utilization.
  168. X
  169. X4.  If you run u386mon on a 43 line display, extra information is displayed
  170. X    on the bottom of the screen (from the struct var v, bootinfo
  171. X    and proc kernel databases).
  172. X
  173. X5.  On a color display, static numeric values, such as maxmem appear
  174. X    in blue (the same color as screen literals/labels).  Dynamic
  175. X    numeric values are displayed in green, with the exception of
  176. X    total cpu and wait percentages, which appear in light green,
  177. X    red or yellow.
  178. X
  179. X6.  An "INEXACT" indication on the top line means that u386mon was
  180. X    not scheduled quickly enough to capture accurate 1 second
  181. X    values.  Continued INEXACT indication suggests the 5 and 10
  182. X    second smoothed values are also wrong.
  183. X
  184. X    An "INVALID" indication means u386mon was not scheduled for 4
  185. X    seconds or more; all dynamic values are suspect.
  186. X    IN GENERAL, if you see any red characters on the display,
  187. X    immediately take grain of salt. If you have no color screen
  188. X    and still see red, add tequila to salt.
  189. X
  190. X7.  If you are running as root, you may use the -l switch or the
  191. X    'l' command to lock u386mon into memory.  If you do this, PLOCK
  192. X    will appear at the top of the screen to remind you of this hoggy
  193. X    behavior.  The u386mon process will not be listed in a process
  194. X    status display since SSYS (locked, resident) processes are not
  195. X    shown.
  196. X
  197. X8.  The ISC bootinfo field will have different information due to
  198. X    different porting by ISC and SCO.
  199. X
  200. X9.  The 'e' command accesses the Var/Bootinfo/Tune/Proc display,
  201. X    overlaying the Sysinfo/Minfo display.
  202. X
  203. XProcess Status Display
  204. X======================
  205. X
  206. X1.  Pressing 'p' causes a process status display of sorts to be
  207. X    shown, overlaying Sysinfo/Minfo on a 25 line screen or
  208. X    Var/Bootinfo/Tune/Proc on a 43 line screen.  On a 43 line screen, 'P'
  209. X    causes a larger ps display to be shown, overlaying Sysinfo/Minfo and
  210. X    Var/Bootinfo/Tune/Proc.
  211. X
  212. X    Sample output:
  213. X
  214. XS     USER   PID  CPU PRI NI  UCPU   SCPU  SIZE TTY CMD
  215. Xs     root    148   0  26 20   0:00   0:05  108  ?? /etc/cron
  216. Xs      wht  14946   2  39 20   0:02   0:11  224  05 TMR 01000a12
  217. Xs      wht  14947   2  39 20   0:02   0:11  220  05 TMR 01011101
  218. Xs      wht  14950   0  27 20   0:00   0:02  228  05 IP 01000a12
  219. Xs      wht  14951   1  27 20   0:00   0:02  224  05 IP 01011101
  220. Xs      wht  14952   0  27 20   0:01   0:02  228  05 TP4 01000a12
  221. Xs      wht  14953   1  27 20   0:01   0:03  224  05 TP4 01011101
  222. Xs      wht  14957   0  27 20   0:00   0:04  200  05 smpad.x
  223. Xs      wht  14960   1  27 20   0:00   0:04  204  05 mmpad.x
  224. Xs     root  15044   0  28 20   0:01   0:01  296  12 vi README
  225. Xs     uucp  15053   0  30 26   0:00   0:00  696  ?? /usr/lib/uucp/uusched
  226. Xs     uucp  15055   0  30 26   0:00   0:00  748  ?? UUCICO -r1 -sgatech
  227. Xs     uucp  15060   0  28 26   0:00   0:00  768  ?? dialTBIT tty2E 2222222UC 192
  228. X
  229. X    NOTES
  230. X    a.   S - two character status
  231. X            1st character - process status
  232. X               s - sleeping
  233. X               R - ready to run (might be running if u386mon were not)
  234. X               z - zombie
  235. X               d - stopped by debugger
  236. X               i - idle (in creation?)
  237. X               p - running on processor (on single CPU systems, only u386mon
  238. X                   will show this)
  239. X               x - XBREAK - process growing or shrinking
  240. X            2nd character - process swap status
  241. X               S - process is swapped
  242. X               blank - process is in memory
  243. X
  244. X    b.  If the process is running with setuid, a '#' appears to
  245. X        the right of the username.
  246. X
  247. X    c.  On color systems, processes ready to run are shown in yellow
  248. X        unless they are ready, but swapped out, in which case they
  249. X        are shown in red.
  250. X
  251. X3.  Since a limited space is available for displaying process
  252. X    status, particularly on a 25-line screen, a selective elimination
  253. X    algorithm is used to whittle the list when insufficient room
  254. X    is available.  init (pid 1) and system/resident (SSYS)
  255. X    processes are never displayed.  When a display cycle is to begin
  256. X    and there is not room for all of the processes to be shown,
  257. X    processes are eliminated in the following order:
  258. X
  259. X    a. 'getty', 'uugetty', 'sh', 'csh', and 'ksh'
  260. X    b. swapped and zombie processes
  261. X    c. sleeping processes
  262. X
  263. X    If there is still insufficient room, an indication to the effect
  264. X    is displayed (tough cookies).
  265. X
  266. X
  267. XA $0.0002 tour: why nlsym and /unix.nlsym?
  268. X==========================================
  269. X
  270. XAccess to kernel (/dev/kmem) and physical (/dev/mem) memory and
  271. Xswap (/dev/swap) is required for u386mon to do its thing.
  272. XTo find kmem addresses of interest, an nlist(S) call must be made
  273. Xagainst /unix.  This can be quite expensive.
  274. X
  275. XThe 'nlist' procedure is performed by a separate program (nlsym)
  276. Xand the resulting nlist structure array is stored in /unix.nlsym.
  277. Xu386mon thus may obtain nlist information rapidly without nlist(S) each
  278. Xtime it is executed.  Also stored in /unix.nlsym is a stat structure of
  279. X/unix at the time of nlsym execution.  A unique word is stored at the
  280. Xend of the file in case /unix.nlsym's nlist structure is expanded for
  281. Xother applications.  The u386mon program reads /unix.nlsym by means
  282. Xof facilities in libnlsym.c.  If the stat structure in /unix.nlsym
  283. Xdoes not match a dynamic stat of /unix or if the unique word does
  284. Xnot match, the nlist information is not trusted and u386mon prompts
  285. Xthe user to run (or have run) the nlsym program to update /unix.nlsym.
  286. X
  287. XMany symbols are nlist'ed by nlsym which are not used by u386mon.
  288. XYou may find other uses for libnlsym/libkmem which make use of them.
  289. X
  290. XHow to get going
  291. X================
  292. X
  293. X1.  Copy Makefile.sco or Makefile.isc to Makefile, depending on
  294. X    your system.
  295. X
  296. X2.  Edit Makefile to change BINDIR to match your local requirements.
  297. X    If you have a kernel that knows about MERGE386 as with SCO ODT,
  298. X    add -DMERGE386 to CFLAGS. Likewise, if you have VPIX, add -DVPIX.
  299. X
  300. X3.  make all.
  301. X
  302. X4.  you must run make install as root since u386mon must be setuid to
  303. X    'mem' ('sys' for ISC) and nlsym must produce /unix.nlsym.
  304. X
  305. X5.  Sources are in 4-spaced tab format (please don't flame :-)).
  306. X
  307. X6.  Under SCO, you may have to chgrp mem /dev/swap; I did.  For some reason,
  308. X    I found the group name for /dev/swap on my system to be 'network'.
  309. X    I guess something may have been broken by my changing the group,
  310. X    but it hasn't bit me yet.
  311. X
  312. X    The ISC Makefile unconditionally sets g+r on /dev/swap, since this
  313. X    necessary permission is not ordinarily present.
  314. X
  315. X7.  usage: u386mon [-l] [-p | -P]
  316. X    -l lock process into memory (if root)
  317. X    -p begin with short ps display
  318. X    -P begin with long ps display (if 43 line screen)
  319. X
  320. X8.  If you are getting 4 as the size of most or all processes,
  321. X    try adding -DUTIME_FIXED.  SCO 3.2.0 had this info in the
  322. X    struct user fields u_tsize, u_dsize, u_ssize wrong, IMHO,
  323. X    and fixed it in ODT/3.2.1. See det_proc.c for more detail.
  324. X    Your port may/WILL vary.
  325. X
  326. X9.  The renice program by Ford Ditto, from which the kmem routines
  327. X    came, with this release.
  328. X
  329. X    usage: renice -# pid     decrease nice by #
  330. X           renice +# pid     increase nice by #
  331. X           renice =# pid     set nice to #
  332. X
  333. X    The traditional privileges for root and non-root are supported.
  334. X
  335. XComments are appreciated, especially bug fixes and information
  336. Xhelping to port the program to another 386 S5R3.2 system.
  337. X
  338. XWarren Tucker N4HGF
  339. Xemory!n4hgf!wht -or- wht%n4hgf.uucp@emory.mathcs.emory.edu
  340. SHAR_EOF
  341. $TOUCH -am 0626163190 README &&
  342. chmod 0644 README ||
  343. echo "restore of README failed"
  344. set `wc -c README`;Wc_c=$1
  345. if test "$Wc_c" != "13194"; then
  346.     echo original size 13194, current size $Wc_c
  347. fi
  348. # ============= Makefile.sco ==============
  349. echo "x - extracting Makefile.sco (Text)"
  350. sed 's/^X//' << 'SHAR_EOF' > Makefile.sco &&
  351. X#+-------------------------------------------------------------------
  352. X#  Makefile for u386mon for SCO UNIX V/386
  353. X#  ...!emory!n4hgf!wht
  354. X#--------------------------------------------------------------------
  355. X#+:EDITS:*/
  356. X#:06-27-1990-01:57-wht@n4hgf-1.10 - incorporate suggestions from alpha testers
  357. X#:06-25-1990-04:14-wht@n4hgf-1.03-better error handling
  358. X#:06-21-1990-14:27-r@n4hgf-version x0.12 seems bug free
  359. X#:06-19-1990-21:37-wht@n4hgf-get ready for 0.08 release
  360. X
  361. X#------------> CFLAGS 
  362. XCFLAGS = -c -Octl -DLINT_ARGS
  363. X#CFLAGS = -c -O
  364. X
  365. X#------------> LIB
  366. XLIB = -lpanel -ltinfo -lx
  367. X#LIB = -lpanel -lcurses -lx
  368. X
  369. X#------------> KMEMGRP
  370. XKMEMGRP = mem
  371. X#KMEMGRP = sys
  372. X
  373. X#------------> BINDIR
  374. XBINDIR = /usr/local/bin
  375. X
  376. XLDFLAGS = -s
  377. X
  378. XVERSION = 1.10
  379. X
  380. X#handle Sys V make "feature" of using SHELL
  381. XSHELL = /bin/sh
  382. X
  383. X#FCRC = fcrc -u $*.c ;
  384. X.c.o:;    $(FCRC) $(CC) $(CFLAGS) $*.c 
  385. X
  386. XSRC = \
  387. X    bootinfo.c\
  388. X    detail.c\
  389. X    det_proc.c\
  390. X    det_sio.c\
  391. X    disputil.c\
  392. X    libkmem.c\
  393. X    libmem.c\
  394. X    libswap.c\
  395. X    libnlsym.c\
  396. X    nlsym.c\
  397. X    proc.c\
  398. X    tune.c\
  399. X    u386mon.c\
  400. X    var.c
  401. X
  402. XHDR = \
  403. X    libkmem.h\
  404. X    libmem.h\
  405. X    libswap.h\
  406. X    libnlsym.h\
  407. X    lint_args.h\
  408. X    nlsym.h\
  409. X    u386mon.h
  410. X
  411. XNLSYM_OBJ =\
  412. X    nlsym.o
  413. X
  414. XU386MON_OBJ =\
  415. X    u386mon.o\
  416. X    detail.o\
  417. X    det_proc.o\
  418. X    det_sio.o\
  419. X    bootinfo.o\
  420. X    proc.o\
  421. X    tune.o\
  422. X    var.o\
  423. X    disputil.o\
  424. X    libkmem.o\
  425. X    libmem.o\
  426. X    libswap.o\
  427. X    libnlsym.o
  428. X
  429. XSHARFLS = \
  430. X    README\
  431. X    Makefile.sco\
  432. X    Makefile.isc\
  433. X    $(SRC)\
  434. X    $(HDR)\
  435. X    renice/Makefile\
  436. X    renice/renice.c
  437. X
  438. Xall: nlsym u386mon
  439. X
  440. X#must run as root
  441. Xinstall: all
  442. X    cp nlsym $(BINDIR)
  443. X    chown bin $(BINDIR)/nlsym
  444. X    chgrp bin $(BINDIR)/nlsym
  445. X    chmod 711 $(BINDIR)/nlsym
  446. X    mv u386mon $(BINDIR)
  447. X    chown bin $(BINDIR)/u386mon
  448. X    chgrp $(KMEMGRP) $(BINDIR)/u386mon
  449. X    chmod 2711 $(BINDIR)/u386mon
  450. X    nlsym
  451. X    @echo ' ';echo 'csh users rehash before executing'
  452. X
  453. Xnlsym: $(NLSYM_OBJ)
  454. X    $(CC) $(LDFLAGS) -o $@ $(NLSYM_OBJ) $(LIB)
  455. X
  456. Xu386mon: $(U386MON_OBJ)
  457. X    $(CC) $(LDFLAGS) -o $@ $(U386MON_OBJ) $(LIB)
  458. X
  459. X/unix.nlsym: nlsym /unix
  460. X    nlsym
  461. X    chmod 644 /unix.nlsym
  462. X
  463. X#not delivered
  464. Xsrc.fls: $(SRC) Makefile
  465. X    ls $(SRC) > src.fls
  466. Xlint_args: src.fls
  467. X    echo ' ' > lint_args.h
  468. X    csh zgcc src.fls lint_args.h $(CFLAGS)
  469. X
  470. Xclean:
  471. X    rm -f $(U386MON_OBJ) $(NLSYM_OBJ) \
  472. X        core u386mon.lint Makefile.bak src.fls mkdep.*
  473. X
  474. Xclobber: clean
  475. X    rm -f nlsym u386mon
  476. X
  477. Xlint:
  478. X    lint -ux *.c > u386mon.lint
  479. X
  480. X#for shar 3.27 or later
  481. Xshar:
  482. X    shar -a -n u386mon.$(VERSION) -l 55 -o $(VERSION).sh $(SHARFLS)
  483. X
  484. X# MAKE DEPEND: regenerate .c:.h, .ol:.c, .ol:.asm dependencies automatically
  485. X#
  486. Xdepend:
  487. X        rm -f mkdep.rule.tmp
  488. X        if test '$(SRC)' ;\
  489. X        then (grep '^#include' $(SRC) \
  490. X        | sed    -e 's?:[^<]*<\([^>]*\)>.*?: /usr/include/\1?'\
  491. X            -e 's?:[^"]*"\([^"]*\)".*?: \1?'\
  492. X            -e 's?\(.*\)\.c?\1.o?'\
  493. X         >> mkdep.rule.tmp) ;\
  494. X        fi
  495. X
  496. X        echo '/^# DO NOT DELETE THIS LINE' >mkdep.ex.tmp
  497. X        echo '.+1,$$d' >>mkdep.ex.tmp
  498. X        echo 'r mkdep.rule.tmp' >> mkdep.ex.tmp
  499. X        echo 'w' >> mkdep.ex.tmp
  500. X        cp Makefile Makefile.new
  501. X        ex Makefile.new < mkdep.ex.tmp
  502. X        rm mkdep.ex.tmp mkdep.rule.tmp
  503. X        echo '#    DEPENDENCIES MUST END AT END OF    FILE' >>Makefile.new
  504. X        echo '#    IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  505. X        echo '#    see make depend    above'>>Makefile.new
  506. X        mv Makefile Makefile.bak
  507. X        mv Makefile.new Makefile
  508. X
  509. X# DO NOT DELETE THIS LINE
  510. Xbootinfo.o: /usr/include/curses.h
  511. Xbootinfo.o: /usr/include/panel.h
  512. Xbootinfo.o: /usr/include/sys/types.h
  513. Xbootinfo.o: /usr/include/sys/bootinfo.h
  514. Xbootinfo.o: u386mon.h
  515. Xdetail.o: /usr/include/curses.h
  516. Xdetail.o: /usr/include/panel.h
  517. Xdetail.o: /usr/include/signal.h
  518. Xdetail.o: /usr/include/string.h
  519. Xdetail.o: /usr/include/fcntl.h
  520. Xdetail.o: /usr/include/nlist.h
  521. Xdetail.o: /usr/include/errno.h
  522. Xdetail.o: /usr/include/time.h
  523. Xdetail.o: /usr/include/pwd.h
  524. Xdetail.o: /usr/include/sys/types.h
  525. Xdetail.o: /usr/include/utmp.h
  526. Xdetail.o: /usr/include/sys/utsname.h
  527. Xdetail.o: /usr/include/sys/stat.h
  528. Xdetail.o: /usr/include/sys/ascii.h
  529. Xdetail.o: /usr/include/sys/param.h
  530. Xdetail.o: /usr/include/sys/bootinfo.h
  531. Xdetail.o: /usr/include/sys/tuneable.h
  532. Xdetail.o: /usr/include/sys/sysinfo.h
  533. Xdetail.o: /usr/include/sys/sysmacros.h
  534. Xdetail.o: /usr/include/sys/immu.h
  535. Xdetail.o: /usr/include/sys/region.h
  536. Xdetail.o: /usr/include/sys/proc.h
  537. Xdetail.o: /usr/include/sys/var.h
  538. Xdetail.o: nlsym.h
  539. Xdetail.o: libkmem.h
  540. Xdetail.o: libnlsym.h
  541. Xdetail.o: u386mon.h
  542. Xdet_proc.o: /usr/include/curses.h
  543. Xdet_proc.o: /usr/include/panel.h
  544. Xdet_proc.o: /usr/include/signal.h
  545. Xdet_proc.o: /usr/include/string.h
  546. Xdet_proc.o: /usr/include/fcntl.h
  547. Xdet_proc.o: /usr/include/nlist.h
  548. Xdet_proc.o: /usr/include/errno.h
  549. Xdet_proc.o: /usr/include/time.h
  550. Xdet_proc.o: /usr/include/pwd.h
  551. Xdet_proc.o: /usr/include/sys/types.h
  552. Xdet_proc.o: /usr/include/utmp.h
  553. Xdet_proc.o: /usr/include/sys/stat.h
  554. Xdet_proc.o: /usr/include/sys/ascii.h
  555. Xdet_proc.o: /usr/include/sys/param.h
  556. Xdet_proc.o: /usr/include/sys/bootinfo.h
  557. Xdet_proc.o: /usr/include/sys/tuneable.h
  558. Xdet_proc.o: /usr/include/sys/sysinfo.h
  559. Xdet_proc.o: /usr/include/sys/sysmacros.h
  560. Xdet_proc.o: /usr/include/sys/immu.h
  561. Xdet_proc.o: /usr/include/sys/region.h
  562. Xdet_proc.o: /usr/include/sys/proc.h
  563. Xdet_proc.o: /usr/include/sys/fs/s5dir.h
  564. Xdet_proc.o: /usr/include/sys/user.h
  565. Xdet_proc.o: /usr/include/sys/var.h
  566. Xdet_proc.o: nlsym.h
  567. Xdet_proc.o: libkmem.h
  568. Xdet_proc.o: libmem.h
  569. Xdet_proc.o: libswap.h
  570. Xdet_proc.o: libnlsym.h
  571. Xdet_proc.o: u386mon.h
  572. Xdisputil.o: /usr/include/curses.h
  573. Xdisputil.o: /usr/include/panel.h
  574. Xdisputil.o: /usr/include/sys/types.h
  575. Xdisputil.o: u386mon.h
  576. Xlibkmem.o: /usr/include/sys/types.h
  577. Xlibkmem.o: /usr/include/fcntl.h
  578. Xlibkmem.o: libkmem.h
  579. Xlibmem.o: /usr/include/sys/types.h
  580. Xlibmem.o: /usr/include/fcntl.h
  581. Xlibmem.o: libmem.h
  582. Xlibswap.o: /usr/include/sys/types.h
  583. Xlibswap.o: /usr/include/fcntl.h
  584. Xlibswap.o: libswap.h
  585. Xlibnlsym.o: /usr/include/stdio.h
  586. Xlibnlsym.o: /usr/include/sys/types.h
  587. Xlibnlsym.o: /usr/include/sys/stat.h
  588. Xlibnlsym.o: /usr/include/fcntl.h
  589. Xlibnlsym.o: /usr/include/nlist.h
  590. Xlibnlsym.o: nlsym.h
  591. Xlibnlsym.o: libnlsym.h
  592. Xnlsym.o: /usr/include/stdio.h
  593. Xnlsym.o: /usr/include/sys/types.h
  594. Xnlsym.o: /usr/include/sys/stat.h
  595. Xnlsym.o: /usr/include/fcntl.h
  596. Xnlsym.o: /usr/include/nlist.h
  597. Xnlsym.o: nlsym.h
  598. Xproc.o: /usr/include/curses.h
  599. Xproc.o: /usr/include/panel.h
  600. Xproc.o: /usr/include/sys/types.h
  601. Xproc.o: /usr/include/sys/param.h
  602. Xproc.o: /usr/include/sys/immu.h
  603. Xproc.o: /usr/include/sys/region.h
  604. Xproc.o: /usr/include/sys/proc.h
  605. Xproc.o: /usr/include/sys/var.h
  606. Xproc.o: /usr/include/nlist.h
  607. Xproc.o: nlsym.h
  608. Xproc.o: libkmem.h
  609. Xproc.o: libnlsym.h
  610. Xproc.o: u386mon.h
  611. Xtune.o: /usr/include/curses.h
  612. Xtune.o: /usr/include/panel.h
  613. Xtune.o: /usr/include/sys/types.h
  614. Xtune.o: /usr/include/sys/tuneable.h
  615. Xtune.o: u386mon.h
  616. Xu386mon.o: /usr/include/curses.h
  617. Xu386mon.o: /usr/include/panel.h
  618. Xu386mon.o: /usr/include/signal.h
  619. Xu386mon.o: /usr/include/string.h
  620. Xu386mon.o: /usr/include/fcntl.h
  621. Xu386mon.o: /usr/include/nlist.h
  622. Xu386mon.o: /usr/include/errno.h
  623. Xu386mon.o: /usr/include/time.h
  624. Xu386mon.o: /usr/include/sys/types.h
  625. Xu386mon.o: /usr/include/sys/lock.h
  626. Xu386mon.o: /usr/include/sys/utsname.h
  627. Xu386mon.o: /usr/include/sys/stat.h
  628. Xu386mon.o: /usr/include/sys/ascii.h
  629. Xu386mon.o: /usr/include/sys/param.h
  630. Xu386mon.o: /usr/include/sys/bootinfo.h
  631. Xu386mon.o: /usr/include/sys/tuneable.h
  632. Xu386mon.o: /usr/include/sys/sysinfo.h
  633. Xu386mon.o: /usr/include/sys/sysmacros.h
  634. Xu386mon.o: /usr/include/sys/immu.h
  635. Xu386mon.o: /usr/include/sys/region.h
  636. Xu386mon.o: /usr/include/sys/proc.h
  637. Xu386mon.o: /usr/include/sys/var.h
  638. Xu386mon.o: nlsym.h
  639. Xu386mon.o: libkmem.h
  640. Xu386mon.o: libmem.h
  641. Xu386mon.o: libswap.h
  642. Xu386mon.o: libnlsym.h
  643. Xu386mon.o: u386mon.h
  644. Xvar.o: /usr/include/curses.h
  645. Xvar.o: /usr/include/panel.h
  646. Xvar.o: /usr/include/sys/types.h
  647. Xvar.o: /usr/include/sys/var.h
  648. Xvar.o: u386mon.h
  649. X#    DEPENDENCIES MUST END AT END OF    FILE
  650. X#    IF YOU PUT STUFF HERE IT WILL GO AWAY
  651. X#    see make depend    above
  652. SHAR_EOF
  653. $TOUCH -am 0627015790 Makefile.sco &&
  654. chmod 0644 Makefile.sco ||
  655. echo "restore of Makefile.sco failed"
  656. set `wc -c Makefile.sco`;Wc_c=$1
  657. if test "$Wc_c" != "7573"; then
  658.     echo original size 7573, current size $Wc_c
  659. fi
  660. # ============= Makefile.isc ==============
  661. echo "x - extracting Makefile.isc (Text)"
  662. sed 's/^X//' << 'SHAR_EOF' > Makefile.isc &&
  663. X#+-------------------------------------------------------------------
  664. X#  Makefile for u386mon for ISC 386/ix
  665. X#  ...!emory!n4hgf!wht
  666. X#--------------------------------------------------------------------
  667. X#+:EDITS:*/
  668. X#:06-27-1990-01:57-wht@n4hgf-1.10 - incorporate suggestions from alpha testers
  669. X#:06-25-1990-04:14-wht@n4hgf-1.03-better error handling
  670. X#:06-24-1990-20:53-wht@n4hgf-v1.01-add ISC support thanks to peter@radig.de
  671. X#:06-21-1990-14:27-r@n4hgf-version x0.12 seems bug free
  672. X#:06-19-1990-21:37-wht@n4hgf-get ready for 0.08 release
  673. X
  674. X#------------> CFLAGS 
  675. X#CFLAGS = -c -Octl -DLINT_ARGS
  676. XCFLAGS = -c -O
  677. X
  678. X#------------> LIB
  679. X#LIB = -lpanel -ltinfo -lx
  680. XLIB = -lpanel -lcurses -lx
  681. X
  682. X#------------> KMEMGRP
  683. X#KMEMGRP = mem
  684. XKMEMGRP = sys
  685. X
  686. X#------------> BINDIR
  687. XBINDIR = /usr/local/bin
  688. X
  689. XLDFLAGS = -s
  690. X
  691. XVERSION = 1.10
  692. X
  693. X#handle Sys V make "feature" of using SHELL
  694. XSHELL = /bin/sh
  695. X
  696. X#FCRC = fcrc -u $*.c ;
  697. X.c.o:;    $(FCRC) $(CC) $(CFLAGS) $*.c 
  698. X
  699. XSRC = \
  700. X    bootinfo.c\
  701. X    detail.c\
  702. X    det_proc.c\
  703. X    det_sio.c\
  704. X    disputil.c\
  705. X    libkmem.c\
  706. X    libmem.c\
  707. X    libswap.c\
  708. X    libnlsym.c\
  709. X    nlsym.c\
  710. X    proc.c\
  711. X    tune.c\
  712. X    u386mon.c\
  713. X    var.c
  714. X
  715. XHDR = \
  716. X    libkmem.h\
  717. X    libmem.h\
  718. X    libswap.h\
  719. X    libnlsym.h\
  720. X    lint_args.h\
  721. X    nlsym.h\
  722. X    u386mon.h
  723. X
  724. XNLSYM_OBJ =\
  725. X    nlsym.o
  726. X
  727. XU386MON_OBJ =\
  728. X    u386mon.o\
  729. X    detail.o\
  730. X    det_proc.o\
  731. X    bootinfo.o\
  732. X    proc.o\
  733. X    tune.o\
  734. X    var.o\
  735. X    disputil.o\
  736. X    libkmem.o\
  737. X    libmem.o\
  738. X    libswap.o\
  739. X    libnlsym.o
  740. X
  741. XSHARFLS = \
  742. X    README\
  743. X    Makefile.sco\
  744. X    Makefile.isc\
  745. X    $(SRC)\
  746. X    $(HDR)\
  747. X    renice/Makefile\
  748. X    renice/renice.c
  749. X
  750. Xall: nlsym u386mon
  751. X
  752. X#must run as root
  753. Xinstall: all
  754. X    cp nlsym $(BINDIR)
  755. X    chown bin $(BINDIR)/nlsym
  756. X    chgrp bin $(BINDIR)/nlsym
  757. X    chmod 711 $(BINDIR)/nlsym
  758. X    mv u386mon $(BINDIR)
  759. X    chown bin $(BINDIR)/u386mon
  760. X    chgrp $(KMEMGRP) $(BINDIR)/u386mon
  761. X    chmod 2711 $(BINDIR)/u386mon
  762. X    chmod g+r /dev/swap
  763. X    nlsym
  764. X    @echo ' ';echo 'csh users rehash before executing'
  765. X
  766. Xnlsym: $(NLSYM_OBJ)
  767. X    $(CC) $(LDFLAGS) -o $@ $(NLSYM_OBJ) $(LIB)
  768. X
  769. Xu386mon: $(U386MON_OBJ)
  770. X    $(CC) $(LDFLAGS) -o $@ $(U386MON_OBJ) $(LIB)
  771. X
  772. X/unix.nlsym: nlsym /unix
  773. X    nlsym
  774. X    chmod 644 /unix.nlsym
  775. X
  776. X#not delivered
  777. Xsrc.fls: $(SRC) Makefile
  778. X    ls $(SRC) > src.fls
  779. Xlint_args: src.fls
  780. X    echo ' ' > lint_args.h
  781. X    csh zgcc src.fls lint_args.h $(CFLAGS)
  782. X
  783. Xclean:
  784. X    rm -f $(U386MON_OBJ) $(NLSYM_OBJ) \
  785. X        core u386mon.lint Makefile.bak src.fls mkdep.*
  786. X
  787. Xclobber: clean
  788. X    rm -f nlsym u386mon
  789. X
  790. Xlint:
  791. X    lint -ux *.c > u386mon.lint
  792. X
  793. X#for shar 3.27 or later
  794. Xshar:
  795. X    shar -a -n u386mon.$(VERSION) -l 55 -o $(VERSION).sh $(SHARFLS)
  796. X
  797. X# MAKE DEPEND: regenerate .c:.h, .ol:.c, .ol:.asm dependencies automatically
  798. X#
  799. Xdepend:
  800. X        rm -f mkdep.rule.tmp
  801. X        if test '$(SRC)' ;\
  802. X        then (grep '^#include' $(SRC) \
  803. X        | sed    -e 's?:[^<]*<\([^>]*\)>.*?: /usr/include/\1?'\
  804. X            -e 's?:[^"]*"\([^"]*\)".*?: \1?'\
  805. X            -e 's?\(.*\)\.c?\1.o?'\
  806. X         >> mkdep.rule.tmp) ;\
  807. X        fi
  808. X
  809. X        echo '/^# DO NOT DELETE THIS LINE' >mkdep.ex.tmp
  810. X        echo '.+1,$$d' >>mkdep.ex.tmp
  811. X        echo 'r mkdep.rule.tmp' >> mkdep.ex.tmp
  812. X        echo 'w' >> mkdep.ex.tmp
  813. X        cp Makefile Makefile.new
  814. X        ex Makefile.new < mkdep.ex.tmp
  815. X        rm mkdep.ex.tmp mkdep.rule.tmp
  816. X        echo '#    DEPENDENCIES MUST END AT END OF    FILE' >>Makefile.new
  817. X        echo '#    IF YOU PUT STUFF HERE IT WILL GO AWAY'>>Makefile.new
  818. X        echo '#    see make depend    above'>>Makefile.new
  819. X        mv Makefile Makefile.bak
  820. X        mv Makefile.new Makefile
  821. X
  822. X# DO NOT DELETE THIS LINE
  823. Xbootinfo.o: /usr/include/curses.h
  824. Xbootinfo.o: /usr/include/panel.h
  825. Xbootinfo.o: /usr/include/sys/types.h
  826. Xbootinfo.o: /usr/include/sys/bootinfo.h
  827. Xbootinfo.o: u386mon.h
  828. Xdetail.o: /usr/include/curses.h
  829. Xdetail.o: /usr/include/panel.h
  830. Xdetail.o: /usr/include/signal.h
  831. Xdetail.o: /usr/include/string.h
  832. Xdetail.o: /usr/include/fcntl.h
  833. Xdetail.o: /usr/include/nlist.h
  834. Xdetail.o: /usr/include/errno.h
  835. Xdetail.o: /usr/include/time.h
  836. Xdetail.o: /usr/include/pwd.h
  837. Xdetail.o: /usr/include/sys/types.h
  838. Xdetail.o: /usr/include/utmp.h
  839. Xdetail.o: /usr/include/sys/utsname.h
  840. Xdetail.o: /usr/include/sys/stat.h
  841. Xdetail.o: /usr/include/sys/ascii.h
  842. Xdetail.o: /usr/include/sys/param.h
  843. Xdetail.o: /usr/include/sys/bootinfo.h
  844. Xdetail.o: /usr/include/sys/tuneable.h
  845. Xdetail.o: /usr/include/sys/sysinfo.h
  846. Xdetail.o: /usr/include/sys/sysmacros.h
  847. Xdetail.o: /usr/include/sys/immu.h
  848. Xdetail.o: /usr/include/sys/region.h
  849. Xdetail.o: /usr/include/sys/proc.h
  850. Xdetail.o: /usr/include/sys/var.h
  851. Xdetail.o: nlsym.h
  852. Xdetail.o: libkmem.h
  853. Xdetail.o: libnlsym.h
  854. Xdetail.o: u386mon.h
  855. Xdet_proc.o: /usr/include/curses.h
  856. Xdet_proc.o: /usr/include/panel.h
  857. Xdet_proc.o: /usr/include/signal.h
  858. Xdet_proc.o: /usr/include/string.h
  859. Xdet_proc.o: /usr/include/fcntl.h
  860. Xdet_proc.o: /usr/include/nlist.h
  861. Xdet_proc.o: /usr/include/errno.h
  862. Xdet_proc.o: /usr/include/time.h
  863. Xdet_proc.o: /usr/include/pwd.h
  864. Xdet_proc.o: /usr/include/sys/types.h
  865. Xdet_proc.o: /usr/include/utmp.h
  866. Xdet_proc.o: /usr/include/sys/stat.h
  867. Xdet_proc.o: /usr/include/sys/ascii.h
  868. Xdet_proc.o: /usr/include/sys/param.h
  869. Xdet_proc.o: /usr/include/sys/bootinfo.h
  870. Xdet_proc.o: /usr/include/sys/tuneable.h
  871. Xdet_proc.o: /usr/include/sys/sysinfo.h
  872. Xdet_proc.o: /usr/include/sys/sysmacros.h
  873. Xdet_proc.o: /usr/include/sys/immu.h
  874. Xdet_proc.o: /usr/include/sys/region.h
  875. Xdet_proc.o: /usr/include/sys/proc.h
  876. Xdet_proc.o: /usr/include/sys/fs/s5dir.h
  877. Xdet_proc.o: /usr/include/sys/user.h
  878. Xdet_proc.o: /usr/include/sys/var.h
  879. Xdet_proc.o: nlsym.h
  880. Xdet_proc.o: libkmem.h
  881. Xdet_proc.o: libmem.h
  882. Xdet_proc.o: libswap.h
  883. Xdet_proc.o: libnlsym.h
  884. Xdet_proc.o: u386mon.h
  885. Xdisputil.o: /usr/include/curses.h
  886. Xdisputil.o: /usr/include/panel.h
  887. Xdisputil.o: /usr/include/sys/types.h
  888. Xdisputil.o: u386mon.h
  889. Xlibkmem.o: /usr/include/sys/types.h
  890. Xlibkmem.o: /usr/include/fcntl.h
  891. Xlibkmem.o: libkmem.h
  892. Xlibmem.o: /usr/include/sys/types.h
  893. Xlibmem.o: /usr/include/fcntl.h
  894. Xlibmem.o: libmem.h
  895. Xlibswap.o: /usr/include/sys/types.h
  896. Xlibswap.o: /usr/include/fcntl.h
  897. Xlibswap.o: libswap.h
  898. Xlibnlsym.o: /usr/include/stdio.h
  899. Xlibnlsym.o: /usr/include/sys/types.h
  900. Xlibnlsym.o: /usr/include/sys/stat.h
  901. Xlibnlsym.o: /usr/include/fcntl.h
  902. Xlibnlsym.o: /usr/include/nlist.h
  903. Xlibnlsym.o: nlsym.h
  904. Xlibnlsym.o: libnlsym.h
  905. Xnlsym.o: /usr/include/stdio.h
  906. Xnlsym.o: /usr/include/sys/types.h
  907. Xnlsym.o: /usr/include/sys/stat.h
  908. Xnlsym.o: /usr/include/fcntl.h
  909. Xnlsym.o: /usr/include/nlist.h
  910. Xnlsym.o: nlsym.h
  911. Xproc.o: /usr/include/curses.h
  912. Xproc.o: /usr/include/panel.h
  913. Xproc.o: /usr/include/sys/types.h
  914. Xproc.o: /usr/include/sys/param.h
  915. Xproc.o: /usr/include/sys/immu.h
  916. Xproc.o: /usr/include/sys/region.h
  917. Xproc.o: /usr/include/sys/proc.h
  918. Xproc.o: /usr/include/sys/var.h
  919. Xproc.o: /usr/include/nlist.h
  920. Xproc.o: nlsym.h
  921. Xproc.o: libkmem.h
  922. Xproc.o: libnlsym.h
  923. Xproc.o: u386mon.h
  924. Xtune.o: /usr/include/curses.h
  925. Xtune.o: /usr/include/panel.h
  926. Xtune.o: /usr/include/sys/types.h
  927. Xtune.o: /usr/include/sys/tuneable.h
  928. Xtune.o: u386mon.h
  929. Xu386mon.o: /usr/include/curses.h
  930. Xu386mon.o: /usr/include/panel.h
  931. Xu386mon.o: /usr/include/signal.h
  932. Xu386mon.o: /usr/include/string.h
  933. Xu386mon.o: /usr/include/fcntl.h
  934. Xu386mon.o: /usr/include/nlist.h
  935. Xu386mon.o: /usr/include/errno.h
  936. Xu386mon.o: /usr/include/time.h
  937. Xu386mon.o: /usr/include/sys/types.h
  938. Xu386mon.o: /usr/include/sys/lock.h
  939. Xu386mon.o: /usr/include/sys/utsname.h
  940. Xu386mon.o: /usr/include/sys/stat.h
  941. Xu386mon.o: /usr/include/sys/ascii.h
  942. Xu386mon.o: /usr/include/sys/param.h
  943. Xu386mon.o: /usr/include/sys/bootinfo.h
  944. Xu386mon.o: /usr/include/sys/tuneable.h
  945. Xu386mon.o: /usr/include/sys/sysinfo.h
  946. Xu386mon.o: /usr/include/sys/sysmacros.h
  947. Xu386mon.o: /usr/include/sys/immu.h
  948. Xu386mon.o: /usr/include/sys/region.h
  949. Xu386mon.o: /usr/include/sys/proc.h
  950. Xu386mon.o: /usr/include/sys/var.h
  951. Xu386mon.o: nlsym.h
  952. Xu386mon.o: libkmem.h
  953. Xu386mon.o: libmem.h
  954. Xu386mon.o: libswap.h
  955. Xu386mon.o: libnlsym.h
  956. Xu386mon.o: u386mon.h
  957. Xvar.o: /usr/include/curses.h
  958. Xvar.o: /usr/include/panel.h
  959. Xvar.o: /usr/include/sys/types.h
  960. Xvar.o: /usr/include/sys/var.h
  961. Xvar.o: u386mon.h
  962. X#    DEPENDENCIES MUST END AT END OF    FILE
  963. X#    IF YOU PUT STUFF HERE IT WILL GO AWAY
  964. X#    see make depend    above
  965. SHAR_EOF
  966. $TOUCH -am 0627015790 Makefile.isc &&
  967. chmod 0644 Makefile.isc ||
  968. echo "restore of Makefile.isc failed"
  969. set `wc -c Makefile.isc`;Wc_c=$1
  970. if test "$Wc_c" != "7654"; then
  971.     echo original size 7654, current size $Wc_c
  972. fi
  973. # ============= bootinfo.c ==============
  974. echo "x - extracting bootinfo.c (Text)"
  975. sed 's/^X//' << 'SHAR_EOF' > bootinfo.c &&
  976. X/*+-------------------------------------------------------------------------
  977. X    bootinfo.c - u386mon bootinfo struct display
  978. X
  979. X  Defined functions:
  980. X    bmemf_text(flags)
  981. X    display_bootinfo(win,y,x)
  982. X
  983. X--------------------------------------------------------------------------*/
  984. X/*+:EDITS:*/
  985. X/*:06-27-1990-01:57-wht@n4hgf-1.10 - incorporate suggestions from alpha testers */
  986. X/*:06-25-1990-04:14-wht@n4hgf-1.02-better error handling */
  987. X/*:06-25-1990-03:18-wht@n4hgf-ODT/3.2.1 has B_MEM_CANTDMA not B_MEM_NODMA */
  988. X/*:06-24-1990-20:53-wht@n4hgf-v1.01-add ISC support thanks to peter@radig.de */
  989. X/*:06-21-1990-14:26-r@n4hgf-version x0.12 seems bug free */
  990. X/*:06-17-1990-14:59-wht-creation */
  991. X
  992. X#define M_TERMINFO
  993. X
  994. X#include <curses.h>
  995. X#include <panel.h>
  996. X#include <sys/types.h>
  997. X#include <sys/bootinfo.h>
  998. X#include "u386mon.h"
  999. X
  1000. X/*+-------------------------------------------------------------------------
  1001. X    bmemf_text(flags)
  1002. X--------------------------------------------------------------------------*/
  1003. Xchar *
  1004. Xbmemf_text(flags)
  1005. Xulong flags;
  1006. X{
  1007. X#ifdef B_MEM_DOWN
  1008. X    flags &= ~B_MEM_DOWN;
  1009. X#endif
  1010. X    if(!flags)
  1011. X        return("    ");
  1012. X    switch(flags)
  1013. X    {
  1014. X#ifdef B_MEM_RSRVD
  1015. X        case B_MEM_RSRVD: return("RSVD");
  1016. X#endif
  1017. X#ifdef B_MEM_KBSS
  1018. X        case B_MEM_KBSS:  return("KBSS");
  1019. X#endif
  1020. X#ifdef B_MEM_KTEXT
  1021. X        case B_MEM_KTEXT: return("KTXT");
  1022. X#endif
  1023. X#ifdef B_MEM_KDATA
  1024. X        case B_MEM_KDATA: return("KDTA");
  1025. X#endif
  1026. X#ifdef B_MEM_NODMA
  1027. X        case B_MEM_NODMA: return("NODM");
  1028. X#endif
  1029. X#ifdef B_MEM_CANTDMA
  1030. X        case B_MEM_CANTDMA: return("NODM");
  1031. X#endif
  1032. X    }
  1033. X    return("????");
  1034. X}    /* end of bmemf_text */
  1035. X
  1036. X/*+-------------------------------------------------------------------------
  1037. X    ISC_machinetype_text(machine)
  1038. X--------------------------------------------------------------------------*/
  1039. X#ifdef ME_COMPAQVGA    /* ISC machdep.h */
  1040. Xchar *
  1041. XISC_machinetype_text(machine)
  1042. Xunsigned char machine;
  1043. X{
  1044. X
  1045. X    switch(machine)
  1046. X    {
  1047. X        case M_UNKNOWN:
  1048. X            return("");
  1049. X            break;
  1050. X        case M_COMPAQ:
  1051. X            return("Compaq");
  1052. X            break;
  1053. X        case M_PS2:
  1054. X            return("PS/2");
  1055. X            break;
  1056. X        case M_AT:
  1057. X            return("Generic 386");
  1058. X            break;
  1059. X        case M_ATT:
  1060. X        case M_ATT5:
  1061. X            return("AT&T 6386");
  1062. X            break;
  1063. X        case M_M380:
  1064. X            return("Olivetti M380");
  1065. X            break;
  1066. X        case M_DELL:
  1067. X            return("Dell 386");
  1068. X            break;
  1069. X        case M_D325:
  1070. X            return("Dell 325");
  1071. X            break;
  1072. X        case M_ALR:
  1073. X            return("Adv Logic Res");
  1074. X            break;
  1075. X        case M_ZDS:
  1076. X            return("Zenith Data");
  1077. X            break;
  1078. X    }
  1079. X    return("??");
  1080. X}    /* end of ISC_machinetype_text */
  1081. X#endif
  1082. X
  1083. X/*+-------------------------------------------------------------------------
  1084. X    ISC_displaytype_text(adapter)
  1085. X--------------------------------------------------------------------------*/
  1086. X#ifdef ME_COMPAQVGA    /* ISC machdep.h */
  1087. Xchar *
  1088. XISC_displaytype_text(adapter)
  1089. Xunsigned char adapter;
  1090. X{
  1091. X
  1092. X    switch(adapter)
  1093. X    {
  1094. X        case ME_UNKNOWN:
  1095. X            return("unknown");
  1096. X            break;
  1097. X        case ME_EGA:
  1098. X            return("EGA");
  1099. X            break;
  1100. X        case ME_CGA80:
  1101. X            return("CGA");
  1102. X            break;
  1103. X        case ME_MONO:
  1104. X            return("MONO");
  1105. X            break;
  1106. X        case ME_COMPAQHR:
  1107. X            return("Compaq mono");
  1108. X            break;
  1109. X        case ME_Z449:
  1110. X            return("Zenith Z449");
  1111. X            break;
  1112. X        case ME_T5100:
  1113. X            return("Toshiba T5100");
  1114. X            break;
  1115. X        case ME_COMPAQVGA:
  1116. X            return("Compaq VGA");
  1117. X            break;
  1118. X        case ME_OTHERVGA:
  1119. X            return("VGA");
  1120. X            break;
  1121. X    }
  1122. X    return("???");
  1123. X}    /* end of ISC_displaytype_text */
  1124. X#endif
  1125. X
  1126. X/*+-------------------------------------------------------------------------
  1127. X    display_bootinfo(win,y,x)
  1128. X--------------------------------------------------------------------------*/
  1129. Xvoid
  1130. Xdisplay_bootinfo(win,y,x)
  1131. XWINDOW *win;
  1132. Xint y;
  1133. Xint x;
  1134. X{
  1135. Xregister itmp;
  1136. Xregister struct bootmem *bmem;
  1137. X
  1138. X    use_cp(win,cpBANNER);
  1139. X    wmove(win,y++,x);
  1140. X    waddstr(win,"-- Bootinfo ----------");
  1141. X#ifdef M_UNIX    /* ISC doesn't have this in struct */
  1142. X    wmove(win,y++,x);
  1143. X    disp_static_long(win,"basemem  ","%7ldk     ",bootinfo.basemem / 1024);
  1144. X    wmove(win,y++,x);
  1145. X    disp_static_long(win,"extmem   ","%7ldk     ",bootinfo.extmem / 1024);
  1146. X#endif
  1147. X#ifdef ME_COMPAQVGA    /* ISC machdep.h */
  1148. X    wmove(win,y++,x);
  1149. X    wprintw(win,"machine %14.14s",
  1150. X        ISC_machinetype_text(bootinfo.machenv.machine));
  1151. X    wmove(win,y++,x);
  1152. X    wprintw(win,"disp %17.17s",
  1153. X        ISC_displaytype_text(bootinfo.machenv.adapter));
  1154. X#endif
  1155. X    wmove(win,y++,x);
  1156. X    disp_static_long(win,"bflags   ","%08lx     ",bootinfo.bootflags);
  1157. X
  1158. X    wmove(win,y++,x); waddstr(win,"memory available      ");
  1159. X    for(itmp = 0; itmp < bootinfo.memavailcnt; itmp++)
  1160. X    {
  1161. X        bmem = &bootinfo.memavail[itmp];
  1162. X#ifdef B_MEM_DOWN
  1163. X        if(bmem->flags & B_MEM_DOWN)
  1164. X        {
  1165. X            bmem->base -= bmem->extent;
  1166. X            bmem->flags &= ~B_MEM_DOWN;
  1167. X        }
  1168. X#endif
  1169. X        wmove(win,y++,x);
  1170. X        wprintw(win,"%08lx %08lx %s",bmem->base,bmem->extent,
  1171. X            bmemf_text(bmem->flags));
  1172. X    }
  1173. X
  1174. X    wmove(win,y++,x); waddstr(win,"memory used           ");
  1175. X    for(itmp = 0; itmp < bootinfo.memusedcnt; itmp++)
  1176. X    {
  1177. X        bmem = &bootinfo.memused[itmp];
  1178. X#ifdef B_MEM_DOWN
  1179. X        if(bmem->flags & B_MEM_DOWN)
  1180. X        {
  1181. X            bmem->base -= bmem->extent;
  1182. X            bmem->flags &= ~B_MEM_DOWN;
  1183. X        }
  1184. X#endif
  1185. X        wmove(win,y++,x);
  1186. X        wprintw(win,"%08lx %08lx %s",bmem->base,bmem->extent,
  1187. X            bmemf_text(bmem->flags));
  1188. X    }
  1189. X
  1190. X}    /* end of display_bootinfo */
  1191. X
  1192. X/* vi: set tabstop=4 shiftwidth=4: */
  1193. X/* end of bootinfo.c */
  1194. SHAR_EOF
  1195. $TOUCH -am 0627015790 bootinfo.c &&
  1196. chmod 0644 bootinfo.c ||
  1197. echo "restore of bootinfo.c failed"
  1198. set `wc -c bootinfo.c`;Wc_c=$1
  1199. if test "$Wc_c" != "5036"; then
  1200.     echo original size 5036, current size $Wc_c
  1201. fi
  1202. # ============= detail.c ==============
  1203. echo "x - extracting detail.c (Text)"
  1204. sed 's/^X//' << 'SHAR_EOF' > detail.c &&
  1205. X/*+-------------------------------------------------------------------------
  1206. X    detail.c - UNIX 386 system monitor detail window
  1207. X
  1208. X  Defined functions:
  1209. X    detail_init()
  1210. X    detail_panel_cmd(cmd)
  1211. X    detail_panel_update()
  1212. X    detpanel_destroy()
  1213. X    detpanel_extra_init()
  1214. X    detpanel_extra_update()
  1215. X    detpanel_ps_init(full43)
  1216. X    detpanel_ps_update()
  1217. X
  1218. X--------------------------------------------------------------------------*/
  1219. X/*+:EDITS:*/
  1220. X/*:06-27-1990-01:57-wht@n4hgf-1.10 - incorporate suggestions from alpha testers */
  1221. X/*:06-25-1990-17:34-wht@n4hgf-add detail extra for 25 line tubes */
  1222. X/*:06-25-1990-04:14-wht@n4hgf-1.02-better error handling */
  1223. X/*:06-24-1990-20:53-wht@n4hgf-v1.01-add ISC support thanks to peter@radig.de */
  1224. X/*:06-21-1990-14:26-r@n4hgf-version x0.12 seems bug free */
  1225. X/*:06-15-1990-18:32-wht@n4hgf-creation */
  1226. X
  1227. X#define M_TERMINFO
  1228. X
  1229. X#include <curses.h>
  1230. X#include <panel.h>
  1231. X#include <signal.h>
  1232. X#include <string.h>
  1233. X#include <fcntl.h>
  1234. X#include <nlist.h>
  1235. X#include <errno.h>
  1236. X#include <time.h>
  1237. X#include <pwd.h>
  1238. X#include <sys/types.h>
  1239. X#include <utmp.h>
  1240. X#include <sys/utsname.h>
  1241. X#include <sys/stat.h>
  1242. X#include <sys/ascii.h>
  1243. X#undef NGROUPS_MAX
  1244. X#undef NULL
  1245. X#include <sys/param.h>
  1246. X#include <sys/bootinfo.h>
  1247. X#include <sys/tuneable.h>
  1248. X#include <sys/sysinfo.h>
  1249. X#include <sys/sysmacros.h>
  1250. X#include <sys/immu.h>
  1251. X#include <sys/region.h>
  1252. X#include <sys/proc.h>
  1253. X#include <sys/var.h>
  1254. X
  1255. X#include "nlsym.h"
  1256. X#include "libkmem.h"
  1257. X#include "libnlsym.h"
  1258. X#include "u386mon.h"
  1259. X
  1260. X#define DPT_NONE        0
  1261. X#define DPT_PS            1
  1262. X#define DPT_PS_LONG        2
  1263. X#define DPT_EXTRA        3
  1264. X#define DPT_SIO            4
  1265. X
  1266. XPANEL *mkpanel();
  1267. X
  1268. Xextern PANEL *pscr;
  1269. Xextern WINDOW *wscr;
  1270. X
  1271. XPANEL *pdet;
  1272. XWINDOW *wdet = (WINDOW *)0;
  1273. Xu_char detpanel_type = DPT_NONE;
  1274. Xint detpanel_length;
  1275. Xint detpanel_cols;
  1276. X
  1277. X/*+-------------------------------------------------------------------------
  1278. X    detpanel_ps_init(full43)
  1279. X--------------------------------------------------------------------------*/
  1280. Xvoid
  1281. Xdetpanel_ps_init(full43)
  1282. Xint full43;
  1283. X{
  1284. X/*
  1285. X#define DETAIL_PS_COLS ((LINES >= 43) ? EXTRA4_TLX - 1 : PER_SEC4_TLX)
  1286. Xdetpanel_cols = DETAIL_PS_COLS;
  1287. X*/
  1288. X
  1289. X#define DETAIL_PS_TLY ((LINES >= 43) ? ((full43)?PER_SEC_TLY:PER_SEC_TLY+14)\
  1290. X                                     : PER_SEC_TLY)
  1291. X
  1292. X#define DETAIL_PS_LENGTH        (MSG_TLY - DETAIL_PS_TLY)
  1293. X
  1294. X    detpanel_length = DETAIL_PS_LENGTH;
  1295. X    detpanel_cols = COLS;
  1296. X    if(!(pdet = mkpanel(detpanel_length,detpanel_cols,DETAIL_PS_TLY,0)))
  1297. X    {
  1298. X        leave_text("cannot make detail panel",1);
  1299. X    }
  1300. X    show_panel(pdet);
  1301. X    top_panel(pdet);
  1302. X    wdet = panel_window(pdet);
  1303. X    display_proc_stats(wdet,1);
  1304. X
  1305. X}    /* end of detpanel_ps_init */
  1306. X
  1307. X/*+-------------------------------------------------------------------------
  1308. X    detpanel_ps_update()
  1309. X--------------------------------------------------------------------------*/
  1310. Xvoid
  1311. Xdetpanel_ps_update()
  1312. X{
  1313. X    display_proc_stats(wdet,0);
  1314. X}    /* end of detpanel_ps_update */
  1315. X
  1316. X/*+-------------------------------------------------------------------------
  1317. X    detpanel_extra_init()
  1318. X--------------------------------------------------------------------------*/
  1319. Xvoid
  1320. Xdetpanel_extra_init()
  1321. X{
  1322. X#define DETAIL_EXTRA_TLY        PER_SEC_TLY
  1323. X#define DETAIL_EXTRA_LENGTH        (MSG_TLY - DETAIL_EXTRA_TLY)
  1324. X
  1325. X    detpanel_length = DETAIL_EXTRA_LENGTH;
  1326. X    detpanel_cols = COLS;
  1327. X    if(!(pdet = mkpanel(detpanel_length,detpanel_cols,DETAIL_EXTRA_TLY,0)))
  1328. X    {
  1329. X        leave_text("cannot make detail panel",1);
  1330. X    }
  1331. X    show_panel(pdet);
  1332. X    top_panel(pdet);
  1333. X    wdet = panel_window(pdet);
  1334. X    display_var(wdet,0,EXTRA1_TLX);
  1335. X    display_bootinfo(wdet,0,EXTRA2_TLX);
  1336. X    display_tune(wdet,0,EXTRA3_TLX);
  1337. X    display_proc(wdet,0,EXTRA4_TLX);
  1338. X
  1339. X}    /* end of detpanel_extra_init */
  1340. X
  1341. X/*+-------------------------------------------------------------------------
  1342. X    detpanel_extra_update()
  1343. X--------------------------------------------------------------------------*/
  1344. Xvoid
  1345. Xdetpanel_extra_update()
  1346. X{
  1347. X    display_proc(wdet,0,EXTRA4_TLX);
  1348. X}    /* end of detpanel_extra_update */
  1349. X
  1350. X/*+-------------------------------------------------------------------------
  1351. X    detpanel_sio_init()
  1352. X--------------------------------------------------------------------------*/
  1353. X#ifdef M_UNIX
  1354. Xvoid
  1355. Xdetpanel_sio_init()
  1356. X{
  1357. X#define DETAIL_SIO_TLY ((LINES >= 43) ? (PER_SEC_TLY+14) : PER_SEC_TLY)
  1358. X#define DETAIL_SIO_LENGTH        (MSG_TLY - DETAIL_SIO_TLY)
  1359. X
  1360. X    detpanel_length = DETAIL_SIO_LENGTH;
  1361. X    detpanel_cols = COLS;
  1362. X    if(!(pdet = mkpanel(detpanel_length,detpanel_cols,DETAIL_SIO_TLY,0)))
  1363. X    {
  1364. X        leave_text("cannot make detail panel",1);
  1365. X    }
  1366. X    show_panel(pdet);
  1367. X    top_panel(pdet);
  1368. X    wdet = panel_window(pdet);
  1369. X    display_sio_summary(wdet,1);
  1370. X}    /* end of detpanel_sio_init */
  1371. X#endif
  1372. X
  1373. X/*+-------------------------------------------------------------------------
  1374. X    detpanel_sio_update()
  1375. X--------------------------------------------------------------------------*/
  1376. X#ifdef M_UNIX
  1377. Xvoid
  1378. Xdetpanel_sio_update()
  1379. X{
  1380. X    display_sio_summary(wdet,0);
  1381. X}    /* end of detpanel_sio_update */
  1382. X#endif
  1383. X
  1384. X/*+-------------------------------------------------------------------------
  1385. X    detpanel_destroy()
  1386. X--------------------------------------------------------------------------*/
  1387. Xvoid
  1388. Xdetpanel_destroy()
  1389. X{
  1390. X    hide_panel(pdet);
  1391. X    delwin(wdet);
  1392. X    wdet = (WINDOW *)0;
  1393. X    del_panel(pdet);
  1394. X    top_panel(pscr);
  1395. X    disp_msg(cpINFO,"");
  1396. X    detpanel_type = DPT_NONE;
  1397. X}    /* end of detpanel_destroy */
  1398. X
  1399. X/*+-------------------------------------------------------------------------
  1400. X    detail_panel_cmd(cmd)
  1401. X
  1402. X  command: m main screen
  1403. X           p proc status
  1404. X--------------------------------------------------------------------------*/
  1405. Xvoid
  1406. Xdetail_panel_cmd(cmd)
  1407. Xchtype cmd;
  1408. X{
  1409. X    switch(cmd)
  1410. X    {
  1411. X        case 'm':
  1412. X            if(detpanel_type != DPT_NONE)
  1413. X                detpanel_destroy();
  1414. X            break;
  1415. X
  1416. X        case 'P':
  1417. X            if(detpanel_type == DPT_PS_LONG)
  1418. X                break;
  1419. X            if(detpanel_type != DPT_NONE)
  1420. X                detpanel_destroy();
  1421. X            detpanel_ps_init(1);
  1422. X            detpanel_type = DPT_PS_LONG;
  1423. X            break;
  1424. X
  1425. X        case 'p':
  1426. X            if(detpanel_type == DPT_PS)
  1427. X                break;
  1428. X            if(detpanel_type != DPT_NONE)
  1429. X                detpanel_destroy();
  1430. X            detpanel_ps_init(0);
  1431. X            detpanel_type = DPT_PS;
  1432. X            break;
  1433. X
  1434. X        case 'e':
  1435. X            if(LINES >= 43)
  1436. X                break;
  1437. X            if(detpanel_type == DPT_EXTRA)
  1438. X                break;
  1439. X            if(detpanel_type != DPT_NONE)
  1440. X                detpanel_destroy();
  1441. X            detpanel_extra_init();
  1442. X            detpanel_type = DPT_EXTRA;
  1443. X            break;
  1444. X
  1445. X#ifdef M_UNIX
  1446. X        case 's':
  1447. X            if(detpanel_type == DPT_SIO)
  1448. X                break;
  1449. X            if(detpanel_type != DPT_NONE)
  1450. X                detpanel_destroy();
  1451. X            detpanel_sio_init();
  1452. X            detpanel_type = DPT_SIO;
  1453. X            break;
  1454. X#endif
  1455. X
  1456. X    }
  1457. X}    /* end of detail_panel_cmd */
  1458. X
  1459. X/*+-------------------------------------------------------------------------
  1460. X    detail_panel_update()
  1461. X--------------------------------------------------------------------------*/
  1462. Xvoid
  1463. Xdetail_panel_update()
  1464. X{
  1465. X    switch(detpanel_type)
  1466. X    {
  1467. X        case DPT_PS:
  1468. X        case DPT_PS_LONG:
  1469. X            detpanel_ps_update();
  1470. X            break;
  1471. X        case DPT_EXTRA:
  1472. X            detpanel_extra_update();
  1473. X            break;
  1474. X#ifdef M_UNIX
  1475. X        case DPT_SIO:
  1476. X            detpanel_sio_update();
  1477. X            break;
  1478. X#endif
  1479. X    }
  1480. X}    /* end of detail_panel_update */
  1481. X
  1482. X/*+-------------------------------------------------------------------------
  1483. X    detail_init()
  1484. X--------------------------------------------------------------------------*/
  1485. Xvoid
  1486. Xdetail_init()
  1487. X{
  1488. X}    /* end of detail_init */
  1489. X
  1490. X/* vi: set tabstop=4 shiftwidth=4: */
  1491. X/* end of detail.c */
  1492. SHAR_EOF
  1493. $TOUCH -am 0627015790 detail.c &&
  1494. chmod 0644 detail.c ||
  1495. echo "restore of detail.c failed"
  1496. set `wc -c detail.c`;Wc_c=$1
  1497. if test "$Wc_c" != "7070"; then
  1498.     echo original size 7070, current size $Wc_c
  1499. fi
  1500. echo "End of part 1, continue with part 2"
  1501. exit 0
  1502.  
  1503.