Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 10 of 12 for asyncPreempt (0.28 sec)

  1. src/runtime/preempt.go

    }
    
    //go:generate go run mkpreempt.go
    
    // asyncPreempt saves all user registers and calls asyncPreempt2.
    //
    // When stack scanning encounters an asyncPreempt frame, it scans that
    // frame and its parent frame conservatively.
    //
    // asyncPreempt is implemented in assembly.
    func asyncPreempt()
    
    //go:nosplit
    func asyncPreempt2() {
    	gp := getg()
    	gp.asyncSafePoint = true
    	if gp.preemptStop {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 17 15:41:45 UTC 2024
    - 15.1K bytes
    - Viewed (0)
  2. src/runtime/signal_windows.go

    	// won't get to see who faulted.)
    	// Also don't push a sigpanic frame if the faulting PC
    	// is the entry of asyncPreempt. In this case, we suspended
    	// the thread right between the fault and the exception handler
    	// starting to run, and we have pushed an asyncPreempt call.
    	// The exception is not from asyncPreempt, so not to push a
    	// sigpanic call to make it look like that. Instead, just
    	// overwrite the PC. (See issue #35773)
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Oct 17 20:32:29 UTC 2023
    - 14.5K bytes
    - Viewed (0)
  3. src/runtime/mkpreempt.go

    // Copyright 2019 The Go Authors. All rights reserved.
    // Use of this source code is governed by a BSD-style
    // license that can be found in the LICENSE file.
    
    //go:build ignore
    
    // mkpreempt generates the asyncPreempt functions for each
    // architecture.
    package main
    
    import (
    	"flag"
    	"fmt"
    	"io"
    	"log"
    	"os"
    	"strings"
    )
    
    // Copied from cmd/compile/internal/ssa/gen/*Ops.go
    
    var regNames386 = []string{
    	"AX",
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Nov 20 17:19:36 UTC 2023
    - 15.3K bytes
    - Viewed (0)
  4. src/runtime/os_windows.go

    	gp := gFromSP(mp, c.sp())
    	if gp != nil && wantAsyncPreempt(gp) {
    		if ok, newpc := isAsyncSafePoint(gp, c.ip(), c.sp(), c.lr()); ok {
    			// Inject call to asyncPreempt
    			targetPC := abi.FuncPCABI0(asyncPreempt)
    			switch GOARCH {
    			default:
    				throw("unsupported architecture")
    			case "386", "amd64":
    				// Make it look like the thread called targetPC.
    				sp := c.sp()
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Apr 26 22:55:25 UTC 2024
    - 41.5K bytes
    - Viewed (0)
  5. src/runtime/signal_unix.go

    	// preempt.
    	if wantAsyncPreempt(gp) {
    		if ok, newpc := isAsyncSafePoint(gp, ctxt.sigpc(), ctxt.sigsp(), ctxt.siglr()); ok {
    			// Adjust the PC and inject a call to asyncPreempt.
    			ctxt.pushCall(abi.FuncPCABI0(asyncPreempt), newpc)
    		}
    	}
    
    	// Acknowledge the preemption.
    	gp.m.preemptGen.Add(1)
    	gp.m.signalPending.Store(0)
    
    	if GOOS == "darwin" || GOOS == "ios" {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 10 16:04:54 UTC 2024
    - 45K bytes
    - Viewed (0)
  6. src/cmd/compile/internal/ssa/_gen/LOONG64Ops.go

    	"F15",
    	"F16",
    	"F17",
    	"F18",
    	"F19",
    	"F20",
    	"F21",
    	"F22",
    	"F23",
    	"F24",
    	"F25",
    	"F26",
    	"F27",
    	"F28",
    	"F29",
    	"F30",
    	"F31",
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesLOONG64) > 64 {
    		panic("too many registers")
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Nov 21 19:04:19 UTC 2023
    - 25.2K bytes
    - Viewed (0)
  7. src/cmd/compile/internal/ssa/_gen/MIPS64Ops.go

    	"F23",
    	"F24",
    	"F25",
    	"F26",
    	"F27",
    	"F28",
    	"F29",
    	"F30",
    	"F31",
    
    	"HI", // high bits of multiplication
    	"LO", // low bits of multiplication
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesMIPS64) > 64 {
    		panic("too many registers")
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 24 03:36:31 UTC 2023
    - 25.5K bytes
    - Viewed (0)
  8. src/cmd/compile/internal/ssa/_gen/MIPSOps.go

    	"F14",
    	"F16",
    	"F18",
    	"F20",
    	"F22",
    	"F24",
    	"F26",
    	"F28",
    	"F30",
    
    	"HI", // high bits of multiplication
    	"LO", // low bits of multiplication
    
    	// If you add registers, update asyncPreempt in runtime.
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNamesMIPS) > 64 {
    		panic("too many registers")
    	}
    	num := map[string]int{}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed May 24 14:43:03 UTC 2023
    - 24K bytes
    - Viewed (0)
  9. src/runtime/proc_test.go

    }
    
    func TestAsyncPreempt(t *testing.T) {
    	if !runtime.PreemptMSupported {
    		t.Skip("asynchronous preemption not supported on this platform")
    	}
    	output := runTestProg(t, "testprog", "AsyncPreempt")
    	want := "OK\n"
    	if output != want {
    		t.Fatalf("want %s, got %s\n", want, output)
    	}
    }
    
    func TestGCFairness(t *testing.T) {
    	output := runTestProg(t, "testprog", "GCFairness")
    	want := "OK\n"
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Wed Jun 14 00:03:57 UTC 2023
    - 25.8K bytes
    - Viewed (0)
  10. src/cmd/compile/internal/ssa/_gen/386Ops.go

    var regNames386 = []string{
    	"AX",
    	"CX",
    	"DX",
    	"BX",
    	"SP",
    	"BP",
    	"SI",
    	"DI",
    	"X0",
    	"X1",
    	"X2",
    	"X3",
    	"X4",
    	"X5",
    	"X6",
    	"X7",
    
    	// If you add registers, update asyncPreempt in runtime
    
    	// pseudo-registers
    	"SB",
    }
    
    func init() {
    	// Make map from reg names to reg integers.
    	if len(regNames386) > 64 {
    		panic("too many registers")
    	}
    	num := map[string]int{}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Mar 14 08:10:32 UTC 2023
    - 45.1K bytes
    - Viewed (0)
Back to top