Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 8 of 8 for stackPreempt (0.38 sec)

  1. src/runtime/debug.go

    	gp := getg()
    	if gp == gp.m.g0 || gp == gp.m.gsignal {
    		return
    	}
    	// Force a preemption, unless the stack is already poisoned.
    	if gp.stackguard0 < stackPoisonMin {
    		gp.stackguard0 = stackPreempt
    	}
    }
    
    // mayMoreStackMove is a maymorestack hook that forces stack movement
    // at every possible point.
    //
    // See mayMoreStackPreempt.
    //
    //go:nosplit
    //go:linkname mayMoreStackMove
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Sat May 11 20:38:24 UTC 2024
    - 4.2K bytes
    - Viewed (0)
  2. src/runtime/lock_futex.go

    	gp.m.locks--
    	if gp.m.locks < 0 {
    		throw("runtimeĀ·unlock: lock count")
    	}
    	if gp.m.locks == 0 && gp.preempt { // restore the preemption request in case we've cleared it in newstack
    		gp.stackguard0 = stackPreempt
    	}
    }
    
    // One-time notifications.
    func noteclear(n *note) {
    	n.key = 0
    }
    
    func notewakeup(n *note) {
    	old := atomic.Xchg(key32(&n.key), 1)
    	if old != 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:34 UTC 2024
    - 5.4K bytes
    - Viewed (0)
  3. src/runtime/lock_sema.go

    	gp.m.locks--
    	if gp.m.locks < 0 {
    		throw("runtimeĀ·unlock: lock count")
    	}
    	if gp.m.locks == 0 && gp.preempt { // restore the preemption request in case we've cleared it in newstack
    		gp.stackguard0 = stackPreempt
    	}
    }
    
    // One-time notifications.
    func noteclear(n *note) {
    	n.key = 0
    }
    
    func notewakeup(n *note) {
    	var v uintptr
    	for {
    		v = atomic.Loaduintptr(&n.key)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:37 UTC 2024
    - 6.8K bytes
    - Viewed (0)
  4. src/runtime/preempt.go

    			if gp.preemptStop && gp.preempt && gp.stackguard0 == stackPreempt && asyncM == gp.m && asyncM.preemptGen.Load() == asyncGen {
    				break
    			}
    
    			// Temporarily block state transitions.
    			if !castogscanstatus(gp, _Grunning, _Gscanrunning) {
    				break
    			}
    
    			// Request synchronous preemption.
    			gp.preemptStop = true
    			gp.preempt = true
    			gp.stackguard0 = stackPreempt
    
    			// Prepare for asynchronous preemption.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 17 15:41:45 UTC 2024
    - 15.1K bytes
    - Viewed (0)
  5. src/runtime/runtime1.go

    }
    
    //go:nosplit
    func releasem(mp *m) {
    	gp := getg()
    	mp.locks--
    	if mp.locks == 0 && gp.preempt {
    		// restore the preemption request in case we've cleared it in newstack
    		gp.stackguard0 = stackPreempt
    	}
    }
    
    // reflect_typelinks is meant for package reflect,
    // but widely used packages access it using linkname.
    // Notable members of the hall of shame include:
    //   - gitee.com/quant1x/gox
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:52:17 UTC 2024
    - 19.3K bytes
    - Viewed (0)
  6. src/runtime/stack.go

    	// The values below can be stored to g.stackguard0 to force
    	// the next stack check to fail.
    	// These are all larger than any real SP.
    
    	// Goroutine preemption request.
    	// 0xfffffade in hex.
    	stackPreempt = uintptrMask & -1314
    
    	// Thread is forking. Causes a split stack check failure.
    	// 0xfffffb2e in hex.
    	stackFork = uintptrMask & -1234
    
    	// Force a stack movement. Used for debugging.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 22 22:31:00 UTC 2024
    - 41.1K bytes
    - Viewed (0)
  7. src/runtime/runtime2.go

    	// Stack parameters.
    	// stack describes the actual stack memory: [stack.lo, stack.hi).
    	// stackguard0 is the stack pointer compared in the Go stack growth prologue.
    	// It is stack.lo+StackGuard normally, but can be StackPreempt to trigger a preemption.
    	// stackguard1 is the stack pointer compared in the //go:systemstack stack growth prologue.
    	// It is stack.lo+StackGuard on g0 and gsignal stacks.
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:37 UTC 2024
    - 47.9K bytes
    - Viewed (0)
  8. src/runtime/proc.go

    	// Every call in a goroutine checks for stack overflow by
    	// comparing the current stack pointer to gp->stackguard0.
    	// Setting gp->stackguard0 to StackPreempt folds
    	// preemption into the normal stack overflow check.
    	gp.stackguard0 = stackPreempt
    
    	// Request an async preemption of this P.
    	if preemptMSupported && debug.asyncpreemptoff == 0 {
    		pp.preempt = true
    		preemptM(mp)
    	}
    
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 29 17:58:53 UTC 2024
    - 207.5K bytes
    - Viewed (0)
Back to top