Search Options

Results per page
Sort
Preferred Languages
Advance

Results 1 - 9 of 9 for semasleep (1.44 sec)

  1. src/runtime/lock_sema.go

    		}
    		return
    	}
    	// Queued. Sleep.
    	gp.m.blocked = true
    	if *cgo_yield == nil {
    		semasleep(-1)
    	} else {
    		// Sleep for an arbitrary-but-moderate interval to poll libc interceptors.
    		const ns = 10e6
    		for atomic.Loaduintptr(&n.key) == 0 {
    			semasleep(ns)
    			asmcgocall(*cgo_yield, nil)
    		}
    	}
    	gp.m.blocked = false
    }
    
    //go:nosplit
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu May 30 17:57:37 UTC 2024
    - 6.8K bytes
    - Viewed (0)
  2. src/runtime/os_darwin.go

    		throw("pthread_cond_init")
    	}
    }
    
    //go:nosplit
    func semasleep(ns int64) int32 {
    	var start int64
    	if ns >= 0 {
    		start = nanotime()
    	}
    	g := getg()
    	mp := g.m
    	if g == mp.gsignal {
    		// sema sleep/wakeup are implemented with pthreads, which are not async-signal-safe on Darwin.
    		throw("semasleep on Darwin signal stack")
    	}
    	pthread_mutex_lock(&mp.mutex)
    	for {
    		if mp.count > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Tue Dec 05 20:34:30 UTC 2023
    - 11.9K bytes
    - Viewed (0)
  3. src/runtime/semasleep_test.go

    package runtime_test
    
    import (
    	"io"
    	"os/exec"
    	"syscall"
    	"testing"
    	"time"
    )
    
    // Issue #27250. Spurious wakeups to pthread_cond_timedwait_relative_np
    // shouldn't cause semasleep to retry with the same timeout which would
    // cause indefinite spinning.
    func TestSpuriousWakeupsNeverHangSemasleep(t *testing.T) {
    	if *flagQuick {
    		t.Skip("-quick")
    	}
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Thu Apr 06 17:48:24 UTC 2023
    - 3.5K bytes
    - Viewed (0)
  4. src/runtime/os_openbsd.go

    func getPageSize() uintptr {
    	if ps, ok := sysctlInt([]uint32{_CTL_HW, _HW_PAGESIZE}); ok {
    		return uintptr(ps)
    	}
    	return 0
    }
    
    //go:nosplit
    func semacreate(mp *m) {
    }
    
    //go:nosplit
    func semasleep(ns int64) int32 {
    	gp := getg()
    
    	// Compute sleep deadline.
    	var tsp *timespec
    	if ns >= 0 {
    		var ts timespec
    		ts.setNsec(ns + nanotime())
    		tsp = &ts
    	}
    
    	for {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 25 19:53:03 UTC 2024
    - 6.2K bytes
    - Viewed (0)
  5. src/runtime/os_aix.go

    	// here because it could cause a deadlock.
    	sem = (*semt)(malloc(unsafe.Sizeof(*sem)))
    	if sem_init(sem, 0, 0) != 0 {
    		throw("sem_init")
    	}
    	mp.waitsema = uintptr(unsafe.Pointer(sem))
    }
    
    //go:nosplit
    func semasleep(ns int64) int32 {
    	mp := getg().m
    	if ns >= 0 {
    		var ts timespec
    
    		if clock_gettime(_CLOCK_REALTIME, &ts) != 0 {
    			throw("clock_gettime")
    		}
    		ts.tv_sec += ns / 1e9
    		ts.tv_nsec += ns % 1e9
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 25 19:53:03 UTC 2024
    - 8.9K bytes
    - Viewed (0)
  6. src/runtime/os_windows.go

    	case _WAIT_TIMEOUT:
    		return -1
    
    	case _WAIT_ABANDONED:
    		systemstack(func() {
    			throw("runtime.semasleep wait_abandoned")
    		})
    
    	case _WAIT_FAILED:
    		systemstack(func() {
    			print("runtime: waitforsingleobject wait_failed; errno=", getlasterror(), "\n")
    			throw("runtime.semasleep wait_failed")
    		})
    
    	default:
    		systemstack(func() {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri Apr 26 22:55:25 UTC 2024
    - 41.5K bytes
    - Viewed (0)
  7. src/runtime/os_netbsd.go

    func getOSRev() int {
    	if osrev, ok := sysctlInt([]uint32{_CTL_KERN, _KERN_OSREV}); ok {
    		return int(osrev)
    	}
    	return 0
    }
    
    //go:nosplit
    func semacreate(mp *m) {
    }
    
    //go:nosplit
    func semasleep(ns int64) int32 {
    	gp := getg()
    	var deadline int64
    	if ns >= 0 {
    		deadline = nanotime() + ns
    	}
    
    	for {
    		v := atomic.Load(&gp.m.waitsemacount)
    		if v > 0 {
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 25 19:53:03 UTC 2024
    - 10.1K bytes
    - Viewed (0)
  8. src/runtime/os_plan9.go

    	// We should never reach exitThread on Plan 9 because we let
    	// the OS clean up threads.
    	throw("exitThread")
    }
    
    //go:nosplit
    func semacreate(mp *m) {
    }
    
    //go:nosplit
    func semasleep(ns int64) int {
    	gp := getg()
    	if ns >= 0 {
    		ms := timediv(ns, 1000000, nil)
    		if ms == 0 {
    			ms = 1
    		}
    		ret := plan9_tsemacquire(&gp.m.waitsemacount, ms)
    		if ret == 1 {
    			return 0 // success
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Fri May 17 15:41:45 UTC 2024
    - 10.3K bytes
    - Viewed (0)
  9. src/runtime/os3_solaris.go

    	sem = (*semt)(unsafe.Pointer(mp.libcall.r1))
    	if sem_init(sem, 0, 0) != 0 {
    		throw("sem_init")
    	}
    	mp.waitsema = uintptr(unsafe.Pointer(sem))
    }
    
    //go:nosplit
    func semasleep(ns int64) int32 {
    	mp := getg().m
    	if ns >= 0 {
    		mp.ts.tv_sec = ns / 1000000000
    		mp.ts.tv_nsec = ns % 1000000000
    
    		mp.libcall.fn = uintptr(unsafe.Pointer(&libc_sem_reltimedwait_np))
    		mp.libcall.n = 2
    Registered: Wed Jun 12 16:32:35 UTC 2024
    - Last Modified: Mon Mar 25 19:53:03 UTC 2024
    - 17.6K bytes
    - Viewed (0)
Back to top