Team Ai
Datasetpublic

codekingpro/portable-devtools

sourceHugging Faceupdated 5mo agoView on Hugging Face
1likes14kdownloads
testing_windows.go71 linesDownload Raw Back to testing
1// Copyright 2021 The Go Authors. All rights reserved.2// Use of this source code is governed by a BSD-style3// license that can be found in the LICENSE file.4 5//go:build windows6 7package testing8 9import (10	"errors"11	"internal/syscall/windows"12	"math/bits"13	"syscall"14	"time"15)16 17// isWindowsRetryable reports whether err is a Windows error code18// that may be fixed by retrying a failed filesystem operation.19func isWindowsRetryable(err error) bool {20	for {21		unwrapped := errors.Unwrap(err)22		if unwrapped == nil {23			break24		}25		err = unwrapped26	}27	if err == syscall.ERROR_ACCESS_DENIED {28		return true // Observed in https://go.dev/issue/50051.29	}30	if err == windows.ERROR_SHARING_VIOLATION {31		return true // Observed in https://go.dev/issue/51442.32	}33	return false34}35 36// highPrecisionTime represents a single point in time with query performance counter.37// time.Time on Windows has low system granularity, which is not suitable for38// measuring short time intervals.39//40// TODO: If Windows runtime implements high resolution timing then highPrecisionTime41// can be removed.42type highPrecisionTime struct {43	now int6444}45 46// highPrecisionTimeNow returns high precision time for benchmarking.47func highPrecisionTimeNow() highPrecisionTime {48	var t highPrecisionTime49	// This should always succeed for Windows XP and above.50	t.now = windows.QueryPerformanceCounter()51	return t52}53 54func (a highPrecisionTime) sub(b highPrecisionTime) time.Duration {55	delta := a.now - b.now56 57	if queryPerformanceFrequency == 0 {58		queryPerformanceFrequency = windows.QueryPerformanceFrequency()59	}60	hi, lo := bits.Mul64(uint64(delta), uint64(time.Second)/uint64(time.Nanosecond))61	quo, _ := bits.Div64(hi, lo, uint64(queryPerformanceFrequency))62	return time.Duration(quo)63}64 65var queryPerformanceFrequency int6466 67// highPrecisionTimeSince returns duration since a.68func highPrecisionTimeSince(a highPrecisionTime) time.Duration {69	return highPrecisionTimeNow().sub(a)70}71 
codekingpro/portable-devtools · Team Ai