]> git.karo-electronics.de Git - karo-tx-linux.git/blob - scripts/coccinelle/misc/irqf_oneshot.cocci
Merge remote-tracking branch 'lzo-update/lzo-update'
[karo-tx-linux.git] / scripts / coccinelle / misc / irqf_oneshot.cocci
1 /// Make sure threaded IRQs without a primary handler are always request with
2 /// IRQF_ONESHOT
3 ///
4 //
5 // Confidence: Good
6 // Comments:
7 // Options: --no-includes
8
9 virtual patch
10 virtual context
11 virtual org
12 virtual report
13
14 @r1@
15 expression irq;
16 expression thread_fn;
17 expression flags;
18 position p;
19 @@
20 request_threaded_irq@p(irq, NULL, thread_fn,
21 (
22 flags | IRQF_ONESHOT
23 |
24 IRQF_ONESHOT
25 )
26 , ...)
27
28 @depends on patch@
29 expression irq;
30 expression thread_fn;
31 expression flags;
32 position p != r1.p;
33 @@
34 request_threaded_irq@p(irq, NULL, thread_fn,
35 (
36 -0
37 +IRQF_ONESHOT
38 |
39 -flags
40 +flags | IRQF_ONESHOT
41 )
42 , ...)
43
44 @depends on context@
45 position p != r1.p;
46 @@
47 *request_threaded_irq@p(...)
48
49 @match depends on report || org@
50 expression irq;
51 position p != r1.p;
52 @@
53 request_threaded_irq@p(irq, NULL, ...)
54
55 @script:python depends on org@
56 p << match.p;
57 @@
58 msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
59 coccilib.org.print_todo(p[0],msg)
60
61 @script:python depends on report@
62 p << match.p;
63 @@
64 msg = "ERROR: Threaded IRQ with no primary handler requested without IRQF_ONESHOT"
65 coccilib.report.print_report(p[0],msg)