int main(int argc, char *argv[]) { int fd; int bytesRead; int longsToRead = 16; ulong buffer[1024] = {0}; ulong address, seekAdd; if (argc < 2) { printf("Usage: memread <address> [countLongs]\n"); printf(" <address> : Memory Address to read from\n"); printf(" [countLongs] : Number of LONGS to read, default=16\n"); printf(" Maximum = 1024, (4096 bytes) \n"); return 1; } if (argc > 2) { longsToRead = atoi(argv[2]); } if (longsToRead > 1024) { longsToRead = 1024; } address = strtoul(argv[1], NULL, 16); if (Debug) printf("Address = %lx, longstoread =%u\n", address, longsToRead); if (read_kmem(address, longsToRead * sizeof(ulong))) { fprintf(stderr, "read_kmem failed at %ulx\n", address); return errno; } prmem(Address, Length / sizeof(ulong)); return 0; }
mem0 () { register i; register long a; long l, r; funcpgup = pgup; funcpgdn = pgdn; funcup = up; funcdown = down; Jmprintf (2, 4, "Память %c", addr==&addr1 ? '1' : '2'); if ((memreg & (MCMD|MBIN)) == MBIN) { Jmove (1, 18); Jprintf ("6 5 4"); Jprintf (" 3 2 1 "); Jmove (2, 14); Jprintf ("4321098765432109876543210"); Jprintf ("987654321098765432109876543210987654321"); } for (i=0, a= *addr; i<19; ++i, ++a) { Jmove (i+4, 5); ptload (&l, &r, a); prmem (l, r, a & ADDRMASK); } }
static down () { long l, r; *addr = (*addr + 1) & ADDRMASK; ptload (&l, &r, *addr + 18); Jscrool (4, 22, -1); Jmove (22, 5); prmem (l, r, *addr + 18); }
static up () { long l, r; *addr = (*addr - 1) & ADDRMASK; ptload (&l, &r, *addr); Jscrool (4, 22, 1); Jmove (4, 5); prmem (l, r, *addr); }
static void pr_node (u64 id, unint indent) { unint i; dir_s dir; dname_s *dn; int rc; rc = read_dir(id, &dir); if (rc) { printf("%8lld not found because %d\n", id, rc); return; } prmem("dir", &dir, sizeof(dir)); for (i = 0; i < DIR_SZ; i++) { dn = &dir.dr_n[i]; if (dn->dn_num) { pr_indent(indent); printf(" %8lld %.*s\n", dn->dn_num, DIR_SZ, dn->dn_name); pr_node(dn->dn_num, indent + 1); } } prmem("dir", &dir, sizeof(dir)); }
void dump_node ( tree_s *tree, void *node, unint depth) { head_s *h = node; printf("node=%p\n", node); switch (h->h_magic) { case LEAF: dump_leaf(tree, (leaf_s *)h, depth); break; case BRANCH: dump_branch(tree, (branch_s *)h, depth); break; default: prmem("Unknown block magic", h, PAGE_SIZE); break; } }
void dump_block ( tree_s *tree, u64 blkno, unint indent) { void *data; //FN; data = bget(tree->t_dev, blkno); if (!data) return; switch (type(data)) { case LEAF: dump_leaf(tree, data, indent); break; case BRANCH: dump_branch(tree, data, indent); break; default: prmem("Unknown block type", data, BLK_SIZE); break; } bput(data); }