Documentation

Miri.Interpreter.LinuxFutexMachine

Linux futex physical/synchronization binding. Futex callbacks are the exact source FnOnce captures, not arbitrary opaque token completion. None mode never requires a fabricated GlobalState. Actual stack switching uses ThreadStacks.

  • storage : U → Captures
  • putStorage : U → Captures → U
  • nextCallback : U → Nat

    The same supply used for TLS/join/source thread callbacks.

  • putNextCallback : U → Nat → U
Instances For
    Instances For
      structure Miri.Interpreter.LinuxFutexMachine.Hooks (K U C P O B Host System TZ Timestamp ErrorHost : Type) :
      Instances For

        The real memory/backend projection needed to construct and use allocation-local typed synchronization objects. It intentionally excludes time, deadline, errno, and isolation capabilities: pthread mutexes/attributes do not need those host effects, while timed operations remain supplied by the separately constructed dispatch hooks.

        Instances For
          def Miri.Interpreter.LinuxFutexMachine.objectHooks {K U C P O B Host System TZ Timestamp ErrorHost : Type} (h : Hooks K U C P O B Host System TZ Timestamp ErrorHost) :
          ObjectHooks K U C P O B

          A full futex capability always contains the same genuine physical fields. Projecting them supports time-independent pthread object construction without creating a second memory, backend, atomic, or metadata state.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            def Miri.Interpreter.LinuxFutexMachine.ioErrors {K U C P O B H Y Z T E : Type} [DecidableEq K] (h : Hooks K U C P O B H Y Z T E) (choice : C) :
            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              def Miri.Interpreter.LinuxFutexMachine.newFutex {K U C P O B H Y Z T E : Type} (h : Hooks K U C P O B H Y Z T E) :
              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                def Miri.Interpreter.LinuxFutexMachine.runtime {K U C P O B H Y Z T E : Type} [DecidableEq K] (h : Hooks K U C P O B H Y Z T E) (choice : C) :
                Equations
                • One or more equations did not get rendered due to their size.
                Instances For

                  Futex metadata's source on_access and provenance visitor are empty. Other payload variants keep their actual existing synchronization behavior.

                  Equations
                  Instances For
                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      def Miri.Interpreter.LinuxFutexMachine.bind {K U C P O B H Y Z T E : Type} [DecidableEq K] (h : Hooks K U C P O B H Y Z T E) (choice : C) (base : LinuxFutex.Hooks (State K U) Concurrency.FutexRuntime.Ref) :
                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For
                        def Miri.Interpreter.LinuxFutexMachine.bindForSyscall {K U C P O B H Y Z T E : Type} [DecidableEq K] (h : Hooks K U C P O B H Y Z T E) (choice : C) (takeArgs : Array LinuxFutex.ArgType → ShimSignatures.Varargs Memory.Provenance → EStateM StepError (State K U) (Array (OpTy Memory.Provenance))) (libcI32 : String → EStateM StepError (State K U) Int32) (hostUsizeBits : Nat) :

                        Build the source syscall-facing futex hooks directly from the physical futex constructor. The syscall ABI checker and target constants remain explicit inputs; all memory, atomic, callback, deadline, and errno effects come from this same runtime-owned machine hook record.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For