|
@@ -0,0 +1,44 @@
|
|
|
+@initialize:python@
|
|
|
+handles = {}
|
|
|
+
|
|
|
+
|
|
|
+@select@
|
|
|
+position p;
|
|
|
+identifier f =~ "^starpu_.*_data_register$";
|
|
|
+identifier e;
|
|
|
+@@
|
|
|
+<...
|
|
|
+f@p( &e, ... );
|
|
|
+...>
|
|
|
+@script:python@
|
|
|
+p << select.p;
|
|
|
+f << select.f;
|
|
|
+e << select.e;
|
|
|
+@@
|
|
|
+s = "%s(%s),%s:%s" % (f,e,p[0].file,p[0].line)
|
|
|
+# hack: 'clean' the string e from unwanted non printing characters, otherwise 'e' in select rule does not match 'e' in check rule
|
|
|
+e = "%s" % e
|
|
|
+handles[e]=s
|
|
|
+
|
|
|
+
|
|
|
+@check@
|
|
|
+position p;
|
|
|
+identifier select.e;
|
|
|
+@@
|
|
|
+<...
|
|
|
+starpu_data_unregister@p( e );
|
|
|
+...>
|
|
|
+@script:python@
|
|
|
+e << select.e;
|
|
|
+p << check.p;
|
|
|
+@@
|
|
|
+# hack: position p must be defined in the check rule even though it is not used, otherwise the 'check' python script is not run
|
|
|
+e = "%s" % e
|
|
|
+if e in handles:
|
|
|
+ del handles[e]
|
|
|
+
|
|
|
+
|
|
|
+@finalize:python@
|
|
|
+for s in handles.values():
|
|
|
+ print s
|
|
|
+
|