Commit 0ce58bae authored by Ben Hutchings's avatar Ben Hutchings Committed by David S. Miller
Browse files

perf: net_dropmonitor: Use bisection in symbol lookup

parent 326017c7
Loading
Loading
Loading
Loading
+18 −4
Original line number Diff line number Diff line
@@ -40,9 +40,23 @@ def get_kallsyms_table():

def get_sym(sloc):
	loc = int(sloc)
	for symloc, name in kallsyms[::-1]:
		if loc >= symloc:

	# Invariant: kallsyms[i][0] <= loc for all 0 <= i <= start
	#            kallsyms[i][0] > loc for all end <= i < len(kallsyms)
	start, end = -1, len(kallsyms)
	while end != start + 1:
		pivot = (start + end) // 2
		if loc < kallsyms[pivot][0]:
			end = pivot
		else:
			start = pivot

	# Now (start == -1 or kallsyms[start][0] <= loc)
	# and (start == len(kallsyms) - 1 or loc < kallsyms[start + 1][0])
	if start >= 0:
		symloc, name = kallsyms[start]
		return (name, loc - symloc)
	else:
		return (None, 0)

def print_drop_table():