Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,41 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = circle] "idle"};
{node [shape = plaintext, style=invis, label=""] "__init_ready"};
{node [shape = doublecircle] "ready"};
{node [shape = circle] "ready"};
{node [shape = circle] "running"};
{node [shape = circle] "sleeping"};
{node [shape = circle] "throttled"};
"__init_ready" -> "ready";
"idle" [label = "idle"];
"idle" -> "idle" [ label = "dl_server_idle" ];
"idle" -> "ready" [ label = "dl_replenish;reset(clk)" ];
"idle" -> "running" [ label = "sched_switch_in" ];
"idle" -> "sleeping" [ label = "dl_server_stop" ];
"idle" -> "throttled" [ label = "dl_throttle" ];
"ready" [label = "ready\nclk < DEADLINE_NS()", color = green3];
"ready" -> "idle" [ label = "dl_server_idle" ];
"ready" -> "ready" [ label = "sched_wakeup\ndl_replenish;reset(clk)" ];
"ready" -> "running" [ label = "sched_switch_in" ];
"ready" -> "sleeping" [ label = "dl_server_stop" ];
"ready" -> "throttled" [ label = "dl_throttle;is_defer == 1" ];
"running" [label = "running\nclk < DEADLINE_NS()"];
"running" -> "idle" [ label = "dl_server_idle" ];
"running" -> "running" [ label = "dl_replenish;reset(clk)\nsched_switch_in\nsched_wakeup" ];
"running" -> "sleeping" [ label = "sched_switch_suspend\ndl_server_stop" ];
"running" -> "throttled" [ label = "dl_throttle" ];
"sleeping" [label = "sleeping"];
"sleeping" -> "ready" [ label = "sched_wakeup\ndl_replenish;reset(clk)" ];
"sleeping" -> "running" [ label = "sched_switch_in" ];
"sleeping" -> "sleeping" [ label = "dl_server_stop\ndl_server_idle" ];
"sleeping" -> "throttled" [ label = "dl_throttle;is_constr_dl == 1 || is_defer == 1" ];
"throttled" [label = "throttled"];
"throttled" -> "ready" [ label = "dl_replenish;reset(clk)" ];
"throttled" -> "throttled" [ label = "sched_switch_suspend\nsched_wakeup\ndl_server_idle\ndl_throttle" ];
{ rank = min ;
"__init_ready";
"ready";
}
}
@@ -0,0 +1 @@
RULE = always (RT imply not PAGEFAULT)
@@ -0,0 +1,23 @@
RULE = always ((RT and SLEEP) imply (RT_FRIENDLY_SLEEP or ALLOWLIST))
RT_FRIENDLY_SLEEP = (RT_VALID_SLEEP_REASON or KERNEL_THREAD)
and ((not WAKE) until RT_FRIENDLY_WAKE)
RT_VALID_SLEEP_REASON = FUTEX_WAIT
or RT_FRIENDLY_NANOSLEEP
or EPOLL_WAIT
RT_FRIENDLY_NANOSLEEP = CLOCK_NANOSLEEP
and NANOSLEEP_TIMER_ABSTIME
and (NANOSLEEP_CLOCK_MONOTONIC or NANOSLEEP_CLOCK_TAI)
RT_FRIENDLY_WAKE = WOKEN_BY_EQUAL_OR_HIGHER_PRIO
or WOKEN_BY_HARDIRQ
or WOKEN_BY_NMI
or ABORT_SLEEP
or KTHREAD_SHOULD_STOP
ALLOWLIST = BLOCK_ON_RT_MUTEX
or FUTEX_LOCK_PI
or TASK_IS_RCU
or TASK_IS_MIGRATION
@@ -0,0 +1,29 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = doublecircle] "any_thread_running"};
{node [shape = circle] "any_thread_running"};
{node [shape = circle] "nested_preempt"};
{node [shape = plaintext, style=invis, label=""] "__init_preempt_irq"};
{node [shape = circle] "preempt_irq"};
{node [shape = circle] "rescheduling"};
"__init_preempt_irq" -> "preempt_irq";
"any_thread_running" [label = "any_thread_running", color = green3];
"any_thread_running" -> "any_thread_running" [ label = "schedule_entry\nirq_entry" ];
"any_thread_running" -> "rescheduling" [ label = "sched_need_resched" ];
"nested_preempt" [label = "nested_preempt"];
"nested_preempt" -> "any_thread_running" [ label = "schedule_entry_preempt\nschedule_entry" ];
"nested_preempt" -> "nested_preempt" [ label = "irq_entry" ];
"nested_preempt" -> "preempt_irq" [ label = "sched_need_resched" ];
"preempt_irq" [label = "preempt_irq"];
"preempt_irq" -> "nested_preempt" [ label = "schedule_entry_preempt\nschedule_entry" ];
"preempt_irq" -> "preempt_irq" [ label = "irq_entry\nsched_need_resched" ];
"rescheduling" [label = "rescheduling"];
"rescheduling" -> "any_thread_running" [ label = "schedule_entry_preempt\nschedule_entry" ];
"rescheduling" -> "preempt_irq" [ label = "irq_entry" ];
"rescheduling" -> "rescheduling" [ label = "sched_need_resched" ];
{ rank = min ;
"__init_preempt_irq";
"preempt_irq";
}
}
@@ -0,0 +1,13 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext, style=invis, label=""] "__init_any"};
{node [shape = doublecircle] "any"};
"__init_any" -> "any";
"any" [label = "any", color = green3];
"any" -> "any" [ label = "sched_need_resched;irq_off == 1\nsched_waking;irq_off == 1 && preempt_off == 1" ];
{ rank = min ;
"__init_any";
"any";
}
}
@@ -0,0 +1,18 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext] "scheduling_context"};
{node [shape = plaintext, style=invis, label=""] "__init_thread_context"};
{node [shape = ellipse] "thread_context"};
{node [shape = plaintext] "thread_context"};
"__init_thread_context" -> "thread_context";
"scheduling_context" [label = "scheduling_context"];
"scheduling_context" -> "thread_context" [ label = "schedule_exit" ];
"thread_context" [label = "thread_context", color = green3];
"thread_context" -> "scheduling_context" [ label = "schedule_entry" ];
"thread_context" -> "thread_context" [ label = "sched_set_state" ];
{ rank = min ;
"__init_thread_context";
"thread_context";
}
}
@@ -0,0 +1,18 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext] "can_sched"};
{node [shape = plaintext, style=invis, label=""] "__init_cant_sched"};
{node [shape = ellipse] "cant_sched"};
{node [shape = plaintext] "cant_sched"};
"__init_cant_sched" -> "cant_sched";
"can_sched" [label = "can_sched"];
"can_sched" -> "can_sched" [ label = "schedule_entry\nschedule_exit" ];
"can_sched" -> "cant_sched" [ label = "preempt_enable" ];
"cant_sched" [label = "cant_sched", color = green3];
"cant_sched" -> "can_sched" [ label = "preempt_disable" ];
{ rank = min ;
"__init_cant_sched";
"cant_sched";
}
}
@@ -0,0 +1,18 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext, style=invis, label=""] "__init_non_scheduling_context"};
{node [shape = ellipse] "non_scheduling_context"};
{node [shape = plaintext] "non_scheduling_context"};
{node [shape = plaintext] "scheduling_contex"};
"__init_non_scheduling_context" -> "non_scheduling_context";
"non_scheduling_context" [label = "non_scheduling_context", color = green3];
"non_scheduling_context" -> "non_scheduling_context" [ label = "preempt_disable\npreempt_enable" ];
"non_scheduling_context" -> "scheduling_contex" [ label = "schedule_entry" ];
"scheduling_contex" [label = "scheduling_contex"];
"scheduling_contex" -> "non_scheduling_context" [ label = "schedule_exit" ];
{ rank = min ;
"__init_non_scheduling_context";
"non_scheduling_context";
}
}
@@ -0,0 +1,18 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext, style=invis, label=""] "__init_other_context"};
{node [shape = ellipse] "other_context"};
{node [shape = plaintext] "other_context"};
{node [shape = plaintext] "own_context"};
"__init_other_context" -> "other_context";
"other_context" [label = "other_context", color = green3];
"other_context" -> "own_context" [ label = "sched_switch_in" ];
"own_context" [label = "own_context"];
"own_context" -> "other_context" [ label = "sched_switch_out" ];
"own_context" -> "own_context" [ label = "sched_set_state" ];
{ rank = min ;
"__init_other_context";
"other_context";
}
}
@@ -0,0 +1,30 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext, style=invis, label=""] "__init_runnable"};
{node [shape = doublecircle] "runnable"};
{node [shape = circle] "runnable"};
{node [shape = circle] "signal_wakeup"};
{node [shape = circle] "sleepable"};
{node [shape = circle] "sleeping"};
"__init_runnable" -> "runnable";
"runnable" [label = "runnable", color = green3];
"runnable" -> "runnable" [ label = "sched_set_state_runnable\nsched_wakeup\nsched_switch_in\nsched_switch_yield\nsched_switch_preempt\nsignal_deliver" ];
"runnable" -> "sleepable" [ label = "sched_set_state_sleepable" ];
"runnable" -> "sleeping" [ label = "sched_switch_blocking" ];
"signal_wakeup" [label = "signal_wakeup"];
"signal_wakeup" -> "runnable" [ label = "signal_deliver" ];
"signal_wakeup" -> "signal_wakeup" [ label = "sched_switch_in\nsched_switch_preempt\nsched_switch_yield\nsched_wakeup" ];
"signal_wakeup" -> "sleepable" [ label = "sched_set_state_sleepable" ];
"sleepable" [label = "sleepable"];
"sleepable" -> "runnable" [ label = "sched_set_state_runnable\nsched_wakeup" ];
"sleepable" -> "signal_wakeup" [ label = "sched_switch_yield" ];
"sleepable" -> "sleepable" [ label = "sched_set_state_sleepable\nsched_switch_in\nsched_switch_preempt\nsignal_deliver" ];
"sleepable" -> "sleeping" [ label = "sched_switch_suspend\nsched_switch_blocking" ];
"sleeping" [label = "sleeping"];
"sleeping" -> "runnable" [ label = "sched_wakeup" ];
{ rank = min ;
"__init_runnable";
"runnable";
}
}
@@ -0,0 +1,38 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = plaintext, style=invis, label=""] "__init_can_sched"};
{node [shape = doublecircle] "can_sched"};
{node [shape = circle] "can_sched"};
{node [shape = circle] "cant_sched"};
{node [shape = circle] "disable_to_switch"};
{node [shape = circle] "enable_to_exit"};
{node [shape = circle] "in_irq"};
{node [shape = circle] "scheduling"};
{node [shape = circle] "switching"};
"__init_can_sched" -> "can_sched";
"can_sched" [label = "can_sched", color = green3];
"can_sched" -> "cant_sched" [ label = "irq_disable" ];
"can_sched" -> "scheduling" [ label = "schedule_entry" ];
"cant_sched" [label = "cant_sched"];
"cant_sched" -> "can_sched" [ label = "irq_enable" ];
"cant_sched" -> "cant_sched" [ label = "irq_entry" ];
"disable_to_switch" [label = "disable_to_switch"];
"disable_to_switch" -> "enable_to_exit" [ label = "irq_enable" ];
"disable_to_switch" -> "in_irq" [ label = "irq_entry" ];
"disable_to_switch" -> "switching" [ label = "sched_switch" ];
"enable_to_exit" [label = "enable_to_exit"];
"enable_to_exit" -> "can_sched" [ label = "schedule_exit" ];
"enable_to_exit" -> "enable_to_exit" [ label = "irq_disable\nirq_entry\nirq_enable" ];
"in_irq" [label = "in_irq"];
"in_irq" -> "in_irq" [ label = "irq_entry" ];
"in_irq" -> "scheduling" [ label = "irq_enable" ];
"scheduling" [label = "scheduling"];
"scheduling" -> "disable_to_switch" [ label = "irq_disable" ];
"switching" [label = "switching"];
"switching" -> "enable_to_exit" [ label = "irq_enable" ];
{ rank = min ;
"__init_can_sched";
"can_sched";
}
}
@@ -0,0 +1,22 @@
digraph state_automaton {
center = true;
size = "7,11";
{node [shape = circle] "enqueued"};
{node [shape = plaintext, style=invis, label=""] "__init_dequeued"};
{node [shape = doublecircle] "dequeued"};
{node [shape = circle] "running"};
"__init_dequeued" -> "dequeued";
"enqueued" [label = "enqueued\nclk < threshold_jiffies"];
"running" [label = "running"];
"dequeued" [label = "dequeued", color = green3];
"running" -> "running" [ label = "sched_switch_in\nsched_wakeup" ];
"enqueued" -> "enqueued" [ label = "sched_wakeup" ];
"enqueued" -> "running" [ label = "sched_switch_in" ];
"running" -> "dequeued" [ label = "sched_switch_wait" ];
"dequeued" -> "enqueued" [ label = "sched_wakeup;reset(clk)" ];
"running" -> "enqueued" [ label = "sched_switch_preempt;reset(clk)" ];
{ rank = min ;
"__init_dequeued";
"dequeued";
}
}
@@ -0,0 +1,16 @@
digraph state_automaton {
{node [shape = circle] "non_preemptive"};
{node [shape = plaintext, style=invis, label=""] "__init_preemptive"};
{node [shape = doublecircle] "preemptive"};
{node [shape = circle] "preemptive"};
"__init_preemptive" -> "preemptive";
"non_preemptive" [label = "non_preemptive"];
"non_preemptive" -> "non_preemptive" [ label = "sched_waking" ];
"non_preemptive" -> "preemptive" [ label = "preempt_enable" ];
"preemptive" [label = "preemptive"];
"preemptive" -> "non_preemptive" [ label = "preempt_disable" ];
{ rank = min ;
"__init_preemptive";
"preemptive";
}
}
@@ -0,0 +1,16 @@
digraph state_automaton {
{node [shape = plaintext, style=invis, label=""] "__init_not_running"};
{node [shape = ellipse] "not_running"};
{node [shape = plaintext] "not_running"};
{node [shape = plaintext] "running"};
"__init_not_running" -> "not_running";
"not_running" [label = "not_running", color = green3];
"not_running" -> "not_running" [ label = "wakeup" ];
"not_running" -> "running" [ label = "switch_in" ];
"running" [label = "running"];
"running" -> "not_running" [ label = "switch_out" ];
{ rank = min ;
"__init_not_running";
"not_running";
}
}