add fsm checker by Gabriel Matni
[lttv.git] / contrib / fsm_checker / LOCK_CHECK / fsm_locking.sm
1 %start Map1::S0
2 %class lockclass
3 %header lockclass.h
4
5 %map Map1
6 %%
7
8 S0
9 {
10 acquire_lock(lock: void *, lock_add: guint32, hardirqs_off: int,hardirq_context: int, pid: int)
11 [irq_check(ctxt, lock, hardirqs_off, hardirq_context)] S0
12 {updatelock(lock, lock_add, pid, hardirqs_off, hardirq_context);warning("potential deadlock", lock);pushlock(lock);}
13 acquire_lock(lock: void *, lock_add: guint32, hardirqs_off: int,hardirq_context: int, pid: int)
14 Locks_acquired
15 {updatelock(lock, lock_add, pid, hardirqs_off, hardirq_context);pushlock(lock);}
16 free_lock(lock: void *)
17 S0
18 {clearlock(lock);}
19
20 Default
21 S0
22 {}
23 }
24 Locks_acquired
25 {
26 acquire_lock(lock: void *, lock_add: guint32, hardirqs_off: int,hardirq_context: int, pid: int)
27 [irq_check(ctxt, lock, hardirqs_off, hardirq_context)] Locks_acquired
28 {updatelock(lock, lock_add, pid, hardirqs_off, hardirq_context);pushlock(lock);warning("potential deadlock", lock);}
29 acquire_lock(lock: void *, lock_add: guint32, hardirqs_off: int,hardirq_context: int, pid: int)
30 Locks_acquired
31 {updatelock(lock, lock_add, pid, hardirqs_off, hardirq_context);pushlock(lock);}
32 release_lock(lock: void *)
33 [empty_stack(ctxt)] S0
34 {poplock(lock);}
35 release_lock(lock: void *)
36 Locks_acquired
37 {poplock(lock);}
38 free_lock(lock: void *)
39 [lock_held(ctxt, lock)] Locks_acquired
40 {warning("Lockdep attempting to free a held lock", lock);}
41 free_lock(lock: void *)
42 Locks_acquired
43 {clearlock(lock);}
44 schedule_out(pid: guint32)
45 [lock_held_on_behalf(ctxt, pid)] Locks_acquired
46 // {warning("process... was scheduled out when a lock is being held on its behalf", NULL);printstack();
47 // schedule_err(pid);}
48 {test();}
49 Default
50 Locks_acquired
51 {}
52 }
53 Potential_Deadlock
54 {
55 Default Potential_Deadlock {}
56 }
57 Error{
58 Default Error {}
59 }
60 %%
This page took 0.031238 seconds and 4 git commands to generate.