|
|
1.1 root 1: static char ID[] = "@(#) dump.c: 1.1 1/7/82";
2: #include "system.h"
3:
4: #include <stdio.h>
5: #include "structs.h"
6: #include "extrns.h"
7: /*eject*/
8: dmpacts()
9: {
10: #if DEBUG
11: register ACTITEM *p;
12: register REGION *r;
13: register MEMTYPE *m;
14:
15: if( (m = (MEMTYPE *) memlist.head) )
16: fprintf(stderr, "\n\nMEMLIST\n\n");
17: while (m) {
18: fprintf(stderr, "name=%-8.8s orig=%08.2lx len=%08.2lx attr=%04.2x\n",
19: m->mtname, m->mtorig, m->mtlength, m->mtattr);
20: m = m->mtnext;
21: }
22: if( (r = (REGION *) reglist.head) )
23: fprintf(stderr, "\n\nREGLIST\n\n");
24: while (r) {
25: fprintf(stderr, "name=%-8.8s orig=%08.2lx len=%08.2lx vaddr=%08.2lx\n",
26: r->rgname, r->rgorig, r->rglength, r->rgvaddr);
27: r = r->rgnext;
28: }
29:
30: if( (p = (ACTITEM *) ldfilist.head) )
31: fprintf(stderr, "\n\nLDFILLIST\n\n");
32: while (p) {
33: fprintf(stderr, "load file %s\n", p->ldlbry.aifilnam);
34: p=p->ldlbry.ainext;
35: }
36:
37: if( (p = (ACTITEM *) bldoutsc.head) )
38: fprintf(stderr, "\n\nBLDOUTSC\n\n");
39: while (p) {
40: dmpsecspc(p);
41: p = p->dfnscn.ainext;
42: }
43:
44: #endif
45: }
46: /*eject*/
47: dmpsecspc(p)
48: ACTITEM *p;
49: {
50: #if DEBUG
51: register ACTITEM *q;
52:
53: if (p->dfnscn.aitype == AIDFNGRP)
54: fprintf(stderr, "GROUP: owner=(%.8s) bondadr=%08.2lx align=%08.2lx block=%06.2lx\n",
55: p->dfnscn.aiowname,p->dfnscn.aibndadr,p->dfnscn.aialign, p->dfnscn.aiblock);
56: else
57: fprintf(stderr, "section %.8s: fill=%06.2x owner=(%.8s) bond=%08.2lx\n\t\talign=%08.2lx block=%06.2lx attown=%06.2x\n",
58: p->dfnscn.ainame,p->dfnscn.aifill,p->dfnscn.aiowname,p->dfnscn.aibndadr,
59: p->dfnscn.aialign, p->dfnscn.aiblock, p->dfnscn.aiattown);
60:
61: q = (ACTITEM *) p->dfnscn.sectspec.head;
62: while (q) {
63: if (q->dfnscn.aitype == AIDFNSCN)
64: dmpsecspc(q);
65: else if (q->dfnscn.aitype == AIADFILE) {
66: fprintf(stderr, "\tadd file %s\n", q->adfile.aifilnam);
67: }
68: else if (q->dfnscn.aitype == AIADDSCN)
69: fprintf(stderr, "\tadd %s(%.8s) fill=%06.2x\n",
70: q->addscn.aiscfile, q->addscn.ainame, q->addscn.aifill);
71: q = q->dfnscn.ainext;
72: }
73: #endif
74: }
75: /*eject*/
76: dump_mem()
77: {
78: #if DEBUG
79:
80: /*
81: * List the configured memory, available memory, and the
82: * regions and the pointers between them.
83: * Strictly for debugging purposes.
84: */
85:
86: register MEMTYPE *mp;
87: register REGION *rp;
88: register ANODE *ap;
89:
90: fprintf(stderr, "\n\n\tCONFIGURED MEMORY\n");
91: fprintf(stderr, "addr\torigin\tlength\thead\ttail\tattr\tname\n");
92: for( mp = (MEMTYPE *) memlist.head; mp; mp = mp->mtnext )
93: fprintf(stderr, "%4x\t%6lx\t%6lx\t%4x\t%4x\t%x\t%.8s\n",
94: mp,mp->mtorig,mp->mtlength,
95: mp->mtaddrhd,mp->mtaddrtl,
96: mp->mtattr,mp->mtname);
97:
98: fprintf(stderr, "\n\tREGIONS\n");
99: fprintf(stderr, "addr\torigin\tlength\thead\ttail\tname\n");
100: for( rp = (REGION *) reglist.head; rp; rp = rp->rgnext )
101: fprintf(stderr, "%4x\t%6lx\t%6lx\t%4x\t%4x\t%.8s\n",
102: rp,rp->rgorig,rp->rglength,rp->rgaddrhd,
103: rp->rgaddrtl,rp->rgname);
104:
105: fprintf(stderr, "\n\tAVAIL NODES\n");
106: fprintf(stderr, "addr\tprev\tnext\taddr\tsize\ttype\tmemp\tregp\toutsect\n");
107: for( ap = (ANODE *) avlist.head; ap; ap = ap->adnext ) {
108: fprintf(stderr, "%4x\t%4x\t%4x\t%6lx\t%6lx\t%4x\t%4x\t%4x",
109: ap,ap->adprev, ap->adnext, ap->adpaddr,ap->adsize,
110: ap->adtype,ap->admemp,ap->adregp);
111: if(ap->adtype != ADAVAIL)
112: fprintf(stderr, "\t%.8s",ap->adscnptr->oshdr.s_name);
113: fprintf(stderr, "\n");
114: }
115:
116: fflush(stderr);
117: #endif
118: }
119: /*eject*/
120: dmp_own(aip)
121: ACTITEM *aip;
122: {
123: #if DEBUG
124: fprintf(stderr, "\nOwner: %.8s\nOutsec: %.8s, size %x, vaddr %x, paddr %lx\n",
125: aip->dfownr.ainamown,aip->dfownr.aioutsec->oshdr.s_name,aip->dfownr.aioutsec->oshdr.s_size,
126: aip->dfownr.aioutsec->oshdr.s_vaddr,aip->dfownr.aioutsec->oshdr.s_paddr);
127:
128: fflush(stderr);
129: #endif
130: }
131:
132:
133:
134:
135:
136: dmp_att(aip)
137: ACTITEM *aip;
138: {
139: #if DEBUG
140: fprintf(stderr, "Attown: %x\nOutsec: %.8s, size %x\n",
141: aip->ownatr.aiownatt,aip->ownatr.aioutsec->oshdr.s_name,
142: aip->ownatr.aioutsec->oshdr.s_size);
143:
144: fflush(stderr);
145: #endif
146: }
147: /*eject*/
148: dmp_outsects()
149: {
150: #if DEBUG
151: register OUTSECT *p, *q;
152:
153: for( p = (OUTSECT *) outsclst.head; p; p = p->osnext ) {
154: if (p->oshdr.s_flags & STYP_GROUP) {
155: fprintf(stderr, "GROUP: size %lx, paddr %lx, vaddr %lx\n",
156: p->oshdr.s_size, p->oshdr.s_paddr,
157: p->oshdr.s_vaddr);
158: for( q = (OUTSECT *) p->osinclhd; q; q = q->osnext ) {
159: fprintf(stderr, " %.8s: size %lx, paddr %lx, vaddr %lx\n",
160: q->oshdr.s_name, q->oshdr.s_size,
161: q->oshdr.s_paddr, q->oshdr.s_vaddr);
162: }
163: }
164: else
165: fprintf(stderr, "%.8s: size %lx, paddr %lx, vaddr %lx\n",
166: p->oshdr.s_name, p->oshdr.s_size,
167: p->oshdr.s_paddr, p->oshdr.s_vaddr);
168: }
169: #endif
170: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.