From 70c583eb819d93d8ec494880f4645be0f942c7a5 Mon Sep 17 00:00:00 2001 From: Mark Stapp Date: Tue, 22 Sep 2020 12:02:28 -0400 Subject: [PATCH] tools: add cocci patch for thread cancel api changes Add Quentin's cocci patch to align code with the changes to the event cancel api. Also added a README to explain what this collection of cocci patches is for. Signed-off-by: Quentin Young Signed-off-by: Mark Stapp --- tools/coccinelle/README.md | 14 +++++ tools/coccinelle/thread_cancel_api.cocci | 68 ++++++++++++++++++++++++ 2 files changed, 82 insertions(+) create mode 100644 tools/coccinelle/README.md create mode 100644 tools/coccinelle/thread_cancel_api.cocci diff --git a/tools/coccinelle/README.md b/tools/coccinelle/README.md new file mode 100644 index 0000000000..262ccc1da0 --- /dev/null +++ b/tools/coccinelle/README.md @@ -0,0 +1,14 @@ +Coccinelle patches +================== + +This collection of coccinelle patches represents some of the broader, +codebase-wide changes that have been made. If you maintain a fork of +FRR and find that your codebase needs to be updated to align with +these changes, the coccinelle tool should help you make that update. + +The coccinelle tool is documented at: + https://coccinelle.gitlabpages.inria.fr/website/ + +To run a coccinelle patch script: + + spatch --sp-file tools/coccinelle/semicolon.cocci zebra/*.c diff --git a/tools/coccinelle/thread_cancel_api.cocci b/tools/coccinelle/thread_cancel_api.cocci new file mode 100644 index 0000000000..cc34f9389a --- /dev/null +++ b/tools/coccinelle/thread_cancel_api.cocci @@ -0,0 +1,68 @@ +@ptrupdate@ +expression E; +@@ +- thread_cancel(E); ++ thread_cancel(&E); + +@nullcheckremove depends on ptrupdate@ +expression E; +@@ + +thread_cancel(&E); +- E = NULL; + +@cancelguardremove depends on nullcheckremove@ +expression E; +@@ +- if (E) +- { + thread_cancel(&E); +- } + +@cancelguardremove2 depends on nullcheckremove@ +expression E; +@@ +- if (E != NULL) +- { + thread_cancel(&E); +- } + +@cancelguardremove3 depends on nullcheckremove@ +expression E; +@@ +- if (E) + thread_cancel(&E); + +@cancelguardremove4 depends on nullcheckremove@ +expression E; +@@ +- if (E != NULL) + thread_cancel(&E); + +@replacetimeroff@ +expression E; +@@ + +- THREAD_TIMER_OFF(E); ++ thread_cancel(&E); + +@replacewriteoff@ +expression E; +@@ + +- THREAD_WRITE_OFF(E); ++ thread_cancel(&E); + +@replacereadoff@ +expression E; +@@ + +- THREAD_READ_OFF(E); ++ thread_cancel(&E); + +@replacethreadoff@ +expression E; +@@ + +- THREAD_OFF(E); ++ thread_cancel(&E); \ No newline at end of file