internal/unix: add Errno wrapper for Windows#1659
Merged
lmb merged 1 commit intocilium:mainfrom Feb 4, 2025
Merged
Conversation
24c2f86 to
a37919d
Compare
eBPF for Windows has historically aimed to be source compatible with libbpf API. As part of this, POSIX error codes are found in errno.h are used to indicate errors of all kinds. eBPF for Windows so far aimed to be source compatible with libbpf. This includes using the same error constants (EINVAL, etc.) as libbpf. It does this using the errno.h header supplied by the Microsoft C runtime. Unfortunately, Windows error codes do not always use the same value as Linux does. Introduce a dedicated Errno type on Windows which maps errors to the correct constant for the platform. This means that syscall.Errno is not an alias for unix.Errno any more. Signed-off-by: Lorenz Bauer <[email protected]>
a37919d to
92ec47c
Compare
ti-mo
approved these changes
Feb 4, 2025
| return false | ||
| } | ||
|
|
||
| func (e Errno) Temporary() bool { |
Contributor
There was a problem hiding this comment.
Are you using these in other Windows-specific code? I don't think an external caller can get ahold of these methods since this is internal/unix.Errno. Unless we need them to satisfy some interface, I propose we remove them.
Contributor
Author
There was a problem hiding this comment.
We expose these indirectly because we wrap original errno from bpf() and friends. It'd be surprising / a footgun if those errors behaved different between platforms, I think.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
eBPF for Windows has historically aimed to be source compatible with libbpf API. As part of this, POSIX error codes are found in errno.h are used to indicate errors of all kinds.
eBPF for Windows so far aimed to be source compatible with libbpf. This includes using the same error constants (EINVAL, etc.) as libbpf. It does this using the errno.h header supplied by the Microsoft C runtime. Unfortunately, Windows error codes do not always use the same value as Linux does.
Introduce a dedicated Errno type on Windows which maps errors to the correct constant for the platform. This means that syscall.Errno is not an alias for unix.Errno any more.