Coccinelle — це програма, яка шукає семантичні збіги у програмному коді на Сі та перетворює код використовуючи «семантичні латки». Приклад:
@@
expression lock, flags;
expression urb;
@@
spin_lock_irqsave(lock, flags);
<...
- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_ATOMIC)
...>
spin_unlock_irqrestore(lock, flags);
@@
expression urb;
@@
- usb_submit_urb(urb)
+ usb_submit_urb(urb, GFP_KERNEL)
Вираз expression оголошує, що на місці lock, flags, urb може бути будь-який вираз. Якщо виклик функції urb_submit_urb() знаходиться між викликами spin_lock_irqsave() та spin_unlock_irqrestore(), то додається параметр GFP_ATOMIC, інакше додається параметр GFP_KERNEL.
Домашня сторінка:
https://coccinelle.gitlabpages.inria.fr/website/