| @@ | 
 | expression T; | 
 | @@ | 
 | -msleep(T); | 
 | +kthread_usleep(1000 * T); | 
 |  | 
 | @@ | 
 | expression TMIN; | 
 | expression TMAX; | 
 | @@ | 
 | -usleep_range(TMIN, TMAX); | 
 | +kthread_usleep(TMIN); | 
 |  | 
 | // barriers | 
 | @@ | 
 | @@ | 
 | -barrier(); | 
 | +cmb(); | 
 |  | 
 | @@ | 
 | @@ | 
 | -smp_mb(); | 
 | +mb(); | 
 |  | 
 | @@ | 
 | @@ | 
 | -smp_rmb(); | 
 | +rmb(); | 
 |  | 
 | @@ | 
 | @@ | 
 | -smp_wmb(); | 
 | +wmb(); | 
 |  | 
 | @@ | 
 | expression A0; | 
 | expression A1; | 
 | @@ | 
 | -min(A0, A1) | 
 | +MIN(A0, A1) | 
 |  | 
 | @@ | 
 | expression A0; | 
 | expression A1; | 
 | @@ | 
 | -max(A0, A1) | 
 | +MAX(A0, A1) | 
 |  | 
 | @@ | 
 | expression LO; | 
 | expression HI; | 
 | expression V; | 
 | @@ | 
 | -clamp(V, LO, HI) | 
 | +CLAMP(V, LO, HI) | 
 |  | 
 | @@ | 
 | expression A0; | 
 | expression A1; | 
 | type T; | 
 | @@ | 
 | -min_t(T, A0, A1) | 
 | +MIN_T(T, A0, A1) | 
 |  | 
 | @@ | 
 | expression A0; | 
 | expression A1; | 
 | type T; | 
 | @@ | 
 | -max_t(T, A0, A1) | 
 | +MAX_T(T, A0, A1) | 
 |  | 
 | @@ | 
 | expression LO; | 
 | expression HI; | 
 | expression V; | 
 | type T; | 
 | @@ | 
 | -clamp_t(T, V, LO, HI) | 
 | +CLAMP_T(T, V, LO, HI) | 
 |  | 
 |  | 
 | // locking | 
 | // being conservative: they might not need irqsave | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -spin_lock_init(E) | 
 | +spinlock_init_irqsave(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -spin_lock_bh(E) | 
 | +spin_lock_irqsave(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -spin_unlock_bh(E) | 
 | +spin_unlock_irqsave(E) | 
 | @@ | 
 |  | 
 | expression E; | 
 | @@ | 
 | -spin_lock_irq(E) | 
 | +spin_lock_irqsave(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -spin_unlock_irq(E) | 
 | +spin_unlock_irqsave(E) | 
 |  | 
 | @@ | 
 | expression lock, flags; | 
 | @@ | 
 | -spin_lock_irqsave(lock, flags) | 
 | +spin_lock_irqsave(lock) | 
 | ... | 
 | -spin_unlock_irqrestore(lock, flags) | 
 | +spin_unlock_irqsave(lock) | 
 |  | 
 | @@ | 
 | typedef raw_spinlock_t; | 
 | typedef spinlock_t; | 
 | @@ | 
 | -raw_spinlock_t | 
 | +spinlock_t | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -raw_spin_lock_init(E) | 
 | +spinlock_init_irqsave(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -raw_spin_lock(E) | 
 | +spin_lock_irqsave(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -raw_spin_unlock(E) | 
 | +spin_unlock_irqsave(E) | 
 |  | 
 | @@ | 
 | expression lock, flags; | 
 | @@ | 
 | -raw_spin_lock_irqsave(lock, flags) | 
 | +spin_lock_irqsave(lock) | 
 | ... | 
 | -raw_spin_unlock_irqrestore(lock, flags) | 
 | +spin_unlock_irqsave(lock) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -ilog2(E) | 
 | +LOG2_UP(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -roundup_pow_of_two(E) | 
 | +ROUNDUPPWR2(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -rounddown_pow_of_two(E) | 
 | +ROUNDDOWNPWR2(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -is_power_of_2(E) | 
 | +IS_PWR2(E) | 
 |  | 
 | @@ | 
 | expression DST; | 
 | expression SRC; | 
 | expression LEN; | 
 | @@ | 
 | -copy_from_user(DST, SRC, LEN) | 
 | +memcpy_from_user(current, DST, SRC, LEN) | 
 |  | 
 | @@ | 
 | expression DST; | 
 | expression SRC; | 
 | expression LEN; | 
 | @@ | 
 | -copy_to_user(DST, SRC, LEN) | 
 | +memcpy_to_user(current, DST, SRC, LEN) | 
 |  | 
 | @@ | 
 | @@ | 
 | -ktime_get_real() | 
 | +epoch_nsec() | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -ktime_to_ns(E) | 
 | +E | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -htonl(E) | 
 | +cpu_to_be32(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -htons(E) | 
 | +cpu_to_be16(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -ntohl(E) | 
 | +be32_to_cpu(E) | 
 |  | 
 | @@ | 
 | expression E; | 
 | @@ | 
 | -ntohs(E) | 
 | +be16_to_cpu(E) | 
 |  | 
 | @@ | 
 | @@ | 
 | -smp_processor_id() | 
 | +core_id() | 
 |  | 
 | // This is a little half-assed.  Any fix will need to be manually edited to | 
 | // provide a pointer to the pci device.  And you'll need to fix your handler to | 
 | // be the correct type. | 
 | @@ | 
 | expression IRQ; | 
 | expression HANDLER; | 
 | expression FLAGS; | 
 | expression NAME; | 
 | expression ARG; | 
 | @@ | 
 | -request_irq(IRQ, HANDLER, FLAGS, NAME, ARG) | 
 | +register_irq(IRQ, HANDLER, ARG, pci_to_tbdf(PCIDEV)) | 
 |  | 
 | // There are 3 return types for the irq handlers, IRQ_NONE, IRQ_HANDLED, and | 
 | // IRQ_WAKE_THREAD.  We can change the first two to just return.  The latter | 
 | // will need manual attention, since they want a thread to handle the rest. | 
 | @@ | 
 | identifier HANDLER; | 
 | typedef irqreturn_t; | 
 | @@ | 
 | irqreturn_t HANDLER(...) { | 
 | <... | 
 | -return IRQ_NONE; | 
 | +return; | 
 | ...> | 
 | } | 
 |  | 
 | // Need to comment out irqreturn_t, I guess because it's in a previous rule | 
 | @@ | 
 | identifier HANDLER; | 
 | //typedef irqreturn_t; | 
 | @@ | 
 | irqreturn_t HANDLER(...) { | 
 | <... | 
 | -return IRQ_HANDLED; | 
 | +return; | 
 | ...> | 
 | } | 
 |  | 
 | // There should be a way to catch both decl and def at once... | 
 | // Changes the definition | 
 | @@ | 
 | identifier HANDLER; | 
 | //typedef irqreturn_t; | 
 | identifier IRQ; | 
 | identifier ARG; | 
 | @@ | 
 | -irqreturn_t HANDLER(int IRQ, void *ARG | 
 | +void HANDLER(struct hw_trapframe *hw_tf, void *ARG | 
 |  ) { ... } | 
 |  | 
 | // Changes the declaration | 
 | @@ | 
 | identifier HANDLER; | 
 | //typedef irqreturn_t; | 
 | identifier IRQ; | 
 | identifier ARG; | 
 | @@ | 
 | -irqreturn_t HANDLER(int IRQ, void *ARG | 
 | +void HANDLER(struct hw_trapframe *hw_tf, void *ARG | 
 |  ); | 
 |  | 
 | @@ | 
 | expression VAL; | 
 | expression UP; | 
 | @@ | 
 | -roundup(VAL, UP) | 
 | +ROUNDUP(VAL, UP) | 
 |  | 
 | @@ | 
 | expression VAL; | 
 | expression DOWN; | 
 | @@ | 
 | -rounddown(VAL, DOWN) | 
 | +ROUNDDOWN(VAL, DOWN) | 
 |  | 
 | @@ | 
 | expression STMT; | 
 | @@ | 
 | -BUG_ON(STMT) | 
 | +assert(!(STMT)) | 
 |  | 
 | @@ | 
 | expression STMT; | 
 | @@ | 
 | -BUILD_BUG_ON(STMT) | 
 | +static_assert(!(STMT)) | 
 |  | 
 | @@ | 
 | @@ | 
 | -BUG() | 
 | +panic("BUG") | 
 |  | 
 | @@ | 
 | @@ | 
 | -WARN_ON | 
 | +warn_on | 
 |  | 
 | @@ | 
 | @@ | 
 | -WARN_ON_ONCE | 
 | +warn_on_once | 
 |  | 
 | @@ | 
 | expression P; | 
 | @@ | 
 | -pci_set_master(P) | 
 | +pci_set_bus_master(P) | 
 |  | 
 | @@ | 
 | expression P; | 
 | @@ | 
 | -pci_clear_master(P) | 
 | +pci_clr_bus_master(P) | 
 |  | 
 | @@ | 
 | expression X; | 
 | @@ | 
 | -upper_32_bits(X) | 
 | +high32(X) | 
 |  | 
 | @@ | 
 | expression X; | 
 | @@ | 
 | -lower_32_bits(X) | 
 | +low32(X) |