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