Causal edges are stronger than clock order

This figure documents the historical i386 source baseline. Current native x86-64/AArch64 qualification is recorded separately; this is not an ELF64 or native SMP implementation diagram.

Causal edges are stronger than clock order A shell command causes an actor send and independent local work. The send causes a receive, which causes an application effect. Arrows encode parent relations; illustrative Lamport values increase along them. Events on separate branches need not causally depend on one another. Events retain up to four parents alongside wall-tick and TSC time. Illustrative clocks · arrows point cause → effect No edge between branches is implied by clock order. Up to 4 parents per event; wall ticks and TSC are separate clocks. command->send parent command->other parent send->recv message cause recv->effect parent command shell command L = 40 send actor send L = 41 other other local work L = 42 recv actor receive L = 43 effect application effect L = 44
Causal edges are stronger than clock order A shell command causes an actor send and independent local work. The send causes a receive, which causes an application effect. Arrows encode parent relations; illustrative Lamport values increase along them. Events on separate branches need not causally depend on one another. Events retain up to four parents alongside wall-tick and TSC time. Illustrative clocks · arrows point cause → effect No edge between branches is implied by clock order. Up to 4 parents per event; wall ticks and TSC are separate clocks. command->send parent command->other parent send->recv message cause recv->effect parent command shell command L = 40 send actor send L = 41 other other local work L = 42 recv actor receive L = 43 effect application effect L = 44

Two branches can have ordered Lamport values without an edge between them.

Text equivalent and source references
  • A shell command causes an actor send and independent local work. The send causes a receive, which causes an application effect.
  • Arrows encode parent relations; illustrative Lamport values increase along them. Events on separate branches need not causally depend on one another. Events retain up to four parents alongside wall-tick and TSC time.

Directed acyclic graph. Source paths refer to the atlas baseline; the kernel checkout is private.

  • include/causal.h · causal_time_t, causal_event_t
  • kernel/graph/causal.c · causal_emit
  • kernel/graph/actor.c · actor_send, actor_recv