net/virtio: unmap PCI device in secondary process
[dpdk.git] / devtools / check-forbidden-tokens.awk
1 # SPDX-License-Identifier: BSD-3-Clause
2 # Copyright 2018 Arnon Warshavsky <arnon@qwilt.com>
3
4 # This awk script receives a list of expressions to monitor
5 # and a list of folders to search these expressions in
6 # - No search is done inside comments
7 # - Both additions and removals of the expressions are checked
8 #   A positive balance of additions fails the check
9
10 BEGIN {
11         split(FOLDERS,deny_folders," ");
12         split(EXPRESSIONS,deny_expr," ");
13         in_file=0;
14         in_comment=0;
15         count=0;
16         comment_start="/*"
17         comment_end="*/"
18 }
19 # search for add/remove instances in current file
20 # state machine assumes the comments structure is enforced by
21 # checkpatches.pl
22 (in_file) {
23         if ($0 ~ "^@@") {
24                 in_comment = 0
25         }
26         # comment start
27         if (index($0,comment_start) > 0) {
28                 in_comment = 1
29         }
30         # non comment code
31         if (in_comment == 0) {
32                 for (i in deny_expr) {
33                         forbidden_added = "^\\+.*" deny_expr[i];
34                         forbidden_removed="^-.*" deny_expr[i];
35                         current = expressions[deny_expr[i]]
36                         if ($0 ~ forbidden_added) {
37                                 count = count + 1;
38                                 expressions[deny_expr[i]] = current + 1
39                         }
40                         if ($0 ~ forbidden_removed) {
41                                 count = count - 1;
42                                 expressions[deny_expr[i]] = current - 1
43                         }
44                 }
45         }
46         # comment end
47         if (index($0,comment_end) > 0) {
48                 in_comment = 0
49         }
50 }
51 # switch to next file , check if the balance of add/remove
52 # of previous filehad new additions
53 ($0 ~ "^\\+\\+\\+ b/") {
54         in_file = 0;
55         if (count > 0) {
56                 exit;
57         }
58         for (i in deny_folders) {
59                 re = "^\\+\\+\\+ b/" deny_folders[i];
60                 if ($0 ~ re) {
61                         in_file = 1
62                         last_file = $0
63                 }
64         }
65 }
66 END {
67         if (count > 0) {
68                 print "Warning in " substr(last_file,7) ":"
69                 print MESSAGE
70                 exit RET_ON_FAIL
71         }
72 }