Cause Effect RulesRule2Rule3Rule15Rule17Rule16Rule18Rule19Rule20Rule21Rule22Rule24Rule26Rule25Rule27Rule4Rule28Rule5Rule7Rule6Rule8Rule9Rule10Rule11Rule12Rule23Rule13Rule14Rule1
Start - - - - - - - - - - - - - - - - - - - - - - - - - - - -
0 T F - - - - - - - - - - - - - - - - - - - - - - - - - -
cpu < 8 - - - - - - - - - - - - - - T F - - - - - - - - - - - -
!(__builtin_constant_p(cpu) ? constant_test_bit((cpu),(&(cpu_online_map))) : variable_test_bit((cpu),(&(cpu_online_map)))) - - - - - - - - - - - - - - - - T F - - - - - - - - - -
0 - - - - - - - - - - - - - - - - - - - - T F - - - - - -
0 - - - - - - - - - - - - - - - - - - - - - - T F - - - -
sequence_needed - cwq->remove_sequence > 0 - - - - - - - - - - - - - - - - - - - - - - - - F T - -
0 - - T F F - - - - - - - - - - - - - - - - - - - - - - -
0 - - - F T - - - - - - - - - - - - - - - - - - - - - - -
0 - - - - - - T F - - - - - - - - - - - - - - - - - - - -
0 - - - - - - - - T F - - - - - - - - - - - - - - - - - -
0 - - - - - - - - - - - F T F - - - - - - - - - - - - - -
0 - - - - - - - - - - - T - F - - - - - - - - - - - - - -

Transitions1->11->210->1010->1110->911->1212->1212->1313->1113->814->1515->1415->1515->42->32->E3->43->54->25->66->66->77->57->88->148->99->10S->1

Method1 :
struct cpu_workqueue_struct *cwq;
int cpu;
-   -   -   -   - -   - - -   - -     -   -     begin
Method2 :
cpu = 0
- 1 -   -   -   - -   - - -   - -     -   -      
Method3 :
cpu++
-   -   -   -   - -   - - -   - -  4   -   -      
Method4 :
wait_queue_t wait = { .task = get_current(), .func = autoremove_wake_function, .task_list = { .next = &wait.task_list, .prev = &wait.task_list, }, };
long sequence_needed;
-   -   -   -   - -   - - - 2 - -     -   -      
Method5 :
cwq = wq->cpu_wq + cpu;
-   -   -   -   - -   - - -   - - 3    -   -      
Method6 :
__asm__ __volatile__("cli": : :"memory");
-   -   -   -   - -   - - -   - -   5 -   -      
Method7 :
_raw_spin_lock(&cwq->lock);
-   -   -   -   - -   - - -   - -     - 6 -      
Method8 :
sequence_needed = cwq->insert_sequence;
-   -   -   -   - -   - - -   - -     -   - 7     
Method9 :
prepare_to_wait(&cwq->work_done, &wait, 2);
-   -   -   -   - -   - - -   - -     -   -   8   
Method10 :
_raw_spin_unlock(&cwq->lock);
__asm__ __volatile__("sti": : :"memory");
-   -   -   -   - -   - - -   - -     -   -    9  
Method11 :
schedule();
-   - 10 -   -   - -   - - -   - -     -   -      
Method12 :
__asm__ __volatile__("cli": : :"memory");
-   -   - 11 -   - -   - - -   - -     -   -      
Method13 :
_raw_spin_lock(&cwq->lock);
-   -   -   - 12 - -   - - -   - -     -   -      
Method14 :
finish_wait(&cwq->work_done, &wait);
-   -   -   -   - -   - - -   - -     -   -  8    
Method15 :
_raw_spin_unlock(&cwq->lock);
__asm__ __volatile__("sti": : :"memory");
-   -   -   -   - - 14 - - -   - -     -   -