@@ -23,15 +23,6 @@ class Tracer:
2323 _cata_enabled = []
2424 _cata_all = None
2525
26- _v_tracer = {
27- '4.14' : [
28- {'name' : '__netif_receive_skb_core' , 'skb' : 0 , 'level' : 1 },
29- ],
30- '5.4' : [
31- {'name' : '__netif_receive_skb_core' , 'pskb' : 0 , 'level' : 1 },
32- ]
33- }
34-
3526 @staticmethod
3627 def get_cata_all ():
3728 if Tracer ._cata_all :
@@ -139,22 +130,16 @@ def print_tracer(tracer, tab=''):
139130 Tracer .print_tracer (i , tab + ' ' )
140131
141132 @staticmethod
142- def fix_version ():
143- import subprocess
144- code , ver_str = subprocess .getstatusoutput ('uname -r' )
145- if code != 0 :
146- return
147- m = re .match (r'([0-9]+\.[0-9]+)\.' , ver_str )
148- if not m :
149- return
150- ver = m .group (1 )
151- if ver not in Tracer ._v_tracer :
152- Helper .pr_warn ('''kernel version not found! You can add your kernel
153- version in '_v_tracer' of nettrace.py\n ''' )
154- return
155- for tracer in Tracer ._v_tracer [ver ]:
156- origin = Tracer .get_cata_or_tracer (tracer ['name' ])
157- origin .update (tracer )
133+ def check_if (tracer ):
134+ if 'if' not in tracer :
135+ return True
136+ cond = tracer ['if' ]
137+ kernelVersion = kernel_version_cur ()
138+ cond = cond .replace ('kernelVersion' , str (kernelVersion ))
139+ ret = {'value' : False }
140+ cond = '''value = %s''' % cond
141+ exec (cond , ret )
142+ return ret ['value' ]
158143
159144 @staticmethod
160145 def prepare_cata (root = None ):
@@ -192,7 +177,11 @@ def init_tracers():
192177 if not cata :
193178 Helper .pr_warn ('the tracer:%s not found' % cata_str )
194179 continue
195- tracers += Tracer .get_tracers (cata )
180+ for tracer in Tracer .get_tracers (cata ):
181+ if Tracer .check_if (tracer ):
182+ tracers .append (tracer )
183+ else :
184+ tracer ['hidden' ] = True
196185 catalogs .append (cata )
197186
198187 for t in set (Helper .get_stack_tracer ()):
@@ -221,7 +210,6 @@ def init_tracers():
221210 Tracer ._tracer_enabled = tracers
222211 Tracer ._cata_enabled = catalogs
223212 Tracer .bind_parent (Tracer .get_cata_all ())
224- Tracer .fix_version ()
225213
226214 for t in tracers :
227215 p = t ['parent' ]
@@ -447,6 +435,8 @@ def init_args():
447435 Helper ._user_args = args
448436
449437 if args .tracer == '?' :
438+ args .tracer = 'all'
439+ Tracer .init_tracers ()
450440 print ('available tracer:' )
451441 print ('---------------------------------------------------\n ' )
452442 Tracer .print_tracer (Tracer .get_cata_all ())
0 commit comments