Annotation of coherent/b/bin/ps/ps_b4_krnl68/search.c, revision 1.1.1.1

1.1       root        1: /* Attempt to find a reference to an address in /dev/mem.  */
                      2: #include <stdio.h>
                      3: #define ONE_CLICK 0x400        /* Number of longs in a click.  */
                      4: #define MEM_SIZE 0x460000L /* Size of memory on qiqineb.  */
                      5: #define PRESENT 0x00000001L    /* Present bit for Page Table Entries.  */
                      6: #define ADDR_PART 0xfffff000L  /* Address part of a PTE.  */
                      7: #define TRUE (1==1)
                      8: #define FALSE (1==2)
                      9: 
                     10: /* Address to look for.  */
                     11: unsigned long ref = 0x03ff000;
                     12: 
                     13: main()
                     14: {
                     15:        static unsigned long page_buffer[ONE_CLICK]; /* Load pages here.  */
                     16: 
                     17:        int fd; /* Handle for /dev/mem.  */
                     18: 
                     19:        unsigned long *base;    /* Loop through all possible clicks.  */
                     20:        unsigned long *walker;  /* Loop through each long in a click.  */
                     21: 
                     22: 
                     23:        if (-1 == (fd = open("/dev/mem", 0))) {
                     24:                perror("Can't open /dev/mem");
                     25:                exit (1);
                     26:        }
                     27: 
                     28:        for (base = 0; base < (unsigned long *) MEM_SIZE; base += ONE_CLICK) {
                     29: 
                     30:                if (-1 == read(fd, page_buffer, ONE_CLICK*sizeof(long)) ) {
                     31:                        perror("Read error");
                     32:                        exit (1);
                     33:                }
                     34:                printf(".");
                     35:                fflush(stdout);
                     36: 
                     37:                for (walker = page_buffer;
                     38:                     walker < page_buffer + ONE_CLICK;
                     39:                     ++walker) {
                     40: 
                     41:                        /* There must be at least one nonzero entry.  */
                     42: 
                     43:                        /* All PTE's must point at existant memory.  */
                     44:                        if (ref == (ADDR_PART & *walker)) {
                     45:                                printf("Ref to %x: %x\n", ref,
                     46:                                        base + (walker - page_buffer));
                     47:                        }
                     48:                } /* for (walker...)  */
                     49:        } /* for (base...) */
                     50: } /* main() */

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.