freebsd: Use compiler.h from FreeBSD's base's linuxkpi #16650
Merged
+8
−88
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.
The FreeBSD linux/compiler.h in OpenZFS was copied from a very old version of FreeBSD's linuxkpi's linux/compiler.h. There's no need for this duplication. Use FreeBSD's linuxkpi version instead, and provide zfs_fallthrough to augment it (it's all that's needed). Use #pragma once to avoid naming issues for guard variables. Since this is a complete rewrite, use my copyright here (the original code in FreeBSD still credits everybody). This works back at least to FreeBSD 12.4, which is not out of support, and all newer releases.
Remove extra copies of macros that were defined elsewhere, but are now properly defined in LinuxKPI so are redundant.
Sponsored-by: Netflix
Signed-off-by: Warner Losh imp@bsdimp.com
Motivation and Context
Description
OpenZFS has an ancient copy of FreeBSD's LKPI compiler.h. Rather than make yet another copy in an indirect tree that has to be maintained, make the OpenZFS one use FreeBSD's directly. Since at least FreeBSD 12, this has everything needed except zfs_fallthrough, so define that here.
How Has This Been Tested?
Ran FreeBSD's make universe with these changes on FreeBSD main. I ran make buildworld and buildkernel on aarch64 and amd64 for stable/14, stable/13 and stable/12. I booted the result on main with a fresh world and observed no regressions.
Types of changes
Checklist:
Signed-off-by
.