Annotation of 42BSD/ucb/gprof/lookup.c, revision 1.1.1.1

1.1       root        1: #ifndef lint
                      2:     static     char *sccsid = "@(#)lookup.c    1.3 (Berkeley) 11/2/81";
                      3: #endif lint
                      4: 
                      5: #include "gprof.h"
                      6: 
                      7:     /*
                      8:      * look up an address in a sorted-by-address namelist
                      9:      *     this deals with misses by mapping them to the next lower 
                     10:      *     entry point.
                     11:      */
                     12: nltype *
                     13: nllookup( address )
                     14:     unsigned long      address;
                     15: {
                     16:     register long      low;
                     17:     register long      middle;
                     18:     register long      high;
                     19: #   ifdef DEBUG
                     20:        register int    probes;
                     21: 
                     22:        probes = 0;
                     23: #   endif DEBUG
                     24:     for ( low = 0 , high = nname - 1 ; low != high ; ) {
                     25: #      ifdef DEBUG
                     26:            probes += 1;
                     27: #      endif DEBUG
                     28:        middle = ( high + low ) >> 1;
                     29:        if ( nl[ middle ].value <= address && nl[ middle+1 ].value > address ) {
                     30: #          ifdef DEBUG
                     31:                if ( debug & LOOKUPDEBUG ) {
                     32:                    printf( "[nllookup] %d (%d) probes\n" , probes , nname-1 );
                     33:                }
                     34: #          endif DEBUG
                     35:            return &nl[ middle ];
                     36:        }
                     37:        if ( nl[ middle ].value > address ) {
                     38:            high = middle;
                     39:        } else {
                     40:            low = middle + 1;
                     41:        }
                     42:     }
                     43:     fprintf( stderr , "[nllookup] binary search fails???\n" );
                     44:     return 0;
                     45: }
                     46: 
                     47: arctype *
                     48: arclookup( parentp , childp )
                     49:     nltype     *parentp;
                     50:     nltype     *childp;
                     51: {
                     52:     arctype    *arcp;
                     53: 
                     54:     if ( parentp == 0 || childp == 0 ) {
                     55:        fprintf( "[arclookup] parentp == 0 || childp == 0\n" );
                     56:        return 0;
                     57:     }
                     58: #   ifdef DEBUG
                     59:        if ( debug & LOOKUPDEBUG ) {
                     60:            printf( "[arclookup] parent %s child %s\n" ,
                     61:                    parentp -> name , childp -> name );
                     62:        }
                     63: #   endif DEBUG
                     64:     for ( arcp = parentp -> children ; arcp ; arcp = arcp -> arc_childlist ) {
                     65: #      ifdef DEBUG
                     66:            if ( debug & LOOKUPDEBUG ) {
                     67:                printf( "[arclookup]\t arc_parent %s arc_child %s\n" ,
                     68:                        arcp -> arc_parentp -> name ,
                     69:                        arcp -> arc_childp -> name );
                     70:            }
                     71: #      endif DEBUG
                     72:        if ( arcp -> arc_childp == childp ) {
                     73:            return arcp;
                     74:        }
                     75:     }
                     76:     return 0;
                     77: }

unix.superglobalmegacorp.com

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