|  | // 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 windows | 
|  | // +build windows | 
|  |  | 
|  | package poll | 
|  |  | 
|  | import "syscall" | 
|  |  | 
|  | // Do the interface allocations only once for common | 
|  | // Errno values. | 
|  |  | 
|  | var ( | 
|  | errERROR_IO_PENDING error = syscall.Errno(syscall.ERROR_IO_PENDING) | 
|  | ) | 
|  |  | 
|  | // ErrnoErr returns common boxed Errno values, to prevent | 
|  | // allocations at runtime. | 
|  | func errnoErr(e syscall.Errno) error { | 
|  | switch e { | 
|  | case 0: | 
|  | return nil | 
|  | case syscall.ERROR_IO_PENDING: | 
|  | return errERROR_IO_PENDING | 
|  | } | 
|  | // TODO: add more here, after collecting data on the common | 
|  | // error values see on Windows. (perhaps when running | 
|  | // all.bat?) | 
|  | return e | 
|  | } |