Bug 1963329 - Update wgpu to revision 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b. r=webgpu-reviewers,supply-chain-reviewers,webidl,saschanaz,ErichDonGubler

Differential Revision: https://phabricator.services.mozilla.com/D247125
This commit is contained in:
teoxoy
2025-04-30 09:21:24 +00:00
parent 5bb09f929e
commit c02d99f385
399 changed files with 86156 additions and 83616 deletions

View File

@@ -40,9 +40,9 @@ git = "https://github.com/franziskuskiefer/cose-rust"
rev = "43c22248d136c8b38fe42ea709d08da6355cf04b"
replace-with = "vendored-sources"
[source."git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71"]
[source."git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"]
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
replace-with = "vendored-sources"
[source."git+https://github.com/glandium/rust-objc?rev=4de89f5aa9851ceca4d40e7ac1e2759410c04324"]

32
Cargo.lock generated
View File

@@ -3624,9 +3624,9 @@ checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67"
[[package]]
name = "libc"
version = "0.2.161"
version = "0.2.171"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8e9489c2807c139ffd9c1794f4af0ebe86a828db53ecdc7fea2111d0fed085d1"
checksum = "c19937216e9d3aa9956d9bb8dfc0b0c8beb6058fc4f7a4dc4d850edf86a237d6"
[[package]]
name = "libdbus-sys"
@@ -3780,9 +3780,9 @@ dependencies = [
[[package]]
name = "log"
version = "0.4.20"
version = "0.4.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f"
checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e"
[[package]]
name = "mach"
@@ -3958,13 +3958,13 @@ dependencies = [
[[package]]
name = "metal"
version = "0.31.0"
version = "0.32.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f569fb946490b5743ad69813cb19629130ce9374034abe31614a36402d18f99e"
checksum = "00c15a6f673ff72ddcc22394663290f870fb224c1bfce55734a75c414150e605"
dependencies = [
"bitflags 2.9.0",
"block",
"core-graphics-types 0.1.999",
"core-graphics-types 0.2.0",
"foreign-types",
"log",
"objc",
@@ -4586,7 +4586,7 @@ checksum = "a2983372caf4480544083767bf2d27defafe32af49ab4df3a0b7fc90793a3664"
[[package]]
name = "naga"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"arrayvec",
"bit-set",
@@ -5007,9 +5007,9 @@ dependencies = [
[[package]]
name = "parking_lot"
version = "0.12.1"
version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f"
checksum = "f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27"
dependencies = [
"lock_api",
"parking_lot_core",
@@ -7541,7 +7541,7 @@ dependencies = [
[[package]]
name = "wgpu-core"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"arrayvec",
"bit-set",
@@ -7571,7 +7571,7 @@ dependencies = [
[[package]]
name = "wgpu-core-deps-apple"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"wgpu-hal",
]
@@ -7579,7 +7579,7 @@ dependencies = [
[[package]]
name = "wgpu-core-deps-windows-linux-android"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"wgpu-hal",
]
@@ -7587,7 +7587,7 @@ dependencies = [
[[package]]
name = "wgpu-hal"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"android_system_properties",
"arrayvec",
@@ -7597,7 +7597,7 @@ dependencies = [
"block",
"bytemuck",
"cfg_aliases",
"core-graphics-types 0.1.999",
"core-graphics-types 0.2.0",
"gpu-alloc",
"gpu-allocator",
"gpu-descriptor",
@@ -7623,7 +7623,7 @@ dependencies = [
[[package]]
name = "wgpu-types"
version = "25.0.0"
source = "git+https://github.com/gfx-rs/wgpu?rev=35f131ff10153e48b790e1f156c864734063ce71#35f131ff10153e48b790e1f156c864734063ce71"
source = "git+https://github.com/gfx-rs/wgpu?rev=9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b#9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
dependencies = [
"bitflags 2.9.0",
"bytemuck",

View File

@@ -168,17 +168,23 @@ ffi::WGPURecordedRenderPass* BeginRenderPass(
return nullptr;
}
std::array<ffi::WGPURenderPassColorAttachment, WGPUMAX_COLOR_ATTACHMENTS>
std::array<ffi::WGPUFfiRenderPassColorAttachment, WGPUMAX_COLOR_ATTACHMENTS>
colorDescs = {};
desc.color_attachments = colorDescs.data();
desc.color_attachments_length = aDesc.mColorAttachments.Length();
for (size_t i = 0; i < aDesc.mColorAttachments.Length(); ++i) {
const auto& ca = aDesc.mColorAttachments[i];
ffi::WGPURenderPassColorAttachment& cd = colorDescs[i];
ffi::WGPUFfiRenderPassColorAttachment& cd = colorDescs[i];
cd.view = ca.mView->mId;
cd.store_op = ConvertStoreOp(ca.mStoreOp);
if (ca.mDepthSlice.WasPassed()) {
cd.depth_slice.tag = ffi::WGPUFfiOption_u32_Some_u32;
cd.depth_slice.some = ca.mDepthSlice.Value();
} else {
cd.depth_slice.tag = ffi::WGPUFfiOption_u32_None_u32;
}
if (ca.mResolveTarget.WasPassed()) {
cd.resolve_target = ca.mResolveTarget.Value().mId;
}

View File

@@ -1110,6 +1110,7 @@ dictionary GPURenderPassDescriptor
dictionary GPURenderPassColorAttachment {
required GPUTextureView view;
GPUIntegerCoordinate depthSlice;
GPUTextureView resolveTarget;
GPUColor clearValue;

View File

@@ -17,7 +17,7 @@ default = []
[dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
# TODO: remove the replay feature on the next update containing https://github.com/gfx-rs/wgpu/pull/5182
features = [
"serde",
@@ -33,32 +33,32 @@ features = [
[target.'cfg(any(target_os = "macos", target_os = "ios"))'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["metal"]
# We want the wgpu-core Direct3D backends on Windows.
[target.'cfg(windows)'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["dx12"]
# We want the wgpu-core Vulkan backend on Linux and Windows.
[target.'cfg(any(windows, all(unix, not(any(target_os = "macos", target_os = "ios")))))'.dependencies.wgc]
package = "wgpu-core"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["vulkan"]
[dependencies.wgt]
package = "wgpu-types"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
[dependencies.wgh]
package = "wgpu-hal"
git = "https://github.com/gfx-rs/wgpu"
rev = "35f131ff10153e48b790e1f156c864734063ce71"
rev = "9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
features = ["device_lost_panic", "internal_error_panic"]
[target.'cfg(windows)'.dependencies]
@@ -68,7 +68,7 @@ windows = { version = "0.58", default-features = false, features = [
[target.'cfg(target_os = "macos")'.dependencies]
objc = "0.2"
metal = "0.31"
metal = "0.32"
io-surface = "0.15"
[dependencies]

View File

@@ -85,7 +85,6 @@ include = ["BufferUsages"]
"SamplerDescriptor______nsACString" = "WGPUSamplerDescriptor"
"AdapterInformation_nsString" = "WGPUAdapterInformation"
"QuerySetDescriptor______nsACString" = "WGPUQuerySetDescriptor"
"RenderPassColorAttachment_TextureViewId" = "WGPURenderPassColorAttachment"
[parse]
parse_deps = true

View File

@@ -8,8 +8,8 @@ origin:
name: wgpu
description: A cross-platform pure-Rust graphics API, modeled on the WebGPU standard
url: https://github.com/gfx-rs/wgpu
release: 35f131ff10153e48b790e1f156c864734063ce71 (Wed Apr 23 03:30:36 2025 +0000).
revision: 35f131ff10153e48b790e1f156c864734063ce71
release: commit 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b
revision: 9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b
license: ['MIT', 'Apache-2.0']
updatebot:

View File

@@ -23,7 +23,7 @@ use nsstring::{nsACString, nsString};
use std::fmt::Write;
use std::{borrow::Cow, ptr};
use self::render_pass::RenderPassDepthStencilAttachment;
use self::render_pass::{FfiRenderPassColorAttachment, RenderPassDepthStencilAttachment};
pub mod render_pass;
@@ -864,7 +864,7 @@ pub unsafe extern "C" fn wgpu_compute_pass_destroy(pass: *mut crate::command::Re
#[repr(C)]
pub struct RenderPassDescriptor<'a> {
pub label: Option<&'a nsACString>,
pub color_attachments: *const wgc::command::RenderPassColorAttachment<id::TextureViewId>,
pub color_attachments: *const FfiRenderPassColorAttachment,
pub color_attachments_length: usize,
pub depth_stencil_attachment: Option<&'a RenderPassDepthStencilAttachment>,
pub timestamp_writes: Option<&'a PassTimestampWrites<'a>>,
@@ -905,7 +905,7 @@ pub unsafe extern "C" fn wgpu_command_encoder_begin_render_pass(
let color_attachments: Vec<_> = make_slice(color_attachments, color_attachments_length)
.iter()
.map(|format| Some(format.clone()))
.map(|format| Some(format.clone().to_wgpu()))
.collect();
let depth_stencil_attachment = depth_stencil_attachment.cloned().map(|dsa| dsa.to_wgpu());
let pass = crate::command::RecordedRenderPass::new(&wgc::command::RenderPassDescriptor {

View File

@@ -32,6 +32,37 @@ impl<T> FfiOption<T> {
}
}
/// FFI-safe analogue of [`wgc::command::RenderPassColorAttachment`].
#[repr(C)]
#[derive(Clone, Debug, PartialEq)]
pub struct FfiRenderPassColorAttachment {
pub view: id::TextureViewId,
pub depth_slice: FfiOption<u32>,
pub resolve_target: Option<id::TextureViewId>,
pub load_op: wgc::command::LoadOp<wgt::Color>,
pub store_op: wgc::command::StoreOp,
}
impl FfiRenderPassColorAttachment {
pub(crate) fn to_wgpu(self) -> wgc::command::RenderPassColorAttachment {
let Self {
view,
depth_slice,
resolve_target,
load_op,
store_op,
} = self;
wgc::command::RenderPassColorAttachment {
view,
depth_slice: depth_slice.to_std(),
resolve_target,
load_op,
store_op,
}
}
}
/// FFI-safe analogue of [`wgc::command::RenderPassDepthStencilAttachment`].
#[repr(C)]
#[derive(Clone, Debug, PartialEq)]

View File

@@ -3734,9 +3734,10 @@ delta = "24.0.0 -> 25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.net2]]
@@ -6023,9 +6024,10 @@ delta = "24.0.0 -> 25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.wgpu-core-deps-apple]]
@@ -6037,9 +6039,10 @@ version = "25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.wgpu-core-deps-windows-linux-android]]
@@ -6051,9 +6054,10 @@ version = "25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.wgpu-hal]]
@@ -6143,9 +6147,10 @@ delta = "24.0.0 -> 25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.wgpu-types]]
@@ -6230,9 +6235,10 @@ delta = "24.0.0 -> 25.0.0"
who = [
"Erich Gubler <erichdongubler@gmail.com>",
"Jim Blandy <jimb@red-bean.com>",
"Teodor Tanasoaia <ttanasoaia@mozilla.com>",
]
criteria = "safe-to-deploy"
delta = "25.0.0 -> 25.0.0@git:35f131ff10153e48b790e1f156c864734063ce71"
delta = "25.0.0 -> 25.0.0@git:9fccdf5cf370fcd104e37a4dc87c5db82cfd0e2b"
importable = false
[[audits.whatsys]]
@@ -6670,7 +6676,7 @@ end = "2024-05-06"
criteria = "safe-to-deploy"
user-id = 2915 # Amanieu d'Antras (Amanieu)
start = "2019-05-04"
end = "2024-05-05"
end = "2026-04-29"
[[trusted.parking_lot_core]]
criteria = "safe-to-deploy"

View File

@@ -433,8 +433,8 @@ user-login = "mbrubeck"
user-name = "Matt Brubeck"
[[publisher.parking_lot]]
version = "0.12.1"
when = "2022-05-31"
version = "0.12.3"
when = "2024-05-24"
user-id = 2915
user-login = "Amanieu"
user-name = "Amanieu d'Antras"
@@ -1255,6 +1255,15 @@ who = "Dan Gohman <dev@sunfishcode.online>"
criteria = "safe-to-deploy"
delta = "0.2.158 -> 0.2.161"
[[audits.bytecode-alliance.audits.libc]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
delta = "0.2.161 -> 0.2.171"
notes = """
Lots of unsafe, but that's par for the course with libc, it's all FFI type
definitions updates/adjustments/etc.
"""
[[audits.bytecode-alliance.audits.memoffset]]
who = "Alex Crichton <alex@alexcrichton.com>"
criteria = "safe-to-deploy"
@@ -1753,6 +1762,32 @@ delta = "1.0.14 -> 1.0.15"
notes = "Only minor rustdoc changes."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "danakj <danakj@chromium.org>"
criteria = "safe-to-deploy"
version = "0.4.22"
notes = """
Unsafe review in https://docs.google.com/document/d/1IXQbD1GhTRqNHIGxq6yy7qHqxeO4CwN5noMFXnqyDIM/edit?usp=sharing
Unsafety is generally very well-documented, with one exception, which we
describe in the review doc.
"""
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "Lukasz Anforowicz <lukasza@chromium.org>"
criteria = "safe-to-deploy"
delta = "0.4.22 -> 0.4.25"
notes = "No impact on `unsafe` usage in `lib.rs`."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.log]]
who = "Daniel Cheng <dcheng@chromium.org>"
criteria = "safe-to-deploy"
delta = "0.4.25 -> 0.4.26"
notes = "Only trivial code and documentation changes."
aggregated-from = "https://chromium.googlesource.com/chromium/src/+/main/third_party/rust/chromium_crates_io/supply-chain/audits.toml?format=TEXT"
[[audits.google.audits.nom]]
who = "danakj@chromium.org"
criteria = "safe-to-deploy"
@@ -2299,20 +2334,6 @@ version = "1.4.0"
notes = "I have read over the macros, and audited the unsafe code."
aggregated-from = "https://raw.githubusercontent.com/mozilla/cargo-vet/main/supply-chain/audits.toml"
[[audits.mozilla.audits.log]]
who = "Jan-Erik Rediger <jrediger@mozilla.com>"
criteria = "safe-to-deploy"
delta = "0.4.17 -> 0.4.18"
notes = "One dependency removed, others updated (which we don't rely on), some APIs (which we don't use) changed."
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.audits.log]]
who = "Kagami Sascha Rosylight <krosylight@mozilla.com>"
criteria = "safe-to-deploy"
delta = "0.4.18 -> 0.4.20"
notes = "Only cfg attribute and internal macro changes and module refactorings"
aggregated-from = "https://raw.githubusercontent.com/mozilla/glean/main/supply-chain/audits.toml"
[[audits.mozilla.audits.rkv]]
who = "Kagami Sascha Rosylight <krosylight@mozilla.com>"
criteria = "safe-to-deploy"

View File

@@ -1521,16 +1521,22 @@
expected:
if os == "win": [OK, ERROR]
[:format="depth16unorm"]
expected: FAIL
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth24plus"]
expected: FAIL
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth24plus-stencil8"]
expected: FAIL
[:format="depth32float"]
expected: FAIL
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:format="depth32float-stencil8"]
expected: FAIL

View File

@@ -1,13 +1,18 @@
[cts.https.html?q=webgpu:api,operation,render_pass,resolve:render_pass_resolve:*]
implementation-status: backlog
implementation-status:
if os == "mac": backlog
[:separateResolvePass=false;storeOperation="discard"]
expected: FAIL
expected:
if os == "mac": FAIL
[:separateResolvePass=false;storeOperation="store"]
expected: FAIL
expected:
if os == "mac": FAIL
[:separateResolvePass=true;storeOperation="discard"]
expected: FAIL
expected:
if os == "mac": FAIL
[:separateResolvePass=true;storeOperation="store"]
expected: FAIL
expected:
if os == "mac": FAIL

View File

@@ -1,202 +1,135 @@
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,202 +1,135 @@
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[dedicated.https.html?worker=dedicated&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,202 +1,135 @@
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_only:*]
implementation-status: backlog
[:colorFormat="bgra8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="bgra8unorm-srgb";storeOperation="store"]
expected: FAIL
[:colorFormat="r16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16float";storeOperation="store"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32float";storeOperation="store"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="r8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg11b10ufloat";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rg8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgb10a2unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba16uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32float";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba32uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8sint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8uint";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm";storeOperation="store"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="discard"]
expected: FAIL
[:colorFormat="rgba8unorm-srgb";storeOperation="store"]
expected: FAIL
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,color_attachment_with_depth_stencil_attachment:*]
@@ -210,24 +143,17 @@
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,depth_stencil_attachment_only:*]
implementation-status: backlog
[:depthStencilFormat="depth16unorm";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth16unorm";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="depth32float";storeOperation="store"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="discard"]
expected: FAIL
[:depthStencilFormat="stencil8";storeOperation="store"]
expected: FAIL
[shared.https.html?worker=shared&q=webgpu:api,operation,render_pass,storeOp:render_pass_store_op,multiple_color_attachments:*]

View File

@@ -1,104 +1,112 @@
[cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:alpha_to_coverage_mask:*]
implementation-status: backlog
implementation-status:
if os == "win": backlog
[:interpolated=false;sampleCount=4;rasterizationMask=0]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=1]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=10]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=11]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=12]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=13]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=14]
expected: FAIL
expected:
if os == "win" and debug: [PASS, FAIL]
[:interpolated=false;sampleCount=4;rasterizationMask=15]
expected: FAIL
expected:
if os == "win" and debug: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=2]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=3]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=4]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=5]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=6]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=7]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=8]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=9]
expected: FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=0]
expected: FAIL
expected:
if os == "win" and debug: FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=1]
expected: FAIL
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
[:interpolated=true;sampleCount=4;rasterizationMask=10]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=11]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=12]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=13]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=14]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=15]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=2]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=3]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=4]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=5]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=6]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=7]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=8]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=9]
expected: FAIL
expected:
if os == "win": FAIL
[cts.https.html?q=webgpu:api,operation,render_pipeline,sample_mask:fragment_output_mask:*]
implementation-status: backlog
implementation-status:
if os == "win": backlog
if os == "mac": backlog
expected:
if os == "win": [OK, ERROR]
[:interpolated=false;sampleCount=1;rasterizationMask=0]
@@ -108,52 +116,72 @@
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=0]
expected: FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=1]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=10]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=11]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=12]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=13]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=14]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=15]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=2]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=3]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=4]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=5]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=6]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=7]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=8]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=false;sampleCount=4;rasterizationMask=9]
expected: FAIL
expected:
if os == "mac": FAIL
[:interpolated=true;sampleCount=1;rasterizationMask=0]
expected:
@@ -165,49 +193,80 @@
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=0]
expected: FAIL
expected:
if os == "win": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=10]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=11]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=12]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=13]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=14]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=15]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=3]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=4]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=5]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=6]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=7]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=8]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL
[:interpolated=true;sampleCount=4;rasterizationMask=9]
expected: FAIL
expected:
if os == "win": FAIL
if os == "mac": FAIL

View File

@@ -1,37 +1,28 @@
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_mip_level:*]
implementation-status: backlog
implementation-status:
if os == "linux": backlog
[:sameTexture=false]
expected: FAIL
expected:
if os == "linux": FAIL
[:sameTexture=true]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:multiple_color_attachments,same_slice_with_diff_mip_levels:*]
implementation-status: backlog
[:depthSlice=0]
expected: FAIL
[:depthSlice=1]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,rendering,3d_texture_slices:one_color_attachment,mip_levels:*]
implementation-status: backlog
[:mipLevel=0;depthSlice=0]
expected: FAIL
[:mipLevel=0;depthSlice=1]
expected: FAIL
[:mipLevel=1;depthSlice=0]
expected: FAIL
[:mipLevel=1;depthSlice=1]
expected: FAIL
[:mipLevel=2;depthSlice=0]
expected: FAIL
[:mipLevel=2;depthSlice=1]
expected: FAIL

View File

@@ -1,13 +1,13 @@
[cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_accumulation:*]
implementation-status: backlog
implementation-status:
if os == "mac": backlog
[:format="depth24plus-stencil8"]
expected: FAIL
[:format="depth32float-stencil8"]
expected: FAIL
[:format="stencil8"]
expected: FAIL
expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:api,operation,rendering,stencil:stencil_compare_func:*]

View File

@@ -7,9 +7,7 @@
[cts.https.html?q=webgpu:api,operation,resource_init,buffer:copy_texture_to_partial_buffer:*]
implementation-status: backlog
[:]
expected: FAIL
[cts.https.html?q=webgpu:api,operation,resource_init,buffer:index_buffer:*]

View File

@@ -46,721 +46,541 @@
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rg32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba16uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32float";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba32uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8sint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8snorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8uint";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="rgba8uint";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="compute";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="fragment";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="1d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=1]
expected: FAIL
expected:
if os == "linux": FAIL
[:format="rgba8unorm";shaderStage="vertex";dimension="3d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "linux": FAIL

View File

@@ -1,5 +1,6 @@
[cts.https.html?q=webgpu:api,operation,storage_texture,read_write:basic:*]
implementation-status: backlog
implementation-status:
if os == "win": backlog
[:format="bgra8unorm";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
[:format="bgra8unorm";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
@@ -21,94 +22,70 @@
[:format="bgra8unorm";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
[:format="r32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32float";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32sint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="compute";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="1d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="2d";depthOrArrayLayers=2]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=1]
expected: FAIL
[:format="r32uint";shaderStage="fragment";textureDimension="3d";depthOrArrayLayers=2]
expected: FAIL
[:format="rg32float";shaderStage="compute";textureDimension="1d";depthOrArrayLayers=1]

View File

@@ -11,7 +11,6 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:binding_must_contain_resource_defined_in_layout:*]
implementation-status: backlog
[:resourceType="compareSamp";entry={"buffer":{"type":"read-only-storage"}}]
[:resourceType="compareSamp";entry={"buffer":{"type":"storage"}}]
@@ -25,10 +24,8 @@
[:resourceType="compareSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="compareSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="compareSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="compareSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -49,10 +46,8 @@
[:resourceType="errorBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -73,10 +68,8 @@
[:resourceType="errorSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -97,10 +90,8 @@
[:resourceType="errorTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="errorTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="errorTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="errorTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -121,10 +112,8 @@
[:resourceType="filtSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="filtSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="filtSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="filtSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -145,10 +134,8 @@
[:resourceType="nonFiltSamp";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="nonFiltSamp";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -169,10 +156,8 @@
[:resourceType="readonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="readonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -193,10 +178,8 @@
[:resourceType="readwriteStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="readwriteStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -217,10 +200,8 @@
[:resourceType="sampledTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="sampledTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -241,10 +222,8 @@
[:resourceType="sampledTexMS";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="sampledTexMS";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -265,10 +244,8 @@
[:resourceType="storageBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="storageBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="storageBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="storageBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -289,10 +266,8 @@
[:resourceType="uniformBuf";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="uniformBuf";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -313,10 +288,8 @@
[:resourceType="writeonlyStorageTex";entry={"sampler":{"type":"non-filtering"}}]
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:resourceType="writeonlyStorageTex";entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -326,16 +299,13 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:binding_resources,device_mismatch:*]
implementation-status: backlog
[:entry={"buffer":{"type":"storage"}}]
[:entry={"sampler":{"type":"filtering"}}]
[:entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -1239,9 +1209,7 @@
[cts.https.html?q=webgpu:api,validation,createBindGroup:texture_binding_must_have_correct_usage:*]
implementation-status: backlog
[:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,createBindGroup:texture_must_have_correct_component_type:*]

View File

@@ -267,148 +267,188 @@
[:format="astc-8x8-unorm-srgb";access="write-only"]
[:format="bc1-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc1-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc1-rgba-unorm";access="write-only"]
expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc1-rgba-unorm-srgb";access="write-only"]
expected: FAIL
[:format="bc2-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc2-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc2-rgba-unorm";access="write-only"]
expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc2-rgba-unorm-srgb";access="write-only"]
expected: FAIL
[:format="bc3-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc3-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc3-rgba-unorm";access="write-only"]
expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc3-rgba-unorm-srgb";access="write-only"]
expected: FAIL
[:format="bc4-r-snorm";access="read-only"]
expected: FAIL
[:format="bc4-r-snorm";access="read-write"]
expected: FAIL
[:format="bc4-r-snorm";access="write-only"]
expected: FAIL
[:format="bc4-r-unorm";access="read-only"]
expected: FAIL
[:format="bc4-r-unorm";access="read-write"]
expected: FAIL
[:format="bc4-r-unorm";access="write-only"]
expected: FAIL
[:format="bc5-rg-snorm";access="read-only"]
expected: FAIL
[:format="bc5-rg-snorm";access="read-write"]
expected: FAIL
[:format="bc5-rg-snorm";access="write-only"]
expected: FAIL
[:format="bc5-rg-unorm";access="read-only"]
expected: FAIL
[:format="bc5-rg-unorm";access="read-write"]
expected: FAIL
[:format="bc5-rg-unorm";access="write-only"]
expected: FAIL
[:format="bc6h-rgb-float";access="read-only"]
expected: FAIL
[:format="bc6h-rgb-float";access="read-write"]
expected: FAIL
[:format="bc6h-rgb-float";access="write-only"]
expected: FAIL
[:format="bc6h-rgb-ufloat";access="read-only"]
expected: FAIL
[:format="bc6h-rgb-ufloat";access="read-write"]
expected: FAIL
[:format="bc6h-rgb-ufloat";access="write-only"]
expected: FAIL
[:format="bc7-rgba-unorm";access="read-only"]
expected: FAIL
[:format="bc7-rgba-unorm";access="read-write"]
expected: FAIL
[:format="bc7-rgba-unorm";access="write-only"]
expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="read-only"]
expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="read-write"]
expected: FAIL
[:format="bc7-rgba-unorm-srgb";access="write-only"]
expected: FAIL
[:format="bgra8unorm";access="read-only"]
expected: FAIL
[:format="bgra8unorm";access="read-write"]
expected: FAIL
[:format="bgra8unorm";access="write-only"]
[:format="bgra8unorm-srgb";access="read-only"]
expected: FAIL
[:format="bgra8unorm-srgb";access="read-write"]
expected: FAIL
[:format="bgra8unorm-srgb";access="write-only"]
expected: FAIL
[:format="depth16unorm";access="read-only"]
expected: FAIL
[:format="depth16unorm";access="read-write"]
expected: FAIL
[:format="depth16unorm";access="write-only"]
expected: FAIL
[:format="depth24plus";access="read-only"]
expected: FAIL
[:format="depth24plus";access="read-write"]
expected: FAIL
[:format="depth24plus";access="write-only"]
expected: FAIL
[:format="depth24plus-stencil8";access="read-only"]
expected: FAIL
[:format="depth24plus-stencil8";access="read-write"]
expected: FAIL
[:format="depth24plus-stencil8";access="write-only"]
expected: FAIL
[:format="depth32float";access="read-only"]
expected: FAIL
[:format="depth32float";access="read-write"]
expected: FAIL
[:format="depth32float";access="write-only"]
expected: FAIL
[:format="depth32float-stencil8";access="read-only"]
expected: FAIL
[:format="depth32float-stencil8";access="read-write"]
expected: FAIL
[:format="depth32float-stencil8";access="write-only"]
expected: FAIL
@@ -474,256 +514,290 @@
[:format="etc2-rgba8unorm-srgb";access="write-only"]
[:format="r16float";access="read-only"]
expected: FAIL
[:format="r16float";access="read-write"]
expected: FAIL
[:format="r16float";access="write-only"]
expected: FAIL
[:format="r16sint";access="read-only"]
expected: FAIL
[:format="r16sint";access="read-write"]
expected: FAIL
[:format="r16sint";access="write-only"]
expected: FAIL
[:format="r16uint";access="read-only"]
expected: FAIL
[:format="r16uint";access="read-write"]
expected: FAIL
[:format="r16uint";access="write-only"]
expected: FAIL
[:format="r32float";access="read-only"]
expected: FAIL
[:format="r32float";access="read-write"]
expected: FAIL
[:format="r32float";access="write-only"]
[:format="r32sint";access="read-only"]
expected: FAIL
[:format="r32sint";access="read-write"]
expected: FAIL
[:format="r32sint";access="write-only"]
[:format="r32uint";access="read-only"]
expected: FAIL
[:format="r32uint";access="read-write"]
expected: FAIL
[:format="r32uint";access="write-only"]
[:format="r8sint";access="read-only"]
expected: FAIL
[:format="r8sint";access="read-write"]
expected: FAIL
[:format="r8sint";access="write-only"]
expected: FAIL
[:format="r8snorm";access="read-only"]
expected: FAIL
[:format="r8snorm";access="read-write"]
expected: FAIL
[:format="r8snorm";access="write-only"]
expected: FAIL
[:format="r8uint";access="read-only"]
expected: FAIL
[:format="r8uint";access="read-write"]
expected: FAIL
[:format="r8uint";access="write-only"]
expected: FAIL
[:format="r8unorm";access="read-only"]
expected: FAIL
[:format="r8unorm";access="read-write"]
expected: FAIL
[:format="r8unorm";access="write-only"]
expected: FAIL
[:format="rg11b10ufloat";access="read-only"]
expected: FAIL
[:format="rg11b10ufloat";access="read-write"]
expected: FAIL
[:format="rg11b10ufloat";access="write-only"]
expected: FAIL
[:format="rg16float";access="read-only"]
expected: FAIL
[:format="rg16float";access="read-write"]
expected: FAIL
[:format="rg16float";access="write-only"]
expected: FAIL
[:format="rg16sint";access="read-only"]
expected: FAIL
[:format="rg16sint";access="read-write"]
expected: FAIL
[:format="rg16sint";access="write-only"]
expected: FAIL
[:format="rg16uint";access="read-only"]
expected: FAIL
[:format="rg16uint";access="read-write"]
expected: FAIL
[:format="rg16uint";access="write-only"]
expected: FAIL
[:format="rg32float";access="read-only"]
expected: FAIL
[:format="rg32float";access="read-write"]
expected: FAIL
[:format="rg32float";access="write-only"]
[:format="rg32sint";access="read-only"]
expected: FAIL
[:format="rg32sint";access="read-write"]
expected: FAIL
[:format="rg32sint";access="write-only"]
[:format="rg32uint";access="read-only"]
expected: FAIL
[:format="rg32uint";access="read-write"]
expected: FAIL
[:format="rg32uint";access="write-only"]
[:format="rg8sint";access="read-only"]
expected: FAIL
[:format="rg8sint";access="read-write"]
expected: FAIL
[:format="rg8sint";access="write-only"]
expected: FAIL
[:format="rg8snorm";access="read-only"]
expected: FAIL
[:format="rg8snorm";access="read-write"]
expected: FAIL
[:format="rg8snorm";access="write-only"]
expected: FAIL
[:format="rg8uint";access="read-only"]
expected: FAIL
[:format="rg8uint";access="read-write"]
expected: FAIL
[:format="rg8uint";access="write-only"]
expected: FAIL
[:format="rg8unorm";access="read-only"]
expected: FAIL
[:format="rg8unorm";access="read-write"]
expected: FAIL
[:format="rg8unorm";access="write-only"]
expected: FAIL
[:format="rgb10a2uint";access="read-only"]
expected: FAIL
[:format="rgb10a2uint";access="read-write"]
expected: FAIL
[:format="rgb10a2uint";access="write-only"]
expected: FAIL
[:format="rgb10a2unorm";access="read-only"]
expected: FAIL
[:format="rgb10a2unorm";access="read-write"]
expected: FAIL
[:format="rgb10a2unorm";access="write-only"]
expected: FAIL
[:format="rgb9e5ufloat";access="read-only"]
expected: FAIL
[:format="rgb9e5ufloat";access="read-write"]
expected: FAIL
[:format="rgb9e5ufloat";access="write-only"]
expected: FAIL
[:format="rgba16float";access="read-only"]
expected: FAIL
[:format="rgba16float";access="read-write"]
expected: FAIL
[:format="rgba16float";access="write-only"]
[:format="rgba16sint";access="read-only"]
expected: FAIL
[:format="rgba16sint";access="read-write"]
expected: FAIL
[:format="rgba16sint";access="write-only"]
[:format="rgba16uint";access="read-only"]
expected: FAIL
[:format="rgba16uint";access="read-write"]
expected: FAIL
[:format="rgba16uint";access="write-only"]
[:format="rgba32float";access="read-only"]
expected: FAIL
[:format="rgba32float";access="read-write"]
expected: FAIL
[:format="rgba32float";access="write-only"]
[:format="rgba32sint";access="read-only"]
expected: FAIL
[:format="rgba32sint";access="read-write"]
expected: FAIL
[:format="rgba32sint";access="write-only"]
[:format="rgba32uint";access="read-only"]
expected: FAIL
[:format="rgba32uint";access="read-write"]
expected: FAIL
[:format="rgba32uint";access="write-only"]
[:format="rgba8sint";access="read-only"]
expected: FAIL
[:format="rgba8sint";access="read-write"]
expected: FAIL
[:format="rgba8sint";access="write-only"]
[:format="rgba8snorm";access="read-only"]
expected: FAIL
[:format="rgba8snorm";access="read-write"]
expected: FAIL
[:format="rgba8snorm";access="write-only"]
[:format="rgba8uint";access="read-only"]
expected: FAIL
[:format="rgba8uint";access="read-write"]
expected: FAIL
[:format="rgba8uint";access="write-only"]
[:format="rgba8unorm";access="read-only"]
expected: FAIL
[:format="rgba8unorm";access="read-write"]
expected: FAIL
[:format="rgba8unorm";access="write-only"]
[:format="rgba8unorm-srgb";access="read-only"]
expected: FAIL
[:format="rgba8unorm-srgb";access="read-write"]
expected: FAIL
[:format="rgba8unorm-srgb";access="write-only"]
expected: FAIL
[:format="stencil8";access="read-only"]
expected: FAIL
[:format="stencil8";access="read-write"]
expected: FAIL
[:format="stencil8";access="write-only"]
expected: FAIL
@@ -773,30 +847,31 @@
[cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility,VERTEX_shader_stage_storage_texture_access:*]
implementation-status: backlog
[:shaderStage=0]
expected: FAIL
[:shaderStage=1]
expected: FAIL
[:shaderStage=2]
expected: FAIL
[:shaderStage=3]
[:shaderStage=4]
expected: FAIL
[:shaderStage=4]
[:shaderStage=5]
expected: FAIL
[:shaderStage=6]
expected: FAIL
[:shaderStage=7]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,createBindGroupLayout:visibility:*]
implementation-status: backlog
[:visibility=0]
expected: FAIL
[:visibility=1]
expected: FAIL
@@ -808,7 +883,6 @@
expected: FAIL
[:visibility=4]
expected: FAIL
[:visibility=5]
expected: FAIL

View File

@@ -4861,7 +4861,6 @@
[cts.https.html?q=webgpu:api,validation,createTexture:texture_usage:*]
implementation-status: backlog
[:dimension="1d";format="bgra8unorm"]
[:dimension="1d";format="bgra8unorm-srgb"]
@@ -5127,111 +5126,78 @@
[:dimension="2d";format="stencil8"]
[:dimension="3d";format="bgra8unorm"]
expected: FAIL
[:dimension="3d";format="bgra8unorm-srgb"]
expected: FAIL
[:dimension="3d";format="r16float"]
expected: FAIL
[:dimension="3d";format="r16sint"]
expected: FAIL
[:dimension="3d";format="r16uint"]
expected: FAIL
[:dimension="3d";format="r32float"]
expected: FAIL
[:dimension="3d";format="r32sint"]
expected: FAIL
[:dimension="3d";format="r32uint"]
expected: FAIL
[:dimension="3d";format="r8sint"]
expected: FAIL
[:dimension="3d";format="r8snorm"]
[:dimension="3d";format="r8uint"]
expected: FAIL
[:dimension="3d";format="r8unorm"]
expected: FAIL
[:dimension="3d";format="rg11b10ufloat"]
expected: FAIL
[:dimension="3d";format="rg16float"]
expected: FAIL
[:dimension="3d";format="rg16sint"]
expected: FAIL
[:dimension="3d";format="rg16uint"]
expected: FAIL
[:dimension="3d";format="rg32float"]
expected: FAIL
[:dimension="3d";format="rg32sint"]
expected: FAIL
[:dimension="3d";format="rg32uint"]
expected: FAIL
[:dimension="3d";format="rg8sint"]
expected: FAIL
[:dimension="3d";format="rg8snorm"]
[:dimension="3d";format="rg8uint"]
expected: FAIL
[:dimension="3d";format="rg8unorm"]
expected: FAIL
[:dimension="3d";format="rgb10a2uint"]
expected: FAIL
[:dimension="3d";format="rgb10a2unorm"]
expected: FAIL
[:dimension="3d";format="rgb9e5ufloat"]
[:dimension="3d";format="rgba16float"]
expected: FAIL
[:dimension="3d";format="rgba16sint"]
expected: FAIL
[:dimension="3d";format="rgba16uint"]
expected: FAIL
[:dimension="3d";format="rgba32float"]
expected: FAIL
[:dimension="3d";format="rgba32sint"]
expected: FAIL
[:dimension="3d";format="rgba32uint"]
expected: FAIL
[:dimension="3d";format="rgba8sint"]
expected: FAIL
[:dimension="3d";format="rgba8snorm"]
[:dimension="3d";format="rgba8uint"]
expected: FAIL
[:dimension="3d";format="rgba8unorm"]
expected: FAIL
[:dimension="3d";format="rgba8unorm-srgb"]
expected: FAIL
[:dimension="_undef_";format="astc-10x10-unorm"]

View File

@@ -115,27 +115,19 @@
if os == "mac": [OK, TIMEOUT]
[:encoderType="compute%20pass";call="dispatch";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatch";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="compute%20pass";call="dispatchIndirect";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20bundle";call="draw";callWithZero=false]
expected:
@@ -187,51 +179,35 @@
[:encoderType="render%20pass";call="draw";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="draw";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexed";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndexedIndirect";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=false]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[:encoderType="render%20pass";call="drawIndirect";callWithZero=true]
expected:
if os == "win": FAIL
if os == "linux": FAIL
if os == "mac": [FAIL, TIMEOUT, NOTRUN]
if os == "mac": [PASS, TIMEOUT, NOTRUN]
[cts.https.html?q=webgpu:api,validation,encoding,programmable,pipeline_bind_group_compat:bgl_visibility_mismatch:*]

View File

@@ -163,61 +163,80 @@
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="compareSamp"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="filtSamp"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readonlyStorageTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="readwriteStorageTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="sampledTexMS"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="storageBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="uniformBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readonlyStorageTex";bindingInShader="writeonlyStorageTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="compareSamp"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="filtSamp"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readonlyStorageTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="readwriteStorageTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTex"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="sampledTexMS"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="storageBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="uniformBuf"]
expected: FAIL
expected:
if os == "win": FAIL
[:bindingInPipelineLayout="readwriteStorageTex";bindingInShader="writeonlyStorageTex"]
expected: FAIL

View File

@@ -1296,28 +1296,21 @@
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_in_vertex_state:*]
implementation-status: backlog
[:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_input_location_limit:*]
implementation-status: backlog
[:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,render_pipeline,vertex_state:vertex_shader_type_matches_attribute_format:*]
implementation-status: backlog
[:format="float16"]
expected: FAIL
[:format="float16x2"]
[:format="float16x4"]
[:format="float32"]
expected: FAIL
[:format="float32x2"]
@@ -1326,14 +1319,12 @@
[:format="float32x4"]
[:format="sint16"]
expected: FAIL
[:format="sint16x2"]
[:format="sint16x4"]
[:format="sint32"]
expected: FAIL
[:format="sint32x2"]
@@ -1342,35 +1333,30 @@
[:format="sint32x4"]
[:format="sint8"]
expected: FAIL
[:format="sint8x2"]
[:format="sint8x4"]
[:format="snorm16"]
expected: FAIL
[:format="snorm16x2"]
[:format="snorm16x4"]
[:format="snorm8"]
expected: FAIL
[:format="snorm8x2"]
[:format="snorm8x4"]
[:format="uint16"]
expected: FAIL
[:format="uint16x2"]
[:format="uint16x4"]
[:format="uint32"]
expected: FAIL
[:format="uint32x2"]
@@ -1379,7 +1365,6 @@
[:format="uint32x4"]
[:format="uint8"]
expected: FAIL
[:format="uint8x2"]
@@ -1388,14 +1373,12 @@
[:format="unorm10-10-10-2"]
[:format="unorm16"]
expected: FAIL
[:format="unorm16x2"]
[:format="unorm16x4"]
[:format="unorm8"]
expected: FAIL
[:format="unorm8x2"]

View File

@@ -6,7 +6,6 @@
expected: FAIL
[:type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
@@ -24,7 +23,6 @@
expected: FAIL
[:type0="readwrite-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
[:type0="readwrite-storage-texture";type1="render-target"]
expected: FAIL
@@ -104,20 +102,16 @@
[:compute=false;callDrawOrDispatch=true;entry={"texture":{"sampleType":"unfilterable-float"}}]
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=false;entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
[:compute=true;callDrawOrDispatch=false;entry={"texture":{"sampleType":"unfilterable-float"}}]
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-only","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"read-write","format":"r32float"}}]
expected: FAIL
[:compute=true;callDrawOrDispatch=true;entry={"storageTexture":{"access":"write-only","format":"r32float"}}]
@@ -163,24 +157,18 @@
expected: FAIL
[:dispatch="none";usage1="readonly-storage-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="readonly-storage-texture";usage2="writeonly-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="sampled-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[:dispatch="none";usage1="sampled-texture";usage2="writeonly-storage-texture"]
[:dispatch="none";usage1="writeonly-storage-texture";usage2="readwrite-storage-texture"]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,compute:*]
implementation-status: backlog
[:]
expected: FAIL
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:scope,pass_boundary,render:*]
@@ -282,7 +270,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_pass_encoder:subresources_and_binding_types_combination_for_color:*]
implementation-status: backlog
[:compute=false;type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:compute=false;type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
@@ -294,7 +281,6 @@
expected: FAIL
[:compute=false;type0="readwrite-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
[:compute=false;type0="readwrite-storage-texture";type1="render-target"]
expected: FAIL
@@ -325,7 +311,6 @@
[:compute=false;type0="writeonly-storage-texture";type1="writeonly-storage-texture"]
[:compute=true;type0="readonly-storage-texture";type1="readonly-storage-texture"]
expected: FAIL
[:compute=true;type0="readonly-storage-texture";type1="readwrite-storage-texture"]
expected: FAIL
@@ -1125,577 +1110,409 @@
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="readonly-storage-texture";writableUsage="writeonly-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=false;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=false;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="common";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="after";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="before";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="middle";callDrawOrDispatch=true]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=false]
expected: FAIL
[:compute=true;readOnlyUsage="sampled-texture";writableUsage="readwrite-storage-texture";useBindGroup0=true;useBindGroup1=true;setBindGroupsOrder="reversed";setPipeline="none";callDrawOrDispatch=true]
expected: FAIL

View File

@@ -1,7 +1,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_bind_group_on_same_index_color_texture:*]
implementation-status: backlog
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
@@ -16,7 +15,6 @@
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL
@@ -47,7 +45,6 @@
[:useDifferentTextureAsTexture2=false;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
@@ -62,7 +59,6 @@
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL
@@ -93,7 +89,6 @@
[:useDifferentTextureAsTexture2=false;baseLayer2=1;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
@@ -108,7 +103,6 @@
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL
@@ -139,7 +133,6 @@
[:useDifferentTextureAsTexture2=true;baseLayer2=0;view1Binding="writeonly-storage-texture";view2Binding="writeonly-storage-texture"]
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readonly-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readonly-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
@@ -154,7 +147,6 @@
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="readwrite-storage-texture"]
expected: FAIL
[:useDifferentTextureAsTexture2=true;baseLayer2=1;view1Binding="readwrite-storage-texture";view2Binding="sampled-texture"]
expected: FAIL
@@ -201,51 +193,38 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,set_unused_bind_group:*]
implementation-status: backlog
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readonly-storage-texture";textureUsage1="writeonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="readwrite-storage-texture";textureUsage1="writeonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="sampled-texture"]
[:inRenderPass=false;textureUsage0="sampled-texture";textureUsage1="writeonly-storage-texture"]
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="sampled-texture"]
[:inRenderPass=false;textureUsage0="writeonly-storage-texture";textureUsage1="writeonly-storage-texture"]
[:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readonly-storage-texture"]
expected: FAIL
[:inRenderPass=true;textureUsage0="readonly-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
@@ -260,7 +239,6 @@
expected: FAIL
[:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="readwrite-storage-texture"]
expected: FAIL
[:inRenderPass=true;textureUsage0="readwrite-storage-texture";textureUsage1="sampled-texture"]
expected: FAIL
@@ -292,7 +270,6 @@
[cts.https.html?q=webgpu:api,validation,resource_usages,texture,in_render_misc:subresources,texture_usages_in_copy_and_render_pass:*]
implementation-status: backlog
[:usage0="color-attachment";usage1="copy-dst"]
[:usage0="color-attachment";usage1="copy-src"]
@@ -304,10 +281,8 @@
[:usage0="copy-dst";usage1="copy-src"]
[:usage0="copy-dst";usage1="readonly-storage-texture"]
expected: FAIL
[:usage0="copy-dst";usage1="readwrite-storage-texture"]
expected: FAIL
[:usage0="copy-dst";usage1="sampled-texture"]
@@ -320,26 +295,20 @@
[:usage0="copy-src";usage1="copy-src"]
[:usage0="copy-src";usage1="readonly-storage-texture"]
expected: FAIL
[:usage0="copy-src";usage1="readwrite-storage-texture"]
expected: FAIL
[:usage0="copy-src";usage1="sampled-texture"]
[:usage0="copy-src";usage1="writeonly-storage-texture"]
[:usage0="readonly-storage-texture";usage1="copy-dst"]
expected: FAIL
[:usage0="readonly-storage-texture";usage1="copy-src"]
expected: FAIL
[:usage0="readwrite-storage-texture";usage1="copy-dst"]
expected: FAIL
[:usage0="readwrite-storage-texture";usage1="copy-src"]
expected: FAIL
[:usage0="sampled-texture";usage1="copy-dst"]
@@ -369,32 +338,36 @@
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=0]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=1]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=16]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=2]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=4]
expected: FAIL
[:bindingType="readonly-storage-texture";viewUsage=8]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=0]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=1]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=16]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=2]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=4]
expected: FAIL
[:bindingType="readwrite-storage-texture";viewUsage=8]
expected: FAIL
[:bindingType="sampled-texture";viewUsage=0]

View File

@@ -169,12 +169,11 @@
[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,computePipeline:*]
implementation-status: backlog
implementation-status:
if os == "win" and debug: backlog
[:format="rg32float";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32float";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32float";entryPoint="csWithoutStorageUsage";async=false]
expected:
@@ -185,10 +184,8 @@
if os == "win" and debug: [PASS, FAIL]
[:format="rg32sint";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32sint";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32sint";entryPoint="csWithoutStorageUsage";async=false]
expected:
@@ -199,10 +196,8 @@
if os == "win" and debug: [PASS, FAIL]
[:format="rg32uint";entryPoint="csWithStorageUsage";async=false]
expected: FAIL
[:format="rg32uint";entryPoint="csWithStorageUsage";async=true]
expected: FAIL
[:format="rg32uint";entryPoint="csWithoutStorageUsage";async=false]
expected:
@@ -214,12 +209,11 @@
[cts.https.html?q=webgpu:compat,api,validation,render_pipeline,unsupported_wgsl:unsupportedStorageTextureFormats,renderPipeline:*]
implementation-status: backlog
implementation-status:
if os == "win" and debug: backlog
[:format="rg32float";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32float";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32float";entryPoint="vsWithoutStorageUsage";async=false]
expected:
@@ -230,10 +224,8 @@
if os == "win" and debug: [PASS, FAIL]
[:format="rg32sint";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32sint";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32sint";entryPoint="vsWithoutStorageUsage";async=false]
expected:
@@ -244,10 +236,8 @@
if os == "win" and debug: [PASS, FAIL]
[:format="rg32uint";entryPoint="vsWithStorageUsage";async=false]
expected: FAIL
[:format="rg32uint";entryPoint="vsWithStorageUsage";async=true]
expected: FAIL
[:format="rg32uint";entryPoint="vsWithoutStorageUsage";async=false]
expected:

View File

@@ -1,12 +1,18 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4I8Packed:basic:*]
implementation-status:
if os == "win": backlog
if os == "mac": backlog
[:inputSource="const"]
[:inputSource="storage_r"]
expected:
if os == "win": FAIL
[:inputSource="storage_rw"]
expected:
if os == "win": FAIL
[:inputSource="uniform"]
expected:
if os == "win": FAIL
if os == "mac": FAIL

View File

@@ -1,12 +1,18 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,dot4U8Packed:basic:*]
implementation-status:
if os == "win": backlog
if os == "mac": backlog
[:inputSource="const"]
[:inputSource="storage_r"]
expected:
if os == "win": FAIL
[:inputSource="storage_rw"]
expected:
if os == "win": FAIL
[:inputSource="uniform"]
expected:
if os == "win": FAIL
if os == "mac": FAIL

View File

@@ -386,13 +386,11 @@
[:format="rg11b10ufloat";aspect="all";samples=1]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "win": [PASS, FAIL]
[:format="rg11b10ufloat";aspect="all";samples=4]
expected:
if os == "win" and debug: FAIL
if os == "win" and not debug: [PASS, FAIL]
if os == "win": [PASS, FAIL]
[:format="rg16float";aspect="all";samples=1]
@@ -432,11 +430,11 @@
[:format="rgb10a2unorm";aspect="all";samples=1]
expected:
if os == "win" and debug: FAIL
if os == "win" and debug: [PASS, FAIL]
[:format="rgb10a2unorm";aspect="all";samples=4]
expected:
if os == "win" and debug: FAIL
if os == "win" and debug: [PASS, FAIL]
[:format="rgb9e5ufloat";aspect="all";samples=1]
expected:
@@ -496,49 +494,33 @@
expected: FAIL
[:format="r32float";aspect="all"]
expected: FAIL
[:format="r32sint";aspect="all"]
expected: FAIL
[:format="r32uint";aspect="all"]
expected: FAIL
[:format="rg32float";aspect="all"]
expected: FAIL
[:format="rg32sint";aspect="all"]
expected: FAIL
[:format="rg32uint";aspect="all"]
expected: FAIL
[:format="rgba16float";aspect="all"]
expected: FAIL
[:format="rgba16sint";aspect="all"]
expected: FAIL
[:format="rgba16uint";aspect="all"]
expected: FAIL
[:format="rgba32float";aspect="all"]
expected: FAIL
[:format="rgba32sint";aspect="all"]
expected: FAIL
[:format="rgba32uint";aspect="all"]
expected: FAIL
[:format="rgba8sint";aspect="all"]
expected: FAIL
[:format="rgba8snorm";aspect="all"]
expected: FAIL
[:format="rgba8uint";aspect="all"]
expected: FAIL
[:format="rgba8unorm";aspect="all"]
expected: FAIL

View File

@@ -2802,154 +2802,166 @@
expected: FAIL
[:stage="c";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"]
expected: FAIL
[:stage="f";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"]
expected: FAIL
[:stage="v";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d:*]
@@ -2958,154 +2970,166 @@
expected: FAIL
[:stage="c";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"]
expected: FAIL
[:stage="f";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"]
expected: FAIL
[:stage="v";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_2d_array:*]
@@ -3114,154 +3138,166 @@
expected: FAIL
[:stage="c";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="c";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="bgra8unorm"]
expected: FAIL
[:stage="f";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="f";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="bgra8unorm"]
expected: FAIL
[:stage="v";format="r32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba16uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32float"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8snorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8uint"]
expected: FAIL
expected:
if os == "mac": FAIL
[:stage="v";format="rgba8unorm"]
expected: FAIL
expected:
if os == "mac": FAIL
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureLoad:storage_textures_3d:*]
@@ -3270,151 +3306,103 @@
expected: FAIL
[:stage="c";format="r32float"]
expected: FAIL
[:stage="c";format="r32sint"]
expected: FAIL
[:stage="c";format="r32uint"]
expected: FAIL
[:stage="c";format="rg32float"]
expected: FAIL
[:stage="c";format="rg32sint"]
expected: FAIL
[:stage="c";format="rg32uint"]
expected: FAIL
[:stage="c";format="rgba16float"]
expected: FAIL
[:stage="c";format="rgba16sint"]
expected: FAIL
[:stage="c";format="rgba16uint"]
expected: FAIL
[:stage="c";format="rgba32float"]
expected: FAIL
[:stage="c";format="rgba32sint"]
expected: FAIL
[:stage="c";format="rgba32uint"]
expected: FAIL
[:stage="c";format="rgba8sint"]
expected: FAIL
[:stage="c";format="rgba8snorm"]
expected: FAIL
[:stage="c";format="rgba8uint"]
expected: FAIL
[:stage="c";format="rgba8unorm"]
expected: FAIL
[:stage="f";format="bgra8unorm"]
expected: FAIL
[:stage="f";format="r32float"]
expected: FAIL
[:stage="f";format="r32sint"]
expected: FAIL
[:stage="f";format="r32uint"]
expected: FAIL
[:stage="f";format="rg32float"]
expected: FAIL
[:stage="f";format="rg32sint"]
expected: FAIL
[:stage="f";format="rg32uint"]
expected: FAIL
[:stage="f";format="rgba16float"]
expected: FAIL
[:stage="f";format="rgba16sint"]
expected: FAIL
[:stage="f";format="rgba16uint"]
expected: FAIL
[:stage="f";format="rgba32float"]
expected: FAIL
[:stage="f";format="rgba32sint"]
expected: FAIL
[:stage="f";format="rgba32uint"]
expected: FAIL
[:stage="f";format="rgba8sint"]
expected: FAIL
[:stage="f";format="rgba8snorm"]
expected: FAIL
[:stage="f";format="rgba8uint"]
expected: FAIL
[:stage="f";format="rgba8unorm"]
expected: FAIL
[:stage="v";format="bgra8unorm"]
expected: FAIL
[:stage="v";format="r32float"]
expected: FAIL
[:stage="v";format="r32sint"]
expected: FAIL
[:stage="v";format="r32uint"]
expected: FAIL
[:stage="v";format="rg32float"]
expected: FAIL
[:stage="v";format="rg32sint"]
expected: FAIL
[:stage="v";format="rg32uint"]
expected: FAIL
[:stage="v";format="rgba16float"]
expected: FAIL
[:stage="v";format="rgba16sint"]
expected: FAIL
[:stage="v";format="rgba16uint"]
expected: FAIL
[:stage="v";format="rgba32float"]
expected: FAIL
[:stage="v";format="rgba32sint"]
expected: FAIL
[:stage="v";format="rgba32uint"]
expected: FAIL
[:stage="v";format="rgba8sint"]
expected: FAIL
[:stage="v";format="rgba8snorm"]
expected: FAIL
[:stage="v";format="rgba8uint"]
expected: FAIL
[:stage="v";format="rgba8unorm"]
expected: FAIL

View File

@@ -43,97 +43,129 @@
expected: FAIL
[:format="r32float";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32float";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32sint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32sint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32uint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="r32uint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32float";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32float";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32sint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32sint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32uint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rg32uint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16float";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16float";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16sint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16sint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16uint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba16uint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32float";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32float";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32sint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32sint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32uint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba32uint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8sint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8sint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8snorm";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8snorm";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8uint";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8uint";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8unorm";view_type="full"]
expected: FAIL
expected:
if os == "win": FAIL
[:format="rgba8unorm";view_type="partial"]
expected: FAIL
expected:
if os == "win": FAIL

View File

@@ -71,7 +71,9 @@
[cts.https.html?q=webgpu:shader,execution,expression,call,builtin,textureStore:texel_formats:*]
implementation-status: backlog
implementation-status:
if os == "win": backlog
if os == "linux": backlog
[:format="bgra8unorm";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="bgra8unorm";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
@@ -113,123 +115,206 @@
[:format="bgra8unorm";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
[:format="r32float";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32float";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32float";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32float";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="compute";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=0]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=1]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32float";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:format="r32sint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32sint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=0]
@@ -238,13 +323,10 @@
[:format="r32sint";viewDimension="2d";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
@@ -253,13 +335,10 @@
[:format="r32sint";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
@@ -268,13 +347,10 @@
[:format="r32sint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
@@ -283,13 +359,10 @@
[:format="r32sint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=0]
@@ -298,13 +371,10 @@
[:format="r32sint";viewDimension="3d";stage="compute";access="write";mipLevel=2]
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=0]
@@ -313,23 +383,18 @@
[:format="r32sint";viewDimension="3d";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="1d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="1d";stage="compute";access="write";mipLevel=0]
[:format="r32uint";viewDimension="1d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="1d";stage="fragment";access="write";mipLevel=0]
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=0]
@@ -338,13 +403,10 @@
[:format="r32uint";viewDimension="2d";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=0]
@@ -353,13 +415,10 @@
[:format="r32uint";viewDimension="2d";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=0]
@@ -368,13 +427,10 @@
[:format="r32uint";viewDimension="2d-array";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=0]
@@ -383,13 +439,10 @@
[:format="r32uint";viewDimension="2d-array";stage="fragment";access="write";mipLevel=2]
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=0]
@@ -398,13 +451,10 @@
[:format="r32uint";viewDimension="3d";stage="compute";access="write";mipLevel=2]
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=0]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=1]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="read_write";mipLevel=2]
expected: FAIL
[:format="r32uint";viewDimension="3d";stage="fragment";access="write";mipLevel=0]

View File

@@ -1,5 +1,6 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_load_store:*]
implementation-status: backlog
implementation-status:
if os == "win" and not debug: backlog
expected:
if os == "win" and not debug: [OK, TIMEOUT]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="rw";normalBarrier=false]
@@ -23,7 +24,6 @@
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="rw";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="rw";normalBarrier=false]
expected:
@@ -33,7 +33,8 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_load:*]
implementation-status: backlog
implementation-status:
if os == "win" and not debug: backlog
expected:
if os == "win" and not debug: [OK, TIMEOUT]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="wr";normalBarrier=false]
@@ -57,7 +58,6 @@
if os == "win" and not debug: [PASS, TIMEOUT, NOTRUN]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="wr";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="wr";normalBarrier=false]
expected:
@@ -67,7 +67,6 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,barrier:workgroup_barrier_store_store:*]
implementation-status: backlog
[:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=false]
[:accessValueType="f16";memType="non_atomic_storage";accessPair="ww";normalBarrier=true]
@@ -87,7 +86,6 @@
[:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=false]
[:accessValueType="u32";memType="non_atomic_texture";accessPair="ww";normalBarrier=true]
expected: FAIL
[:accessValueType="u32";memType="non_atomic_workgroup";accessPair="ww";normalBarrier=false]

View File

@@ -1,37 +1,24 @@
[cts.https.html?q=webgpu:shader,execution,memory_model,texture_intra_invocation_coherence:texture_intra_invocation_coherence:*]
implementation-status: backlog
[:format="r32float";dim="1d"]
expected: FAIL
[:format="r32float";dim="2d"]
expected: FAIL
[:format="r32float";dim="2d-array"]
expected: FAIL
[:format="r32float";dim="3d"]
expected: FAIL
[:format="r32sint";dim="1d"]
expected: FAIL
[:format="r32sint";dim="2d"]
expected: FAIL
[:format="r32sint";dim="2d-array"]
expected: FAIL
[:format="r32sint";dim="3d"]
expected: FAIL
[:format="r32uint";dim="1d"]
expected: FAIL
[:format="r32uint";dim="2d"]
expected: FAIL
[:format="r32uint";dim="2d-array"]
expected: FAIL
[:format="r32uint";dim="3d"]
expected: FAIL

View File

@@ -1,5 +1,4 @@
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,front_facing:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
@@ -33,52 +32,36 @@
[:nearFar=[0,1\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
@@ -113,56 +96,39 @@
[:nearFar=[0.25,0.75\];sampleCount=1;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="ccw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;frontFace="cw";interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage,centroid:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"linear","sampling":"centroid"}]
@@ -172,16 +138,12 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"linear","sampling":"center"}]
@@ -192,20 +154,17 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"centroid"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,interStage:*]
implementation-status: backlog
implementation-status:
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -231,31 +190,30 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -282,35 +240,36 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,position:*]
implementation-status: backlog
implementation-status:
if os == "win": backlog
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
expected:
if os == "win": FAIL
@@ -344,28 +303,38 @@
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
expected:
@@ -400,32 +369,41 @@
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
expected:
if os == "win": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "win": FAIL
if os == "linux": FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_index:*]
implementation-status: backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -443,28 +421,20 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -483,32 +453,25 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:inputs,sample_mask:*]
implementation-status: backlog
implementation-status:
if os == "linux": backlog
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"flat","sampling":"first"}]
@@ -526,28 +489,36 @@
[:nearFar=[0,1\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0,1\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"flat","sampling":"either"}]
@@ -566,28 +537,36 @@
[:nearFar=[0.25,0.75\];sampleCount=1;interpolation={"type":"perspective","sampling":"sample"}]
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"either"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"flat","sampling":"first"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"centroid"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"linear","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"center"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"centroid"}]
expected: FAIL
expected:
if os == "linux": FAIL
[:nearFar=[0.25,0.75\];sampleCount=4;interpolation={"type":"perspective","sampling":"sample"}]
expected: FAIL
expected:
if os == "linux": FAIL
[cts.https.html?q=webgpu:shader,execution,shader_io,fragment_builtins:subgroup_invocation_id:*]

View File

@@ -961,7 +961,6 @@
[cts.https.html?q=webgpu:shader,execution,shader_io,workgroup_size:workgroup_size_override_exp:*]
implementation-status: backlog
[:override1=11;override2=1;override3=1]
[:override1=11;override2=1;override3=2]
@@ -1059,42 +1058,32 @@
[:override1=16;override2=4;override3=8]
[:override1=1;override2=1;override3=1]
expected: FAIL
[:override1=1;override2=1;override3=2]
expected: FAIL
[:override1=1;override2=1;override3=4]
expected: FAIL
[:override1=1;override2=1;override3=8]
[:override1=1;override2=2;override3=1]
expected: FAIL
[:override1=1;override2=2;override3=2]
expected: FAIL
[:override1=1;override2=2;override3=4]
expected: FAIL
[:override1=1;override2=2;override3=8]
[:override1=1;override2=3;override3=1]
expected: FAIL
[:override1=1;override2=3;override3=2]
expected: FAIL
[:override1=1;override2=3;override3=4]
[:override1=1;override2=3;override3=8]
[:override1=1;override2=4;override3=1]
expected: FAIL
[:override1=1;override2=4;override3=2]
expected: FAIL
[:override1=1;override2=4;override3=4]
@@ -1133,38 +1122,30 @@
[:override1=256;override2=4;override3=8]
[:override1=3;override2=1;override3=1]
expected: FAIL
[:override1=3;override2=1;override3=2]
expected: FAIL
[:override1=3;override2=1;override3=4]
expected: FAIL
[:override1=3;override2=1;override3=8]
[:override1=3;override2=2;override3=1]
expected: FAIL
[:override1=3;override2=2;override3=2]
expected: FAIL
[:override1=3;override2=2;override3=4]
[:override1=3;override2=2;override3=8]
[:override1=3;override2=3;override3=1]
expected: FAIL
[:override1=3;override2=3;override3=2]
expected: FAIL
[:override1=3;override2=3;override3=4]
[:override1=3;override2=3;override3=8]
[:override1=3;override2=4;override3=1]
expected: FAIL
[:override1=3;override2=4;override3=2]
@@ -1173,44 +1154,30 @@
[:override1=3;override2=4;override3=8]
[:override1=4;override2=1;override3=1]
expected: FAIL
[:override1=4;override2=1;override3=2]
expected: FAIL
[:override1=4;override2=1;override3=4]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=1;override3=8]
[:override1=4;override2=2;override3=1]
expected: FAIL
[:override1=4;override2=2;override3=2]
expected: FAIL
[:override1=4;override2=2;override3=4]
[:override1=4;override2=2;override3=8]
[:override1=4;override2=3;override3=1]
expected: FAIL
[:override1=4;override2=3;override3=2]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=3;override3=4]
[:override1=4;override2=3;override3=8]
[:override1=4;override2=4;override3=1]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=4;override2=4;override3=2]
@@ -1283,9 +1250,6 @@
[:override1=64;override2=4;override3=8]
[:override1=8;override2=1;override3=1]
expected:
if os == "linux": FAIL
if os == "mac": FAIL
[:override1=8;override2=1;override3=2]

View File

@@ -1761,7 +1761,6 @@
[cts.https.html?q=webgpu:shader,validation,expression,call,builtin,textureLoad:sample_index_argument,non_storage:*]
implementation-status: backlog
[:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-float"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="abstract-int"]
@@ -1775,12 +1774,10 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="i32"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="u32"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"]
@@ -1789,14 +1786,12 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"]
@@ -1805,14 +1800,12 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"]
@@ -1821,7 +1814,6 @@
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"]
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"]
expected: FAIL
[:textureType="texture_depth_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"]
@@ -1838,12 +1830,10 @@
[:textureType="texture_multisampled_2d";sampleIndexType="i32"]
[:textureType="texture_multisampled_2d";sampleIndexType="u32"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cbool%3E"]
@@ -1852,14 +1842,12 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec2%3Cu32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cbool%3E"]
@@ -1868,14 +1856,12 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec3%3Cu32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-float%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cabstract-int%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cbool%3E"]
@@ -1884,7 +1870,6 @@
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cf32%3E"]
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Ci32%3E"]
expected: FAIL
[:textureType="texture_multisampled_2d";sampleIndexType="vec4%3Cu32%3E"]

File diff suppressed because one or more lines are too long

View File

@@ -2,6 +2,366 @@
## [Unreleased]
## [0.2.171](https://github.com/rust-lang/libc/compare/0.2.170...0.2.171) - 2025-03-11
### Added
- Android: Add `if_nameindex`/`if_freenameindex` support ([#4247](https://github.com/rust-lang/libc/pull/4247))
- Apple: Add missing proc types and constants ([#4310](https://github.com/rust-lang/libc/pull/4310))
- BSD: Add `devname` ([#4285](https://github.com/rust-lang/libc/pull/4285))
- Cygwin: Add PTY and group API ([#4309](https://github.com/rust-lang/libc/pull/4309))
- Cygwin: Add support ([#4279](https://github.com/rust-lang/libc/pull/4279))
- FreeBSD: Make `spawn.h` interfaces available on all FreeBSD-like systems ([#4294](https://github.com/rust-lang/libc/pull/4294))
- Linux: Add `AF_XDP` structs for all Linux environments ([#4163](https://github.com/rust-lang/libc/pull/4163))
- Linux: Add SysV semaphore constants ([#4286](https://github.com/rust-lang/libc/pull/4286))
- Linux: Add `F_SEAL_EXEC` ([#4316](https://github.com/rust-lang/libc/pull/4316))
- Linux: Add `SO_PREFER_BUSY_POLL` and `SO_BUSY_POLL_BUDGET` ([#3917](https://github.com/rust-lang/libc/pull/3917))
- Linux: Add `devmem` structs ([#4299](https://github.com/rust-lang/libc/pull/4299))
- Linux: Add socket constants up to `SO_DEVMEM_DONTNEED` ([#4299](https://github.com/rust-lang/libc/pull/4299))
- NetBSD, OpenBSD, DragonflyBSD: Add `closefrom` ([#4290](https://github.com/rust-lang/libc/pull/4290))
- NuttX: Add `pw_passwd` field to `passwd` ([#4222](https://github.com/rust-lang/libc/pull/4222))
- Solarish: define `IP_BOUND_IF` and `IPV6_BOUND_IF` ([#4287](https://github.com/rust-lang/libc/pull/4287))
- Wali: Add bindings for `wasm32-wali-linux-musl` target ([#4244](https://github.com/rust-lang/libc/pull/4244))
### Changed
- AIX: Use `sa_sigaction` instead of a union ([#4250](https://github.com/rust-lang/libc/pull/4250))
- Make `msqid_ds.__msg_cbytes` public ([#4301](https://github.com/rust-lang/libc/pull/4301))
- Unix: Make all `major`, `minor`, `makedev` into `const fn` ([#4208](https://github.com/rust-lang/libc/pull/4208))
### Deprecated
- Linux: Deprecate obsolete packet filter interfaces ([#4267](https://github.com/rust-lang/libc/pull/4267))
### Fixed
- Cygwin: Fix strerror_r ([#4308](https://github.com/rust-lang/libc/pull/4308))
- Cygwin: Fix usage of f! ([#4308](https://github.com/rust-lang/libc/pull/4308))
- Hermit: Make `stat::st_size` signed ([#4298](https://github.com/rust-lang/libc/pull/4298))
- Linux: Correct values for `SI_TIMER`, `SI_MESGQ`, `SI_ASYNCIO` ([#4292](https://github.com/rust-lang/libc/pull/4292))
- NuttX: Update `tm_zone` and `d_name` fields to use `c_char` type ([#4222](https://github.com/rust-lang/libc/pull/4222))
- Xous: Include the prelude to define `c_int` ([#4304](https://github.com/rust-lang/libc/pull/4304))
### Other
- Add labels to FIXMEs ([#4231](https://github.com/rust-lang/libc/pull/4231), [#4232](https://github.com/rust-lang/libc/pull/4232), [#4234](https://github.com/rust-lang/libc/pull/4234), [#4235](https://github.com/rust-lang/libc/pull/4235), [#4236](https://github.com/rust-lang/libc/pull/4236))
- CI: Fix "cannot find libc" error on Sparc64 ([#4317](https://github.com/rust-lang/libc/pull/4317))
- CI: Fix "cannot find libc" error on s390x ([#4317](https://github.com/rust-lang/libc/pull/4317))
- CI: Pass `--no-self-update` to `rustup update` ([#4306](https://github.com/rust-lang/libc/pull/4306))
- CI: Remove tests for the `i586-pc-windows-msvc` target ([#4311](https://github.com/rust-lang/libc/pull/4311))
- CI: Remove the `check_cfg` job ([#4322](https://github.com/rust-lang/libc/pull/4312))
- Change the range syntax that is giving `ctest` problems ([#4311](https://github.com/rust-lang/libc/pull/4311))
- Linux: Split out the stat struct for gnu/b32/mips ([#4276](https://github.com/rust-lang/libc/pull/4276))
### Removed
- NuttX: Remove `pthread_set_name_np` ([#4251](https://github.com/rust-lang/libc/pull/4251))
## [0.2.170](https://github.com/rust-lang/libc/compare/0.2.169...0.2.170) - 2025-02-23
### Added
- Android: Declare `setdomainname` and `getdomainname` <https://github.com/rust-lang/libc/pull/4212>
- FreeBSD: Add `evdev` structures <https://github.com/rust-lang/libc/pull/3756>
- FreeBSD: Add the new `st_filerev` field to `stat32` ([#4254](https://github.com/rust-lang/libc/pull/4254))
- Linux: Add `SI_*`` and `TRAP_*`` signal codes <https://github.com/rust-lang/libc/pull/4225>
- Linux: Add experimental configuration to enable 64-bit time in kernel APIs, set by `RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64`. <https://github.com/rust-lang/libc/pull/4148>
- Linux: Add recent socket timestamping flags <https://github.com/rust-lang/libc/pull/4273>
- Linux: Added new CANFD_FDF flag for the flags field of canfd_frame <https://github.com/rust-lang/libc/pull/4223>
- Musl: add CLONE_NEWTIME <https://github.com/rust-lang/libc/pull/4226>
- Solarish: add the posix_spawn family of functions <https://github.com/rust-lang/libc/pull/4259>
### Deprecated
- Linux: deprecate kernel modules syscalls <https://github.com/rust-lang/libc/pull/4228>
### Changed
- Emscripten: Assume version is at least 3.1.42 <https://github.com/rust-lang/libc/pull/4243>
### Fixed
- BSD: Correct the definition of `WEXITSTATUS` <https://github.com/rust-lang/libc/pull/4213>
- Hurd: Fix CMSG_DATA on 64bit systems ([#4240](https://github.com/rust-lang/libc/pull/424))
- NetBSD: fix `getmntinfo` ([#4265](https://github.com/rust-lang/libc/pull/4265)
- VxWorks: Fix the size of `time_t` <https://github.com/rust-lang/libc/pull/426>
### Other
- Add labels to FIXMEs <https://github.com/rust-lang/libc/pull/4230>, <https://github.com/rust-lang/libc/pull/4229>, <https://github.com/rust-lang/libc/pull/4237>
- CI: Bump FreeBSD CI to 13.4 and 14.2 <https://github.com/rust-lang/libc/pull/4260>
- Copy definitions from core::ffi and centralize them <https://github.com/rust-lang/libc/pull/4256>
- Define c_char at top-level and remove per-target c_char definitions <https://github.com/rust-lang/libc/pull/4202>
- Port style.rs to syn and add tests for the style checker <https://github.com/rust-lang/libc/pull/4220>
## [0.2.169](https://github.com/rust-lang/libc/compare/0.2.168...0.2.169) - 2024-12-18
### Added
- FreeBSD: add more socket TCP stack constants <https://github.com/rust-lang/libc/pull/4193>
- Fuchsia: add a `sockaddr_vm` definition <https://github.com/rust-lang/libc/pull/4194>
### Fixed
**Breaking**: [rust-lang/rust#132975](https://github.com/rust-lang/rust/pull/132975) corrected the signedness of `core::ffi::c_char` on various Tier 2 and Tier 3 platforms (mostly Arm and RISC-V) to match Clang. This release contains the corresponding changes to `libc`, including the following specific pull requests:
- ESP-IDF: Replace arch-conditional `c_char` with a reexport <https://github.com/rust-lang/libc/pull/4195>
- Fix `c_char` on various targets <https://github.com/rust-lang/libc/pull/4199>
- Mirror `c_char` configuration from `rust-lang/rust` <https://github.com/rust-lang/libc/pull/4198>
### Cleanup
- Do not re-export `c_void` in target-specific code <https://github.com/rust-lang/libc/pull/4200>
## [0.2.168](https://github.com/rust-lang/libc/compare/0.2.167...0.2.168) - 2024-12-09
### Added
- Linux: Add new process flags ([#4174](https://github.com/rust-lang/libc/pull/4174))
- Linux: Make `IFA_*` constants available on all Linux targets <https://github.com/rust-lang/libc/pull/4185>
- Linux: add `MAP_DROPPABLE` <https://github.com/rust-lang/libc/pull/4173>
- Solaris, Illumos: add `SIGRTMIN` and `SIGRTMAX` <https://github.com/rust-lang/libc/pull/4171>
- Unix, Linux: adding POSIX `memccpy` and `mempcpy` GNU extension <https://github.com/rust-lang/libc/pull/4186.
### Deprecated
- FreeBSD: Deprecate the CAP_UNUSED* and CAP_ALL* constants ([#4183](https://github.com/rust-lang/libc/pull/4183))
### Fixed
- Make the `Debug` implementation for unions opaque ([#4176](https://github.com/rust-lang/libc/pull/4176))
### Other
- Allow the `unpredictable_function_pointer_comparisons` lint where needed <https://github.com/rust-lang/libc/pull/4177>
- CI: Upload artifacts created by libc-test <https://github.com/rust-lang/libc/pull/4180>
- CI: Use workflow commands to group output by target <https://github.com/rust-lang/libc/pull/4179>
- CI: add caching <https://github.com/rust-lang/libc/pull/4183>
## [0.2.167](https://github.com/rust-lang/libc/compare/0.2.166...0.2.167) - 2024-11-28
### Added
- Solarish: add `st_fstype` to `stat` <https://github.com/rust-lang/libc/pull/4145>
- Trusty: Add `intptr_t` and `uintptr_t` ([#4161](https://github.com/rust-lang/libc/pull/4161))
### Fixed
- Fix the build with `rustc-dep-of-std` <https://github.com/rust-lang/libc/pull/4158>
- Wasi: Add back unsafe block for `clockid_t` static variables ([#4157](https://github.com/rust-lang/libc/pull/4157))
### Cleanup
- Create an internal prelude <https://github.com/rust-lang/libc/pull/4161>
- Fix `unused_qualifications`<https://github.com/rust-lang/libc/pull/4132>
### Other
- CI: Check various FreeBSD versions ([#4159](https://github.com/rust-lang/libc/pull/4159))
- CI: add a timeout for all jobs <https://github.com/rust-lang/libc/pull/4164>
- CI: verify MSRV for `wasm32-wasi` <https://github.com/rust-lang/libc/pull/4157>
- Migrate to the 2021 edition <https://github.com/rust-lang/libc/pull/4132>
### Removed
- Remove one unused import after the edition 2021 bump
## [0.2.166](https://github.com/rust-lang/libc/compare/0.2.165...0.2.166) - 2024-11-26
### Fixed
This release resolves two cases of unintentional breakage from the previous release:
- Revert removal of array size hacks [#4150](https://github.com/rust-lang/libc/pull/4150)
- Ensure `const extern` functions are always enabled [#4151](https://github.com/rust-lang/libc/pull/4151)
## [0.2.165](https://github.com/rust-lang/libc/compare/0.2.164...0.2.165) - 2024-11-25
### Added
- Android: add `mkostemp`, `mkostemps` <https://github.com/rust-lang/libc/pull/3601>
- Android: add a few API 30 calls <https://github.com/rust-lang/libc/pull/3604>
- Android: add missing syscall constants <https://github.com/rust-lang/libc/pull/3558>
- Apple: add `in6_ifreq` <https://github.com/rust-lang/libc/pull/3617>
- Apple: add missing `sysctl` net types <https://github.com/rust-lang/libc/pull/4022> (before release: remove `if_family_id` ([#4137](https://github.com/rust-lang/libc/pulls/4137)))
- Freebsd: add `kcmp` call support <https://github.com/rust-lang/libc/pull/3746>
- Hurd: add `MAP_32BIT` and `MAP_EXCL` <https://github.com/rust-lang/libc/pull/4127>
- Hurd: add `domainname` field to `utsname` ([#4089](https://github.com/rust-lang/libc/pulls/4089))
- Linux GNU: add `f_flags` to struct `statfs` for arm, mips, powerpc and x86 <https://github.com/rust-lang/libc/pull/3663>
- Linux GNU: add `malloc_stats` <https://github.com/rust-lang/libc/pull/3596>
- Linux: add ELF relocation-related structs <https://github.com/rust-lang/libc/pull/3583>
- Linux: add `ptp_*` structs <https://github.com/rust-lang/libc/pull/4113>
- Linux: add `ptp_clock_caps` <https://github.com/rust-lang/libc/pull/4128>
- Linux: add `ptp_pin_function` and most `PTP_` constants <https://github.com/rust-lang/libc/pull/4114>
- Linux: add missing AF_XDP structs & constants <https://github.com/rust-lang/libc/pull/3956>
- Linux: add missing netfilter consts ([#3734](https://github.com/rust-lang/libc/pulls/3734))
- Linux: add struct and constants for the `mount_setattr` syscall <https://github.com/rust-lang/libc/pull/4046>
- Linux: add wireless API <https://github.com/rust-lang/libc/pull/3441>
- Linux: expose the `len8_dlc` field of `can_frame` <https://github.com/rust-lang/libc/pull/3357>
- Musl: add `utmpx` API <https://github.com/rust-lang/libc/pull/3213>
- Musl: add missing syscall constants <https://github.com/rust-lang/libc/pull/4028>
- NetBSD: add `mcontext`-related data for RISCV64 <https://github.com/rust-lang/libc/pull/3468>
- Redox: add new `netinet` constants <https://github.com/rust-lang/libc/pull/3586>)
- Solarish: add `_POSIX_VDISABLE` ([#4103](https://github.com/rust-lang/libc/pulls/4103))
- Tests: Add a test that the `const extern fn` macro works <https://github.com/rust-lang/libc/pull/4134>
- Tests: Add test of primitive types against `std` <https://github.com/rust-lang/libc/pull/3616>
- Unix: Add `htonl`, `htons`, `ntohl`, `ntohs` <https://github.com/rust-lang/libc/pull/3669>
- Unix: add `aligned_alloc` <https://github.com/rust-lang/libc/pull/3843>
- Windows: add `aligned_realloc` <https://github.com/rust-lang/libc/pull/3592>
### Fixed
- **breaking** Hurd: fix `MAP_HASSEMAPHORE` name ([#4127](https://github.com/rust-lang/libc/pulls/4127))
- **breaking** ulibc Mips: fix `SA_*` mismatched types ([#3211](https://github.com/rust-lang/libc/pulls/3211))
- Aix: fix an enum FFI safety warning <https://github.com/rust-lang/libc/pull/3644>
- Haiku: fix some typos ([#3664](https://github.com/rust-lang/libc/pulls/3664))
- Tests: fix `Elf{32,64}_Relr`-related tests <https://github.com/rust-lang/libc/pull/3647>
- Tests: fix libc-tests for `loongarch64-linux-musl`
- Tests: fix some clippy warnings <https://github.com/rust-lang/libc/pull/3855>
- Tests: fix tests on `riscv64gc-unknown-freebsd` <https://github.com/rust-lang/libc/pull/4129>
### Deprecated
- Apple: deprecate `iconv_open` <https://github.com/rust-lang/libc/commit/25e022a22eca3634166ef472b748c297e60fcf7f>
- Apple: deprecate `mach_task_self` <https://github.com/rust-lang/libc/pull/4095>
- Apple: update `mach` deprecation notices for things that were removed in `main` <https://github.com/rust-lang/libc/pull/4097>
### Cleanup
- Adjust the `f!` macro to be more flexible <https://github.com/rust-lang/libc/pull/4107>
- Aix: remove duplicate constants <https://github.com/rust-lang/libc/pull/3643>
- CI: make scripts more uniform <https://github.com/rust-lang/libc/pull/4042>
- Drop the `libc_align` conditional <https://github.com/rust-lang/libc/commit/b5b553d0ee7de0d4781432a9a9a0a6445dd7f34f>
- Drop the `libc_cfg_target_vendor` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_const_size_of` conditional <https://github.com/rust-lang/libc/commit/5a43dd2754366f99b3a83881b30246ce0e51833c>
- Drop the `libc_core_cvoid` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_int128` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_non_exhaustive` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_packedN` conditional <https://github.com/rust-lang/libc/pull/4060>
- Drop the `libc_priv_mod_use` conditional <https://github.com/rust-lang/libc/commit/19c59376d11b015009fb9b04f233a30a1bf50a91>
- Drop the `libc_union` conditional <https://github.com/rust-lang/libc/commit/b9e4d8012f612dfe24147da3e69522763f92b6e3>
- Drop the `long_array` conditional <https://github.com/rust-lang/libc/pull/4096>
- Drop the `ptr_addr_of` conditional <https://github.com/rust-lang/libc/pull/4065>
- Drop warnings about deprecated cargo features <https://github.com/rust-lang/libc/pull/4060>
- Eliminate uses of `struct_formatter` <https://github.com/rust-lang/libc/pull/4074>
- Fix a few other array size hacks <https://github.com/rust-lang/libc/commit/d63be8b69b0736753213f5d933767866a5801ee7>
- Glibc: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: remove redundant definitions ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of `siginfo_t` ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of statfs and statfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify definitions of statvfs and statvfs64 ([#3261](https://github.com/rust-lang/libc/pulls/3261))
- Musl: unify statx definitions ([#3978](https://github.com/rust-lang/libc/pulls/3978))
- Remove array size hacks for Rust < 1.47 <https://github.com/rust-lang/libc/commit/27ee6fe02ca0848b2af3cd747536264e4c7b697d>
- Remove repetitive words <https://github.com/rust-lang/libc/commit/77de375891285e18a81616f7dceda6d52732eed6>
- Use #[derive] for Copy/Clone in s! and friends <https://github.com/rust-lang/libc/pull/4038>
- Use some tricks to format macro bodies <https://github.com/rust-lang/libc/pull/4107>
### Other
- Apply formatting to macro bodies <https://github.com/rust-lang/libc/pull/4107>
- Bump libc-test to Rust 2021 Edition <https://github.com/rust-lang/libc/pull/3905>
- CI: Add a check that semver files don't contain duplicate entries <https://github.com/rust-lang/libc/pull/4087>
- CI: Add `fanotify_event_info_fid` to FAM-exempt types <https://github.com/rust-lang/libc/pull/4038>
- CI: Allow rustfmt to organize imports ([#4136](https://github.com/rust-lang/libc/pulls/4136))
- CI: Always run rustfmt <https://github.com/rust-lang/libc/pull/4120>
- CI: Change 32-bit Docker images to use EOL repos <https://github.com/rust-lang/libc/pull/4120>
- CI: Change 64-bit Docker images to ubuntu:24.10 <https://github.com/rust-lang/libc/pull/4120>
- CI: Disable the check for >1 s! invocation <https://github.com/rust-lang/libc/pull/4107>
- CI: Ensure build channels get run even if FILTER is unset <https://github.com/rust-lang/libc/pull/4125>
- CI: Ensure there is a fallback for no_std <https://github.com/rust-lang/libc/pull/4125>
- CI: Fix cases where unset variables cause errors <https://github.com/rust-lang/libc/pull/4108>
- CI: Naming adjustments and cleanup <https://github.com/rust-lang/libc/pull/4124>
- CI: Only invoke rustup if running in CI <https://github.com/rust-lang/libc/pull/4107>
- CI: Remove the logic to handle old rust versions <https://github.com/rust-lang/libc/pull/4068>
- CI: Set -u (error on unset) in all script files <https://github.com/rust-lang/libc/pull/4108>
- CI: add support for `loongarch64-unknown-linux-musl` <https://github.com/rust-lang/libc/pull/4092>
- CI: make `aarch64-apple-darwin` not a nightly-only target <https://github.com/rust-lang/libc/pull/4068>
- CI: run shellcheck on all scripts <https://github.com/rust-lang/libc/pull/4042>
- CI: update musl headers to Linux 6.6 <https://github.com/rust-lang/libc/pull/3921>
- CI: use qemu-sparc64 to run sparc64 tests <https://github.com/rust-lang/libc/pull/4133>
- Drop the `libc_const_extern_fn` conditional <https://github.com/rust-lang/libc/commit/674cc1f47f605038ef1aa2cce8e8bc9dac128276>
- Drop the `libc_underscore_const_names` conditional <https://github.com/rust-lang/libc/commit/f0febd5e2e50b38e05259d3afad3c9783711bcf0>
- Explicitly set the edition to 2015 <https://github.com/rust-lang/libc/pull/4058>
- Introduce a `git-blame-ignore-revs` file <https://github.com/rust-lang/libc/pull/4107>
- Tests: Ignore fields as required on Ubuntu 24.10 <https://github.com/rust-lang/libc/pull/4120>
- Tests: skip `ATF_*` constants for OpenBSD <https://github.com/rust-lang/libc/pull/4088>
- Triagebot: Add an autolabel for CI <https://github.com/rust-lang/libc/pull/4052>
## [0.2.164](https://github.com/rust-lang/libc/compare/0.2.163...0.2.164) - 2024-11-16
### MSRV
This release increases the MSRV of `libc` to 1.63.
### Other
- CI: remove tests with rust < 1.63 <https://github.com/rust-lang/libc/pull/4051>
- MSRV: document the MSRV of the stable channel to be 1.63 <https://github.com/rust-lang/libc/pull/4040>
- MacOS: move ifconf to s_no_extra_traits <https://github.com/rust-lang/libc/pull/4051>
## [0.2.163](https://github.com/rust-lang/libc/compare/0.2.162...0.2.163) - 2024-11-16
### Added
- Aix: add more `dlopen` flags <https://github.com/rust-lang/libc/pull/4044>
- Android: add group calls <https://github.com/rust-lang/libc/pull/3499>
- FreeBSD: add `TCP_FUNCTION_BLK` and `TCP_FUNCTION_ALIAS` <https://github.com/rust-lang/libc/pull/4047>
- Linux: add `confstr` <https://github.com/rust-lang/libc/pull/3612>
- Solarish: add `aio` <https://github.com/rust-lang/libc/pull/4033>
- Solarish: add `arc4random*` <https://github.com/rust-lang/libc/pull/3944>
### Changed
- Emscripten: upgrade emsdk to 3.1.68 <https://github.com/rust-lang/libc/pull/3962>
- Hurd: use more standard types <https://github.com/rust-lang/libc/pull/3733>
- Hurd: use the standard `ssize_t = isize` <https://github.com/rust-lang/libc/pull/4029>
- Solaris: fix `confstr` and `ucontext_t` <https://github.com/rust-lang/libc/pull/4035>
### Other
- CI: add Solaris <https://github.com/rust-lang/libc/pull/4035>
- CI: add `i686-unknown-freebsd` <https://github.com/rust-lang/libc/pull/3997>
- CI: ensure that calls to `sort` do not depend on locale <https://github.com/rust-lang/libc/pull/4026>
- Specify `rust-version` in `Cargo.toml` <https://github.com/rust-lang/libc/pull/4041>
## [0.2.162](https://github.com/rust-lang/libc/compare/0.2.161...0.2.162) - 2024-11-07
### Added
- Android: fix the alignment of `uc_mcontext` on arm64 <https://github.com/rust-lang/libc/pull/3894>
- Apple: add `host_cpu_load_info` <https://github.com/rust-lang/libc/pull/3916>
- ESP-IDF: add a time flag <https://github.com/rust-lang/libc/pull/3993>
- FreeBSD: add the `CLOSE_RANGE_CLOEXEC` flag<https://github.com/rust-lang/libc/pull/3996>
- FreeBSD: fix test errors regarding `__gregset_t` <https://github.com/rust-lang/libc/pull/3995>
- FreeBSD: fix tests on x86 FreeBSD 15 <https://github.com/rust-lang/libc/pull/3948>
- FreeBSD: make `ucontext_t` and `mcontext_t` available on all architectures <https://github.com/rust-lang/libc/pull/3848>
- Haiku: add `getentropy` <https://github.com/rust-lang/libc/pull/3991>
- Illumos: add `syncfs` <https://github.com/rust-lang/libc/pull/3990>
- Illumos: add some recently-added constants <https://github.com/rust-lang/libc/pull/3999>
- Linux: add `ioctl` flags <https://github.com/rust-lang/libc/pull/3960>
- Linux: add epoll busy polling parameters <https://github.com/rust-lang/libc/pull/3922>
- NuttX: add `pthread_[get/set]name_np` <https://github.com/rust-lang/libc/pull/4003>
- RTEMS: add `arc4random_buf` <https://github.com/rust-lang/libc/pull/3989>
- Trusty OS: add initial support <https://github.com/rust-lang/libc/pull/3942>
- WASIp2: expand socket support <https://github.com/rust-lang/libc/pull/3981>
### Fixed
- Emscripten: don't pass `-lc` <https://github.com/rust-lang/libc/pull/4002>
- Hurd: change `st_fsid` field to `st_dev` <https://github.com/rust-lang/libc/pull/3785>
- Hurd: fix the definition of `utsname` <https://github.com/rust-lang/libc/pull/3992>
- Illumos/Solaris: fix `FNM_CASEFOLD` definition <https://github.com/rust-lang/libc/pull/4004>
- Solaris: fix all tests <https://github.com/rust-lang/libc/pull/3864>
### Other
- CI: Add loongarch64 <https://github.com/rust-lang/libc/pull/4000>
- CI: Check that semver files are sorted <https://github.com/rust-lang/libc/pull/4018>
- CI: Re-enable the FreeBSD 15 job <https://github.com/rust-lang/libc/pull/3988>
- Clean up imports and `extern crate` usage <https://github.com/rust-lang/libc/pull/3897>
- Convert `mode_t` constants to octal <https://github.com/rust-lang/libc/pull/3634>
- Remove the `wasm32-wasi` target that has been deleted upstream <https://github.com/rust-lang/libc/pull/4013>
## [0.2.161](https://github.com/rust-lang/libc/compare/0.2.160...0.2.161) - 2024-10-17
### Fixed

View File

@@ -1,14 +1,45 @@
# Contributing to `libc`
Welcome! If you are reading this document, it means you are interested in contributing
to the `libc` crate.
Welcome! If you are reading this document, it means you are interested in
contributing to the `libc` crate.
## v0.2 changes
## v1.0 Roadmap
If you want to add your changes to v0.2, please submit them to the `libc-0.2` branch.
If you want to add any breaking changes, it should be submitted to the main branch,
which has changes for v0.3.
We will support and make a new release for v0.2 until we make the first release of v0.3.
`libc` has two active branches: `main` and `libc-0.2`. `main` is for active
development of the upcoming v1.0 release, and should be the target of all pull
requests. `libc-0.2` is for updates to the currently released version.
If a pull request to `main` is a good candidate for inclusion in an `0.2.x`
release, include `@rustbot label stable-nominated` in a comment to propose this.
Good candidates will usually meet the following:
1. The included changes are non-breaking.
2. The change applies cleanly to both branches.
3. There is a usecase that justifies inclusion in a stable release (all
additions should always have a usecase, hopefully).
Once a `stable-nominated` PR targeting `main` has merged, it can be cherry
picked to the `libc-0.2` branch. A maintainer will likely do these cherry picks
in a batch.
Alternatively, you can start this process yourself by creating a new branch
based on `libc-0.2` and running `git cherry-pick -xe commit-sha-on-main`
(`git
cherry-pick -xe start-sha^..end-sha` if a range of commits is needed).
`git` will automatically add the "cherry picked from commit" note, but try to
add a backport note so the original PR gets crosslinked:
```
# ... original commit message ...
(backport <https://github.com/rust-lang/libc/pull/1234>) # add manually
(cherry picked from commit 104b6a4ae31c726814c36318dc718470cc96e167) # added by git
```
Once the cherry-pick is complete, open a PR targeting `libc-0.2`.
See the [tracking issue](https://github.com/rust-lang/libc/issues/3248) for
details.
## Adding an API
@@ -16,14 +47,14 @@ Want to use an API which currently isn't bound in `libc`? It's quite easy to add
one!
The internal structure of this crate is designed to minimize the number of
`#[cfg]` attributes in order to easily be able to add new items which apply
to all platforms in the future. As a result, the crate is organized
hierarchically based on platform. Each module has a number of `#[cfg]`'d
children, but only one is ever actually compiled. Each module then reexports all
the contents of its children.
`#[cfg]` attributes in order to easily be able to add new items which apply to
all platforms in the future. As a result, the crate is organized hierarchically
based on platform. Each module has a number of `#[cfg]`'d children, but only one
is ever actually compiled. Each module then reexports all the contents of its
children.
This means that for each platform that libc supports, the path from a
leaf module to the root will contain all bindings for the platform in question.
This means that for each platform that libc supports, the path from a leaf
module to the root will contain all bindings for the platform in question.
Consequently, this indicates where an API should be added! Adding an API at a
particular level in the hierarchy means that it is supported on all the child
platforms of that level. For example, when adding a Unix API it should be added
@@ -51,50 +82,45 @@ With that in mind, the steps for adding a new API are:
5. Wait for a merge!
<sup>1</sup>: Note that this list has nothing to do with any Unix or Posix
standard, it's just a list shared between all OSs that declare `#[cfg(unix)]`.
standard, it's just a list shared among all OSs that declare `#[cfg(unix)]`.
## Test before you commit
We have two automated tests running on [GitHub Actions](https://github.com/rust-lang/libc/actions):
We have two automated tests running on
[GitHub Actions](https://github.com/rust-lang/libc/actions):
1. [`libc-test`](https://github.com/gnzlbg/ctest)
- `cd libc-test && cargo test`
- Use the `skip_*()` functions in `build.rs` if you really need a workaround.
2. Style checker
- [`sh ci/style.sh`](https://github.com/rust-lang/libc/blob/main/ci/style.sh)
- [`./ci/style.sh`](https://github.com/rust-lang/libc/blob/main/ci/style.sh)
## Breaking change policy
Sometimes an upstream adds a breaking change to their API e.g. removing outdated items,
changing the type signature, etc. And we probably should follow that change to build the
`libc` crate successfully. It's annoying to do the equivalent of semver-major versioning
for each such change. Instead, we mark the item as deprecated and do the actual change
after a certain period. The steps are:
Sometimes an upstream adds a breaking change to their API e.g. removing outdated
items, changing the type signature, etc. And we probably should follow that
change to build the `libc` crate successfully. It's annoying to do the
equivalent of semver-major versioning for each such change. Instead, we mark the
item as deprecated and do the actual change after a certain period. The steps
are:
1. Add `#[deprecated(since = "", note="")]` attribute to the item.
- The `since` field should have a next version of `libc`
(e.g., if the current version is `0.2.1`, it should be `0.2.2`).
- The `note` field should have a reason to deprecate and a tracking issue to call for comments
(e.g., "We consider removing this as the upstream removed it.
If you're using it, please comment on #XXX").
- The `since` field should have a next version of `libc` (e.g., if the current
version is `0.2.1`, it should be `0.2.2`).
- The `note` field should have a reason to deprecate and a tracking issue to
call for comments (e.g., "We consider removing this as the upstream removed
it. If you're using it, please comment on #XXX").
2. If we don't see any concerns for a while, do the change actually.
## Supported target policy
When Rust removes a support for a target, the libc crate also may remove the support anytime.
When Rust removes a support for a target, the libc crate also may remove the
support at any time.
## Releasing your change to crates.io
Now that you've done the amazing job of landing your new API or your new
platform in this crate, the next step is to get that sweet, sweet usage from
crates.io! The only next step is to bump the version of libc and then publish
it. If you'd like to get a release out ASAP you can follow these steps:
This repository uses [release-plz] to handle releases. Once your pull request
has been merged, a maintainer just needs to verify the generated changelog, then
merge the bot's release PR. This will automatically publish to crates.io!
1. Increment the patch version number in `Cargo.toml` and `libc-test/Cargo.toml`.
1. Send a PR to this repository. It should [look like this][example-pr], but it'd
also be nice to fill out the description with a small rationale for the
release (any rationale is ok though!).
1. Once merged, the release will be tagged and published by one of the libc crate
maintainers.
[example-pr]: https://github.com/rust-lang/libc/pull/2120
[release-plz]: https://github.com/MarcoIeni/release-plz

16
third_party/rust/libc/Cargo.lock generated vendored Normal file
View File

@@ -0,0 +1,16 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
[[package]]
name = "libc"
version = "0.2.171"
dependencies = [
"rustc-std-workspace-core",
]
[[package]]
name = "rustc-std-workspace-core"
version = "1.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa9c45b374136f52f2d6311062c7146bff20fec063c3f5d46a410bd937746955"

View File

@@ -10,8 +10,10 @@
# See Cargo.toml.orig for the original contents.
[package]
edition = "2021"
rust-version = "1.63"
name = "libc"
version = "0.2.161"
version = "0.2.171"
authors = ["The Rust Project Developers"]
build = "build.rs"
exclude = [
@@ -20,6 +22,7 @@ exclude = [
"/.cirrus.yml",
"/triagebot.toml",
]
autolib = false
autobins = false
autoexamples = false
autotests = false
@@ -48,10 +51,7 @@ repository = "https://github.com/rust-lang/libc"
[package.metadata.docs.rs]
cargo-args = ["-Zbuild-std=core"]
default-target = "x86_64-unknown-linux-gnu"
features = [
"const-extern-fn",
"extra_traits",
]
features = ["extra_traits"]
targets = [
"aarch64-apple-darwin",
"aarch64-apple-ios",
@@ -80,7 +80,6 @@ targets = [
"armv7-wrs-vxworks-eabihf",
"armv7r-none-eabi",
"armv7r-none-eabihf",
"i586-pc-windows-msvc",
"i586-unknown-linux-gnu",
"i586-unknown-linux-musl",
"i686-linux-android",
@@ -139,7 +138,6 @@ targets = [
"thumbv7neon-unknown-linux-gnueabihf",
"wasm32-unknown-emscripten",
"wasm32-unknown-unknown",
"wasm32-wasi",
"x86_64-apple-darwin",
"x86_64-apple-ios",
"x86_64-fortanix-unknown-sgx",
@@ -163,18 +161,6 @@ targets = [
"x86_64-wrs-vxworks",
]
[lib]
name = "libc"
path = "src/lib.rs"
[[test]]
name = "const_fn"
path = "tests/const_fn.rs"
[dependencies.rustc-std-workspace-core]
version = "1.0.0"
optional = true
[features]
align = []
const-extern-fn = []
@@ -186,3 +172,15 @@ rustc-dep-of-std = [
]
std = []
use_std = ["std"]
[lib]
name = "libc"
path = "src/lib.rs"
[[test]]
name = "const_fn"
path = "tests/const_fn.rs"
[dependencies.rustc-std-workspace-core]
version = "1.0.0"
optional = true

View File

@@ -11,8 +11,8 @@ This crate exports all underlying platform types, functions, and constants under
the crate root, so all items are accessible as `libc::foo`. The types and values
of all the exported APIs match the platform that libc is compiled for.
Windows API bindings are not included in this crate. If you are looking for WinAPI
bindings, consider using crates like [windows-sys].
Windows API bindings are not included in this crate. If you are looking for
WinAPI bindings, consider using crates like [windows-sys].
More detailed information about the design of this library can be found in its
[associated RFC][rfc].
@@ -20,14 +20,17 @@ More detailed information about the design of this library can be found in its
[rfc]: https://github.com/rust-lang/rfcs/blob/HEAD/text/1291-promote-libc.md
[windows-sys]: https://docs.rs/windows-sys
## v0.3 Roadmap
## v1.0 Roadmap
The main branch is now for v0.3 which has some breaking changes.
Currently, `libc` has two active branches: `main` for the upcoming v1.0 release,
and `libc-0.2` for the currently published version. By default all pull requests
should target `main`; once reviewed, they can be cherry picked to the `libc-0.2`
branch if needed.
For v0.2, please submit PRs to the `libc-0.2` branch instead.
We will stop making new v0.2 releases once we release v0.3 on crates.io.
We will stop making new v0.2 releases once v1.0 is released.
See the [tracking issue](https://github.com/rust-lang/libc/issues/3248) for details.
See the section in [CONTRIBUTING.md](CONTRIBUTING.md#v10-roadmap) for more
details.
## Usage
@@ -40,46 +43,38 @@ libc = "0.2"
## Features
* `std`: by default `libc` links to the standard library. Disable this
feature to remove this dependency and be able to use `libc` in `#![no_std]`
crates.
* `std`: by default `libc` links to the standard library. Disable this feature
to remove this dependency and be able to use `libc` in `#![no_std]` crates.
* `extra_traits`: all `struct`s implemented in `libc` are `Copy` and `Clone`.
This feature derives `Debug`, `Eq`, `Hash`, and `PartialEq`.
* `const-extern-fn`: Changes some `extern fn`s into `const extern fn`s.
If you use Rust >= 1.62, this feature is implicitly enabled.
Otherwise it requires a nightly rustc.
The following features are deprecated:
* **deprecated**: `use_std` is deprecated, and is equivalent to `std`.
* `use_std`: this is equivalent to `std`
* `const-extern-fn`: this is now enabled by default
* `align`: this is now enabled by default
## Rust version support
The minimum supported Rust toolchain version is currently **Rust 1.13.0**.
(libc does not currently have any policy regarding changes to the minimum
supported Rust version; such policy is a work in progress.) APIs requiring
newer Rust features are only available on newer Rust toolchains:
The minimum supported Rust toolchain version is currently **Rust 1.63**.
| Feature | Version |
|----------------------|---------|
| `union` | 1.19.0 |
| `const mem::size_of` | 1.24.0 |
| `repr(align)` | 1.25.0 |
| `extra_traits` | 1.25.0 |
| `core::ffi::c_void` | 1.30.0 |
| `repr(packed(N))` | 1.33.0 |
| `cfg(target_vendor)` | 1.33.0 |
| `const-extern-fn` | 1.62.0 |
Increases to the MSRV are allowed to change without a major (i.e. semver-
breaking) release in order to avoid a ripple effect in the ecosystem. A policy
for when this may change is a work in progress.
`libc` may continue to compile with Rust versions older than the current MSRV
but this is not guaranteed.
## Platform support
You can see the platform(target)-specific docs on [docs.rs], select a platform you want to see.
You can see the platform(target)-specific docs on [docs.rs], select a platform
you want to see.
See
[`ci/build.sh`](https://github.com/rust-lang/libc/blob/HEAD/ci/build.sh)
for the platforms on which `libc` is guaranteed to build for each Rust
toolchain. The test-matrix at [GitHub Actions] and [Cirrus CI] show the
platforms in which `libc` tests are run.
See [`ci/verify-build.sh`](https://github.com/rust-lang/libc/blob/HEAD/ci/verify-build.sh) for
the platforms on which `libc` is guaranteed to build for each Rust toolchain.
The test-matrix at [GitHub Actions] and [Cirrus CI] show the platforms in which
`libc` tests are run.
<div class="platform_docs"></div>
@@ -97,13 +92,13 @@ at your option.
## Contributing
We welcome all people who want to contribute. Please see the [contributing
instructions] for more information.
We welcome all people who want to contribute. Please see the
[contributing instructions] for more information.
[contributing instructions]: https://github.com/rust-lang/libc/blob/HEAD/CONTRIBUTING.md
Contributions in any form (issues, pull requests, etc.) to this project
must adhere to Rust's [Code of Conduct].
Contributions in any form (issues, pull requests, etc.) to this project must
adhere to Rust's [Code of Conduct].
[Code of Conduct]: https://www.rust-lang.org/policies/code-of-conduct

View File

@@ -1,36 +1,25 @@
use std::env;
use std::process::{Command, Output};
use std::str;
use std::{env, str};
// List of cfgs this build script is allowed to set. The list is needed to support check-cfg, as we
// need to know all the possible cfgs that this script will set. If you need to set another cfg
// make sure to add it to this list as well.
const ALLOWED_CFGS: &'static [&'static str] = &[
"emscripten_new_stat_abi",
"espidf_time64",
"emscripten_old_stat_abi",
"espidf_time32",
"freebsd10",
"freebsd11",
"freebsd12",
"freebsd13",
"freebsd14",
"freebsd15",
"libc_align",
"libc_cfg_target_vendor",
// FIXME(ctest): this config shouldn't be needed but ctest can't parse `const extern fn`
"libc_const_extern_fn",
"libc_const_extern_fn_unstable",
"libc_const_size_of",
"libc_core_cvoid",
"libc_deny_warnings",
"libc_int128",
"libc_long_array",
"libc_non_exhaustive",
"libc_packedN",
"libc_priv_mod_use",
"libc_ptr_addr_of",
"libc_thread_local",
"libc_underscore_const_names",
"libc_union",
"libc_ctest",
// Corresponds to `__USE_TIME_BITS64` in UAPI
"linux_time_bits64",
];
// Extra values to allow for check-cfg.
@@ -38,7 +27,7 @@ const CHECK_CFG_EXTRA: &'static [(&'static str, &'static [&'static str])] = &[
(
"target_os",
&[
"switch", "aix", "ohos", "hurd", "rtems", "visionos", "nuttx",
"switch", "aix", "ohos", "hurd", "rtems", "visionos", "nuttx", "cygwin",
],
),
("target_env", &["illumos", "wasi", "aix", "ohos"]),
@@ -52,32 +41,29 @@ fn main() {
// Avoid unnecessary re-building.
println!("cargo:rerun-if-changed=build.rs");
let (rustc_minor_ver, is_nightly) = rustc_minor_nightly();
let (rustc_minor_ver, _is_nightly) = rustc_minor_nightly();
let rustc_dep_of_std = env::var("CARGO_FEATURE_RUSTC_DEP_OF_STD").is_ok();
let align_cargo_feature = env::var("CARGO_FEATURE_ALIGN").is_ok();
let const_extern_fn_cargo_feature = env::var("CARGO_FEATURE_CONST_EXTERN_FN").is_ok();
let libc_ci = env::var("LIBC_CI").is_ok();
let libc_check_cfg = env::var("LIBC_CHECK_CFG").is_ok() || rustc_minor_ver >= 80;
if env::var("CARGO_FEATURE_USE_STD").is_ok() {
println!(
"cargo:warning=\"libc's use_std cargo feature is deprecated since libc 0.2.55; \
please consider using the `std` cargo feature instead\""
);
}
// The ABI of libc used by std is backward compatible with FreeBSD 12.
// The ABI of libc from crates.io is backward compatible with FreeBSD 11.
//
// On CI, we detect the actual FreeBSD version and match its ABI exactly,
// running tests to ensure that the ABI is correct.
let which_freebsd = if libc_ci {
println!("cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_FREEBSD_VERSION");
// Allow overriding the default version for testing
let which_freebsd = if let Ok(version) = env::var("RUST_LIBC_UNSTABLE_FREEBSD_VERSION") {
let vers = version.parse().unwrap();
println!("cargo:warning=setting FreeBSD version to {vers}");
vers
} else if libc_ci {
which_freebsd().unwrap_or(11)
} else if rustc_dep_of_std {
12
} else {
11
};
match which_freebsd {
x if x < 10 => panic!("FreeBSD older than 10 is not supported"),
10 => set_cfg("freebsd10"),
@@ -89,9 +75,15 @@ fn main() {
}
match emcc_version_code() {
Some(v) if (v >= 30142) => set_cfg("emscripten_new_stat_abi"),
// Non-Emscripten or version < 3.1.42.
Some(_) | None => (),
Some(v) if (v < 30142) => set_cfg("emscripten_old_stat_abi"),
// Non-Emscripten or version >= 3.1.42.
_ => (),
}
let linux_time_bits64 = env::var("RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64").is_ok();
println!("cargo:rerun-if-env-changed=RUST_LIBC_UNSTABLE_LINUX_TIME_BITS64");
if linux_time_bits64 {
set_cfg("linux_time_bits64");
}
// On CI: deny all warnings
@@ -99,88 +91,17 @@ fn main() {
set_cfg("libc_deny_warnings");
}
// Rust >= 1.15 supports private module use:
if rustc_minor_ver >= 15 || rustc_dep_of_std {
set_cfg("libc_priv_mod_use");
}
// Rust >= 1.19 supports unions:
if rustc_minor_ver >= 19 || rustc_dep_of_std {
set_cfg("libc_union");
}
// Rust >= 1.24 supports const mem::size_of:
if rustc_minor_ver >= 24 || rustc_dep_of_std {
set_cfg("libc_const_size_of");
}
// Rust >= 1.25 supports repr(align):
if rustc_minor_ver >= 25 || rustc_dep_of_std || align_cargo_feature {
set_cfg("libc_align");
}
// Rust >= 1.26 supports i128 and u128:
if rustc_minor_ver >= 26 || rustc_dep_of_std {
set_cfg("libc_int128");
}
// Rust >= 1.30 supports `core::ffi::c_void`, so libc can just re-export it.
// Otherwise, it defines an incompatible type to retaining
// backwards-compatibility.
if rustc_minor_ver >= 30 || rustc_dep_of_std {
set_cfg("libc_core_cvoid");
}
// Rust >= 1.33 supports repr(packed(N)) and cfg(target_vendor).
if rustc_minor_ver >= 33 || rustc_dep_of_std {
set_cfg("libc_packedN");
set_cfg("libc_cfg_target_vendor");
}
// Rust >= 1.40 supports #[non_exhaustive].
if rustc_minor_ver >= 40 || rustc_dep_of_std {
set_cfg("libc_non_exhaustive");
}
// Rust >= 1.47 supports long array:
if rustc_minor_ver >= 47 || rustc_dep_of_std {
set_cfg("libc_long_array");
}
if rustc_minor_ver >= 51 || rustc_dep_of_std {
set_cfg("libc_ptr_addr_of");
}
// Rust >= 1.37.0 allows underscores as anonymous constant names.
if rustc_minor_ver >= 37 || rustc_dep_of_std {
set_cfg("libc_underscore_const_names");
}
// #[thread_local] is currently unstable
if rustc_dep_of_std {
set_cfg("libc_thread_local");
}
// Rust >= 1.62.0 allows to use `const_extern_fn` for "Rust" and "C".
if rustc_minor_ver >= 62 {
// Set unconditionally when ctest is not being invoked.
set_cfg("libc_const_extern_fn");
} else {
// Rust < 1.62.0 requires a crate feature and feature gate.
if const_extern_fn_cargo_feature {
if !is_nightly || rustc_minor_ver < 40 {
panic!("const-extern-fn requires a nightly compiler >= 1.40");
}
set_cfg("libc_const_extern_fn_unstable");
set_cfg("libc_const_extern_fn");
}
}
// check-cfg is a nightly cargo/rustc feature to warn when unknown cfgs are used across the
// codebase. libc can configure it if the appropriate environment variable is passed. Since
// rust-lang/rust enforces it, this is useful when using a custom libc fork there.
//
// https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#check-cfg
if libc_check_cfg {
// Since Rust 1.80, configuration that isn't recognized by default needs to be provided to
// avoid warnings.
if rustc_minor_ver >= 80 {
for cfg in ALLOWED_CFGS {
if rustc_minor_ver >= 75 {
println!("cargo:rustc-check-cfg=cfg({})", cfg);
@@ -220,7 +141,7 @@ fn rustc_version_cmd(is_clippy_driver: bool) -> Output {
cmd.arg("--version");
let output = cmd.output().ok().expect("Failed to get rustc version");
let output = cmd.output().expect("Failed to get rustc version");
if !output.status.success() {
panic!(
@@ -275,20 +196,12 @@ fn rustc_minor_nightly() -> (u32, bool) {
}
fn which_freebsd() -> Option<i32> {
let output = std::process::Command::new("freebsd-version").output().ok();
if output.is_none() {
return None;
}
let output = output.unwrap();
let output = Command::new("freebsd-version").output().ok()?;
if !output.status.success() {
return None;
}
let stdout = String::from_utf8(output.stdout).ok();
if stdout.is_none() {
return None;
}
let stdout = stdout.unwrap();
let stdout = String::from_utf8(output.stdout).ok()?;
match &stdout {
s if s.starts_with("10") => Some(10),
@@ -302,27 +215,16 @@ fn which_freebsd() -> Option<i32> {
}
fn emcc_version_code() -> Option<u64> {
let output = std::process::Command::new("emcc")
.arg("-dumpversion")
.output()
.ok();
if output.is_none() {
return None;
}
let output = output.unwrap();
let output = Command::new("emcc").arg("-dumpversion").output().ok()?;
if !output.status.success() {
return None;
}
let stdout = String::from_utf8(output.stdout).ok();
if stdout.is_none() {
return None;
}
let version = stdout.unwrap();
let version = String::from_utf8(output.stdout).ok()?;
// Some Emscripten versions come with `-git` attached, so split the
// version string also on the `-` char.
let mut pieces = version.trim().split(|c| c == '.' || c == '-');
let mut pieces = version.trim().split(['.', '-']);
let major = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0);
let minor = pieces.next().and_then(|x| x.parse().ok()).unwrap_or(0);

View File

@@ -1 +1,4 @@
edition = "2021"
error_on_line_overflow = true
group_imports = "StdExternalCrate"
imports_granularity = "Module"

View File

@@ -1,99 +0,0 @@
//! This module contains type aliases for C's fixed-width integer types .
//!
//! These aliases are deprecated: use the Rust types instead.
#[deprecated(since = "0.2.55", note = "Use i8 instead.")]
pub type int8_t = i8;
#[deprecated(since = "0.2.55", note = "Use i16 instead.")]
pub type int16_t = i16;
#[deprecated(since = "0.2.55", note = "Use i32 instead.")]
pub type int32_t = i32;
#[deprecated(since = "0.2.55", note = "Use i64 instead.")]
pub type int64_t = i64;
#[deprecated(since = "0.2.55", note = "Use u8 instead.")]
pub type uint8_t = u8;
#[deprecated(since = "0.2.55", note = "Use u16 instead.")]
pub type uint16_t = u16;
#[deprecated(since = "0.2.55", note = "Use u32 instead.")]
pub type uint32_t = u32;
#[deprecated(since = "0.2.55", note = "Use u64 instead.")]
pub type uint64_t = u64;
cfg_if! {
if #[cfg(all(libc_int128, target_arch = "aarch64", not(target_os = "windows")))] {
// This introduces partial support for FFI with __int128 and
// equivalent types on platforms where Rust's definition is validated
// to match the standard C ABI of that platform.
//
// Rust does not guarantee u128/i128 are sound for FFI, and its
// definitions are in fact known to be incompatible. [0]
//
// However these problems aren't fundamental, and are just platform
// inconsistencies. Specifically at the time of this writing:
//
// * For x64 SysV ABIs (everything but Windows), the types are underaligned.
// * For all Windows ABIs, Microsoft doesn't actually officially define __int128,
// and as a result different implementations don't actually agree on its ABI.
//
// But on the other major aarch64 platforms (android, linux, ios, macos) we have
// validated that rustc has the right ABI for these types. This is important because
// aarch64 uses these types in some fundamental OS types like user_fpsimd_struct,
// which represents saved simd registers.
//
// Any API which uses these types will need to `#[ignore(improper_ctypes)]`
// until the upstream rust issue is resolved, but this at least lets us make
// progress on platforms where this type is important.
//
// The list of supported architectures and OSes is intentionally very restricted,
// as careful work needs to be done to verify that a particular platform
// has a conformant ABI.
//
// [0]: https://github.com/rust-lang/rust/issues/54341
/// C `__int128` (a GCC extension that's part of many ABIs)
pub type __int128 = i128;
/// C `unsigned __int128` (a GCC extension that's part of many ABIs)
pub type __uint128 = u128;
/// C __int128_t (alternate name for [__int128][])
pub type __int128_t = i128;
/// C __uint128_t (alternate name for [__uint128][])
pub type __uint128_t = u128;
cfg_if! {
if #[cfg(libc_underscore_const_names)] {
macro_rules! static_assert_eq {
($a:expr, $b:expr) => {
const _: [(); $a] = [(); $b];
};
}
// NOTE: if you add more platforms to here, you may need to cfg
// these consts. They should always match the platform's values
// for `sizeof(__int128)` and `_Alignof(__int128)`.
const _SIZE_128: usize = 16;
const _ALIGN_128: usize = 16;
// Since Rust doesn't officially guarantee that these types
// have compatible ABIs, we const assert that these values have the
// known size/align of the target platform's libc. If rustc ever
// tries to regress things, it will cause a compilation error.
//
// This isn't a bullet-proof solution because e.g. it doesn't
// catch the fact that llvm and gcc disagree on how x64 __int128
// is actually *passed* on the stack (clang underaligns it for
// the same reason that rustc *never* properly aligns it).
static_assert_eq!(core::mem::size_of::<__int128>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__int128>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__uint128>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__uint128>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__int128_t>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__int128_t>(), _ALIGN_128);
static_assert_eq!(core::mem::size_of::<__uint128_t>(), _SIZE_128);
static_assert_eq!(core::mem::align_of::<__uint128_t>(), _ALIGN_128);
}
}
}
}

View File

@@ -1,67 +1,69 @@
pub type c_char = u8;
pub type __u64 = ::c_ulonglong;
use crate::off_t;
use crate::prelude::*;
pub type __u64 = c_ulonglong;
pub type wchar_t = u32;
pub type nlink_t = ::c_ulong;
pub type blksize_t = ::c_long;
pub type nlink_t = c_ulong;
pub type blksize_t = c_long;
s! {
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
__pad0: ::c_ulong,
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
__pad1: ::c_int,
pub st_blocks: ::blkcnt_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused: [::c_uint; 2],
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: crate::nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: crate::dev_t,
__pad0: c_ulong,
pub st_size: off_t,
pub st_blksize: crate::blksize_t,
__pad1: c_int,
pub st_blocks: crate::blkcnt_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
__unused: [c_uint; 2],
}
pub struct stat64 {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
__pad0: ::c_ulong,
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
__pad1: ::c_int,
pub st_blocks: ::blkcnt_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused: [::c_uint; 2],
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: crate::nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: crate::dev_t,
__pad0: c_ulong,
pub st_size: off_t,
pub st_blksize: crate::blksize_t,
__pad1: c_int,
pub st_blocks: crate::blkcnt_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
__unused: [c_uint; 2],
}
pub struct ipc_perm {
pub __ipc_perm_key: ::key_t,
pub uid: ::uid_t,
pub gid: ::gid_t,
pub cuid: ::uid_t,
pub cgid: ::gid_t,
pub mode: ::mode_t,
pub __seq: ::c_ushort,
__unused1: ::c_ulong,
__unused2: ::c_ulong,
pub __ipc_perm_key: crate::key_t,
pub uid: crate::uid_t,
pub gid: crate::gid_t,
pub cuid: crate::uid_t,
pub cgid: crate::gid_t,
pub mode: crate::mode_t,
pub __seq: c_ushort,
__unused1: c_ulong,
__unused2: c_ulong,
}
}
// From https://cs.opensource.google/fuchsia/fuchsia/+/main:zircon/third_party/ulib/musl/include/bits/signal.h;l=20-21;drc=0827b18ab9540c46f8037f407d17ea15a79e9ba7
pub const MINSIGSTKSZ: ::size_t = 6144;
pub const SIGSTKSZ: ::size_t = 12288;
pub const MINSIGSTKSZ: size_t = 6144;
pub const SIGSTKSZ: size_t = 12288;

View File

@@ -1,142 +0,0 @@
macro_rules! expand_align {
() => {
s! {
#[cfg_attr(
any(
target_pointer_width = "32",
target_arch = "x86_64"
),
repr(align(4)))]
#[cfg_attr(
not(any(
target_pointer_width = "32",
target_arch = "x86_64"
)),
repr(align(8)))]
pub struct pthread_mutexattr_t {
size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
}
#[cfg_attr(target_pointer_width = "32",
repr(align(4)))]
#[cfg_attr(target_pointer_width = "64",
repr(align(8)))]
pub struct pthread_rwlockattr_t {
size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
}
#[repr(align(4))]
pub struct pthread_condattr_t {
size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
}
}
s_no_extra_traits! {
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "arm",
target_arch = "x86_64")),
repr(align(4)))]
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "arm",
target_arch = "x86_64"))),
repr(align(8)))]
pub struct pthread_mutex_t {
size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
}
#[cfg_attr(all(target_pointer_width = "32",
any(target_arch = "arm",
target_arch = "x86_64")),
repr(align(4)))]
#[cfg_attr(any(target_pointer_width = "64",
not(any(target_arch = "arm",
target_arch = "x86_64"))),
repr(align(8)))]
pub struct pthread_rwlock_t {
size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
}
#[cfg_attr(target_pointer_width = "32",
repr(align(4)))]
#[cfg_attr(target_pointer_width = "64",
repr(align(8)))]
#[cfg_attr(target_arch = "x86",
repr(align(4)))]
#[cfg_attr(not(target_arch = "x86"),
repr(align(8)))]
pub struct pthread_cond_t {
size: [u8; ::__SIZEOF_PTHREAD_COND_T],
}
}
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for pthread_cond_t {
fn eq(&self, other: &pthread_cond_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_cond_t {}
impl ::fmt::Debug for pthread_cond_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_cond_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_cond_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
impl PartialEq for pthread_mutex_t {
fn eq(&self, other: &pthread_mutex_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_mutex_t {}
impl ::fmt::Debug for pthread_mutex_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_mutex_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_mutex_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
impl PartialEq for pthread_rwlock_t {
fn eq(&self, other: &pthread_rwlock_t) -> bool {
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_rwlock_t {}
impl ::fmt::Debug for pthread_rwlock_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_rwlock_t")
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_rwlock_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
self.size.hash(state);
}
}
}
}
};
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,129 +0,0 @@
macro_rules! expand_align {
() => {
s! {
pub struct pthread_mutexattr_t {
#[cfg(target_arch = "x86_64")]
__align: [::c_int; 0],
#[cfg(not(target_arch = "x86_64"))]
__align: [::c_long; 0],
size: [u8; ::__SIZEOF_PTHREAD_MUTEXATTR_T],
}
pub struct pthread_rwlockattr_t {
__align: [::c_long; 0],
size: [u8; ::__SIZEOF_PTHREAD_RWLOCKATTR_T],
}
pub struct pthread_condattr_t {
__align: [::c_int; 0],
size: [u8; ::__SIZEOF_PTHREAD_CONDATTR_T],
}
}
s_no_extra_traits! {
pub struct pthread_mutex_t {
#[cfg(any(target_arch = "arm",
all(target_arch = "x86_64",
target_pointer_width = "32")))]
__align: [::c_long; 0],
#[cfg(not(any(target_arch = "arm",
all(target_arch = "x86_64",
target_pointer_width = "32"))))]
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_MUTEX_T],
}
pub struct pthread_rwlock_t {
__align: [::c_long; 0],
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_RWLOCK_T],
}
pub struct pthread_cond_t {
__align: [*const ::c_void; 0],
#[cfg(not(target_env = "musl"))]
__align: [::c_longlong; 0],
size: [u8; ::__SIZEOF_PTHREAD_COND_T],
}
}
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for pthread_cond_t {
fn eq(&self, other: &pthread_cond_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_cond_t {}
impl ::fmt::Debug for pthread_cond_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_cond_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_cond_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
impl PartialEq for pthread_mutex_t {
fn eq(&self, other: &pthread_mutex_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_mutex_t {}
impl ::fmt::Debug for pthread_mutex_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_mutex_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_mutex_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
impl PartialEq for pthread_rwlock_t {
fn eq(&self, other: &pthread_rwlock_t) -> bool {
// Ignore __align field
self.size
.iter()
.zip(other.size.iter())
.all(|(a,b)| a == b)
}
}
impl Eq for pthread_rwlock_t {}
impl ::fmt::Debug for pthread_rwlock_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("pthread_rwlock_t")
// Ignore __align field
// FIXME: .field("size", &self.size)
.finish()
}
}
impl ::hash::Hash for pthread_rwlock_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
// Ignore __align field
self.size.hash(state);
}
}
}
}
};
}

View File

@@ -1,44 +1,46 @@
use crate::off_t;
use crate::prelude::*;
// From psABI Calling Convention for RV64
pub type c_char = u8;
pub type __u64 = ::c_ulonglong;
pub type __u64 = c_ulonglong;
pub type wchar_t = i32;
pub type nlink_t = ::c_ulong;
pub type blksize_t = ::c_long;
pub type nlink_t = c_ulong;
pub type blksize_t = c_long;
pub type stat64 = stat;
s! {
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
__pad0: ::c_int,
pub st_rdev: ::dev_t,
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused: [::c_long; 3],
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
__pad0: c_int,
pub st_rdev: crate::dev_t,
pub st_size: off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
__unused: [c_long; 3],
}
// Not actually used, IPC calls just return ENOSYS
pub struct ipc_perm {
pub __ipc_perm_key: ::key_t,
pub uid: ::uid_t,
pub gid: ::gid_t,
pub cuid: ::uid_t,
pub cgid: ::gid_t,
pub mode: ::mode_t,
pub __seq: ::c_ushort,
__unused1: ::c_ulong,
__unused2: ::c_ulong,
pub __ipc_perm_key: crate::key_t,
pub uid: crate::uid_t,
pub gid: crate::gid_t,
pub cuid: crate::uid_t,
pub cgid: crate::gid_t,
pub mode: crate::mode_t,
pub __seq: c_ushort,
__unused1: c_ulong,
__unused2: c_ulong,
}
}

View File

@@ -1,50 +1,52 @@
pub type c_char = i8;
use crate::off_t;
use crate::prelude::*;
pub type wchar_t = i32;
pub type nlink_t = u64;
pub type blksize_t = ::c_long;
pub type __u64 = ::c_ulonglong;
pub type blksize_t = c_long;
pub type __u64 = c_ulonglong;
s! {
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
__pad0: ::c_int,
pub st_rdev: ::dev_t,
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__unused: [::c_long; 3],
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
__pad0: c_int,
pub st_rdev: crate::dev_t,
pub st_size: off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
__unused: [c_long; 3],
}
pub struct stat64 {
pub st_dev: ::dev_t,
pub st_ino: ::ino64_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
__pad0: ::c_int,
pub st_rdev: ::dev_t,
pub st_size: ::off_t,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt64_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
__reserved: [::c_long; 3],
pub st_dev: crate::dev_t,
pub st_ino: crate::ino64_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
__pad0: c_int,
pub st_rdev: crate::dev_t,
pub st_size: off_t,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt64_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
__reserved: [c_long; 3],
}
pub struct mcontext_t {
@@ -52,25 +54,25 @@ s! {
}
pub struct ipc_perm {
pub __ipc_perm_key: ::key_t,
pub uid: ::uid_t,
pub gid: ::gid_t,
pub cuid: ::uid_t,
pub cgid: ::gid_t,
pub mode: ::mode_t,
pub __seq: ::c_int,
__unused1: ::c_long,
__unused2: ::c_long
pub __ipc_perm_key: crate::key_t,
pub uid: crate::uid_t,
pub gid: crate::gid_t,
pub cuid: crate::uid_t,
pub cgid: crate::gid_t,
pub mode: crate::mode_t,
pub __seq: c_int,
__unused1: c_long,
__unused2: c_long,
}
}
s_no_extra_traits! {
pub struct ucontext_t {
pub uc_flags: ::c_ulong,
pub uc_flags: c_ulong,
pub uc_link: *mut ucontext_t,
pub uc_stack: ::stack_t,
pub uc_stack: crate::stack_t,
pub uc_mcontext: mcontext_t,
pub uc_sigmask: ::sigset_t,
pub uc_sigmask: crate::sigset_t,
__private: [u8; 512],
}
}
@@ -88,24 +90,24 @@ cfg_if! {
.__private
.iter()
.zip(other.__private.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for ucontext_t {}
impl ::fmt::Debug for ucontext_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for ucontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("ucontext_t")
.field("uc_flags", &self.uc_flags)
.field("uc_link", &self.uc_link)
.field("uc_stack", &self.uc_stack)
.field("uc_mcontext", &self.uc_mcontext)
.field("uc_sigmask", &self.uc_sigmask)
// FIXME: .field("__private", &self.__private)
// FIXME(debug): .field("__private", &self.__private)
.finish()
}
}
impl ::hash::Hash for ucontext_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for ucontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.uc_flags.hash(state);
self.uc_link.hash(state);
self.uc_stack.hash(state);
@@ -118,35 +120,35 @@ cfg_if! {
}
// offsets in user_regs_structs, from sys/reg.h
pub const R15: ::c_int = 0;
pub const R14: ::c_int = 1;
pub const R13: ::c_int = 2;
pub const R12: ::c_int = 3;
pub const RBP: ::c_int = 4;
pub const RBX: ::c_int = 5;
pub const R11: ::c_int = 6;
pub const R10: ::c_int = 7;
pub const R9: ::c_int = 8;
pub const R8: ::c_int = 9;
pub const RAX: ::c_int = 10;
pub const RCX: ::c_int = 11;
pub const RDX: ::c_int = 12;
pub const RSI: ::c_int = 13;
pub const RDI: ::c_int = 14;
pub const ORIG_RAX: ::c_int = 15;
pub const RIP: ::c_int = 16;
pub const CS: ::c_int = 17;
pub const EFLAGS: ::c_int = 18;
pub const RSP: ::c_int = 19;
pub const SS: ::c_int = 20;
pub const FS_BASE: ::c_int = 21;
pub const GS_BASE: ::c_int = 22;
pub const DS: ::c_int = 23;
pub const ES: ::c_int = 24;
pub const FS: ::c_int = 25;
pub const GS: ::c_int = 26;
pub const R15: c_int = 0;
pub const R14: c_int = 1;
pub const R13: c_int = 2;
pub const R12: c_int = 3;
pub const RBP: c_int = 4;
pub const RBX: c_int = 5;
pub const R11: c_int = 6;
pub const R10: c_int = 7;
pub const R9: c_int = 8;
pub const R8: c_int = 9;
pub const RAX: c_int = 10;
pub const RCX: c_int = 11;
pub const RDX: c_int = 12;
pub const RSI: c_int = 13;
pub const RDI: c_int = 14;
pub const ORIG_RAX: c_int = 15;
pub const RIP: c_int = 16;
pub const CS: c_int = 17;
pub const EFLAGS: c_int = 18;
pub const RSP: c_int = 19;
pub const SS: c_int = 20;
pub const FS_BASE: c_int = 21;
pub const GS_BASE: c_int = 22;
pub const DS: c_int = 23;
pub const ES: c_int = 24;
pub const FS: c_int = 25;
pub const GS: c_int = 26;
pub const MAP_32BIT: ::c_int = 0x0040;
pub const MAP_32BIT: c_int = 0x0040;
pub const SIGSTKSZ: ::size_t = 8192;
pub const MINSIGSTKSZ: ::size_t = 2048;
pub const SIGSTKSZ: size_t = 8192;
pub const MINSIGSTKSZ: size_t = 2048;

View File

@@ -1,31 +1,12 @@
//! Hermit C type definitions
cfg_if! {
if #[cfg(any(target_arch = "aarch64", target_arch = "riscv64"))] {
pub type c_char = u8;
} else {
pub type c_char = i8;
}
}
use crate::prelude::*;
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_long = i64;
pub type c_ulong = u64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64;
pub type uintmax_t = u64;
pub type intptr_t = isize;
pub type uintptr_t = usize;
pub type c_float = f32;
pub type c_double = f64;
pub type size_t = usize;
pub type ssize_t = isize;
pub type ptrdiff_t = isize;
@@ -119,7 +100,7 @@ s! {
pub st_uid: u32,
pub st_gid: u32,
pub st_rdev: u64,
pub st_size: u64,
pub st_size: i64,
pub st_blksize: i64,
pub st_blocks: i64,
pub st_atim: timespec,
@@ -576,5 +557,3 @@ extern "C" {
#[link_name = "sys_poll"]
pub fn poll(fds: *mut pollfd, nfds: nfds_t, timeout: i32) -> i32;
}
pub use ffi::c_void;

View File

@@ -12,7 +12,7 @@
redundant_semicolons,
unused_macros,
unused_macro_rules,
// FIXME: temporarily allow dead_code to fix CI:
// FIXME(1.0): temporarily allow dead_code to fix CI:
// - https://github.com/rust-lang/libc/issues/3740
// - https://github.com/rust-lang/rust/pull/126456
dead_code,
@@ -21,12 +21,14 @@
// Attributes needed when building as part of the standard library
#![cfg_attr(feature = "rustc-dep-of-std", feature(link_cfg, no_core))]
#![cfg_attr(libc_thread_local, feature(thread_local))]
#![cfg_attr(feature = "rustc-dep-of-std", allow(internal_features))]
// DIFF(1.0): The thread local references that raise this lint were removed in 1.0
#![cfg_attr(feature = "rustc-dep-of-std", allow(static_mut_refs))]
// Enable extra lints:
#![cfg_attr(feature = "extra_traits", deny(missing_debug_implementations))]
#![deny(missing_copy_implementations, safe_packed_borrows)]
#![cfg_attr(not(feature = "rustc-dep-of-std"), no_std)]
#![cfg_attr(feature = "rustc-dep-of-std", no_core)]
#![cfg_attr(libc_const_extern_fn_unstable, feature(const_extern_fn))]
#[macro_use]
mod macros;
@@ -34,135 +36,116 @@ mod macros;
cfg_if! {
if #[cfg(feature = "rustc-dep-of-std")] {
extern crate rustc_std_workspace_core as core;
#[allow(unused_imports)]
use core::iter;
#[allow(unused_imports)]
use core::ops;
#[allow(unused_imports)]
use core::option;
}
}
cfg_if! {
if #[cfg(libc_priv_mod_use)] {
#[cfg(libc_core_cvoid)]
#[allow(unused_imports)]
use core::ffi;
#[allow(unused_imports)]
use core::fmt;
#[allow(unused_imports)]
use core::hash;
#[allow(unused_imports)]
use core::num;
#[allow(unused_imports)]
use core::mem;
#[doc(hidden)]
#[allow(unused_imports)]
use core::clone::Clone;
#[doc(hidden)]
#[allow(unused_imports)]
use core::marker::{Copy, Send, Sync};
#[doc(hidden)]
#[allow(unused_imports)]
use core::option::Option;
} else {
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::fmt;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::hash;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::num;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::mem;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::clone::Clone;
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::marker::{Copy, Send, Sync};
#[doc(hidden)]
#[allow(unused_imports)]
pub use core::option::Option;
}
}
pub use core::ffi::c_void;
cfg_if! {
if #[cfg(windows)] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod windows;
pub use windows::*;
pub use crate::windows::*;
prelude!();
} else if #[cfg(target_os = "fuchsia")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod fuchsia;
pub use fuchsia::*;
pub use crate::fuchsia::*;
prelude!();
} else if #[cfg(target_os = "switch")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use primitives::*;
mod switch;
pub use switch::*;
prelude!();
} else if #[cfg(target_os = "psp")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use primitives::*;
mod psp;
pub use psp::*;
pub use crate::psp::*;
prelude!();
} else if #[cfg(target_os = "vxworks")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod vxworks;
pub use vxworks::*;
pub use crate::vxworks::*;
prelude!();
} else if #[cfg(target_os = "solid_asp3")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod solid;
pub use solid::*;
pub use crate::solid::*;
prelude!();
} else if #[cfg(unix)] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod unix;
pub use unix::*;
pub use crate::unix::*;
prelude!();
} else if #[cfg(target_os = "hermit")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod hermit;
pub use hermit::*;
pub use crate::hermit::*;
prelude!();
} else if #[cfg(target_os = "teeos")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use primitives::*;
mod teeos;
pub use teeos::*;
prelude!();
} else if #[cfg(target_os = "trusty")] {
mod primitives;
pub use crate::primitives::*;
mod trusty;
pub use crate::trusty::*;
prelude!();
} else if #[cfg(all(target_env = "sgx", target_vendor = "fortanix"))] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod sgx;
pub use sgx::*;
pub use crate::sgx::*;
prelude!();
} else if #[cfg(any(target_env = "wasi", target_os = "wasi"))] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod wasi;
pub use wasi::*;
pub use crate::wasi::*;
prelude!();
} else if #[cfg(target_os = "xous")] {
mod fixed_width_ints;
pub use fixed_width_ints::*;
mod primitives;
pub use crate::primitives::*;
mod xous;
pub use xous::*;
pub use crate::xous::*;
prelude!();
} else {
// non-supported targets: empty...
}

View File

@@ -61,216 +61,260 @@ macro_rules! cfg_if {
};
}
/// Create an internal crate prelude with `core` reexports and common types.
macro_rules! prelude {
() => {
/// Frequently-used types that are available on all platforms
///
/// We need to reexport the core types so this works with `rust-dep-of-std`.
mod prelude {
// Exports from `core`
#[allow(unused_imports)]
pub(crate) use ::core::clone::Clone;
#[allow(unused_imports)]
pub(crate) use ::core::marker::{Copy, Send, Sync};
#[allow(unused_imports)]
pub(crate) use ::core::option::Option;
#[allow(unused_imports)]
pub(crate) use ::core::{fmt, hash, iter, mem};
// Commonly used types defined in this crate
#[allow(unused_imports)]
pub(crate) use crate::{
c_char, c_double, c_float, c_int, c_long, c_longlong, c_short, c_uchar, c_uint,
c_ulong, c_ulonglong, c_ushort, c_void, intptr_t, size_t, ssize_t, uintptr_t,
};
}
};
}
/// Implement `Clone` and `Copy` for a struct, as well as `Debug`, `Eq`, `Hash`, and
/// `PartialEq` if the `extra_traits` feature is enabled.
///
/// Use [`s_no_extra_traits`] for structs where the `extra_traits` feature does not
/// make sense, and for unions.
macro_rules! s {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
($(
$(#[$attr:meta])*
pub $t:ident $i:ident { $($field:tt)* }
)*) => ($(
s!(it: $(#[$attr])* pub $t $i { $($field)* });
)*);
(it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => (
compile_error!("unions cannot derive extra traits, use s_no_extra_traits instead");
);
(it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => (
__item! {
#[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
#[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
#[allow(deprecated)]
$(#[$attr])*
pub struct $i { $($field)* }
}
#[allow(deprecated)]
impl ::Copy for $i {}
#[allow(deprecated)]
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
);
}
/// Implement `Clone` and `Copy` for a tuple struct, as well as `Debug`, `Eq`, `Hash`,
/// and `PartialEq` if the `extra_traits` feature is enabled.
///
/// This is the same as [`s`] but works for tuple structs.
macro_rules! s_paren {
($(
$(#[$attr:meta])*
pub struct $i:ident ( $($field:tt)* );
)*) => ($(
__item! {
#[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub struct $i ( $($field)* );
}
)*);
}
/// Implement `Clone` and `Copy` for a struct with no `extra_traits` feature.
///
/// Most items will prefer to use [`s`].
macro_rules! s_no_extra_traits {
($($(#[$attr:meta])* pub $t:ident $i:ident { $($field:tt)* })*) => ($(
($(
$(#[$attr:meta])*
pub $t:ident $i:ident { $($field:tt)* }
)*) => ($(
s_no_extra_traits!(it: $(#[$attr])* pub $t $i { $($field)* });
)*);
(it: $(#[$attr:meta])* pub union $i:ident { $($field:tt)* }) => (
cfg_if! {
if #[cfg(libc_union)] {
__item! {
#[repr(C)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub union $i { $($field)* }
}
impl ::Copy for $i {}
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
#[cfg(feature = "extra_traits")]
impl ::core::fmt::Debug for $i {
fn fmt(&self, f: &mut ::core::fmt::Formatter<'_>) -> ::core::fmt::Result {
f.debug_struct(::core::stringify!($i)).finish_non_exhaustive()
}
}
);
(it: $(#[$attr:meta])* pub struct $i:ident { $($field:tt)* }) => (
__item! {
#[repr(C)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub struct $i { $($field)* }
}
#[allow(deprecated)]
impl ::Copy for $i {}
#[allow(deprecated)]
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
);
}
/// Specify that an enum should have no traits that aren't specified in the macro
/// invocation, i.e. no `Clone` or `Copy`.
macro_rules! missing {
($($(#[$attr:meta])* pub enum $i:ident {})*) => ($(
$(#[$attr])* #[allow(missing_copy_implementations)] pub enum $i { }
($(
$(#[$attr:meta])*
pub enum $i:ident {}
)*) => ($(
$(#[$attr])*
#[allow(missing_copy_implementations)]
pub enum $i { }
)*);
}
/// Implement `Clone` and `Copy` for an enum, as well as `Debug`, `Eq`, `Hash`, and
/// `PartialEq` if the `extra_traits` feature is enabled.
macro_rules! e {
($($(#[$attr:meta])* pub enum $i:ident { $($field:tt)* })*) => ($(
($(
$(#[$attr:meta])*
pub enum $i:ident { $($field:tt)* }
)*) => ($(
__item! {
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
#[cfg_attr(
feature = "extra_traits",
::core::prelude::v1::derive(Debug, Eq, Hash, PartialEq)
)]
#[::core::prelude::v1::derive(::core::clone::Clone, ::core::marker::Copy)]
$(#[$attr])*
pub enum $i { $($field)* }
}
impl ::Copy for $i {}
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
)*);
}
macro_rules! s_paren {
($($(#[$attr:meta])* pub struct $i:ident ( $($field:tt)* ); )* ) => ($(
__item! {
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
$(#[$attr])*
pub struct $i ( $($field)* );
}
impl ::Copy for $i {}
impl ::Clone for $i {
fn clone(&self) -> $i { *self }
}
)*);
}
// This is a pretty horrible hack to allow us to conditionally mark
// some functions as 'const', without requiring users of this macro
// to care about the "const-extern-fn" feature.
// This is a pretty horrible hack to allow us to conditionally mark some functions as 'const',
// without requiring users of this macro to care "libc_const_extern_fn".
//
// When 'const-extern-fn' is enabled, we emit the captured 'const' keyword
// in the expanded function.
// When 'libc_const_extern_fn' is enabled, we emit the captured 'const' keyword in the expanded
// function.
//
// When 'const-extern-fn' is disabled, we always emit a plain 'pub unsafe extern fn'.
// When 'libc_const_extern_fn' is disabled, we always emit a plain 'pub unsafe extern fn'.
// Note that the expression matched by the macro is exactly the same - this allows
// users of this macro to work whether or not 'const-extern-fn' is enabled
// users of this macro to work whether or not 'libc_const_extern_fn' is enabled
//
// Unfortunately, we need to duplicate most of this macro between the 'cfg_if' blocks.
// This is because 'const unsafe extern fn' won't even parse on older compilers,
// so we need to avoid emitting it at all of 'const-extern-fn'.
// so we need to avoid emitting it at all of 'libc_const_extern_fn'.
//
// Specifically, moving the 'cfg_if' into the macro body will *not* work.
// Doing so would cause the '#[cfg(feature = "const-extern-fn")]' to be emitted
// into user code. The 'cfg' gate will not stop Rust from trying to parse the
// 'pub const unsafe extern fn', so users would get a compiler error even when
// the 'const-extern-fn' feature is disabled
//
// Note that users of this macro need to place 'const' in a weird position
// (after the closing ')' for the arguments, but before the return type).
// This was the only way I could satisfy the following two requirements:
// 1. Avoid ambiguity errors from 'macro_rules!' (which happen when writing '$foo:ident fn'
// 2. Allow users of this macro to mix 'pub fn foo' and 'pub const fn bar' within the same
// 'f!' block
// Specifically, moving the 'cfg_if' into the macro body will *not* work. Doing so would cause the
// '#[cfg(libc_const_extern_fn)]' to be emitted into user code. The 'cfg' gate will not stop Rust
// from trying to parse the 'pub const unsafe extern fn', so users would get a compiler error even
// when the 'libc_const_extern_fn' feature is disabled.
// FIXME(ctest): ctest can't handle `const extern` functions, we should be able to remove this
// cfg completely.
// FIXME(ctest): ctest can't handle `$(,)?` so we use `$(,)*` which isn't quite correct.
cfg_if! {
if #[cfg(libc_const_extern_fn)] {
/// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
pub $($constness)* unsafe extern fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
pub $($constness)* unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
/// Define a safe function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
pub $($constness)* extern fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
pub $($constness)* extern "C" fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
/// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
$({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
$($constness)* fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
$($constness)* fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
} else {
/// Define an `unsafe` function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
pub unsafe extern fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
pub unsafe extern "C" fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
/// Define a safe function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! safe_f {
($($(#[$attr:meta])* pub $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
pub $({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
pub extern fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
pub extern "C" fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
/// A nonpublic function that is const as long as `libc_const_extern_fn` is enabled.
macro_rules! const_fn {
($($(#[$attr:meta])* $({$constness:ident})* fn $i:ident(
$($arg:ident: $argty:ty),*
) -> $ret:ty {
$($body:stmt);*
})*) => ($(
($(
$(#[$attr:meta])*
$({$constness:ident})* fn $i:ident($($arg:ident: $argty:ty),* $(,)*) -> $ret:ty
$body:block
)*) => ($(
#[inline]
$(#[$attr])*
fn $i($($arg: $argty),*
) -> $ret {
$($body);*
}
fn $i($($arg: $argty),*) -> $ret
$body
)*)
}
}
@@ -282,24 +326,6 @@ macro_rules! __item {
};
}
macro_rules! align_const {
($($(#[$attr:meta])*
pub const $name:ident : $t1:ty
= $t2:ident { $($field:tt)* };)*) => ($(
#[cfg(libc_align)]
$(#[$attr])*
pub const $name : $t1 = $t2 {
$($field)*
};
#[cfg(not(libc_align))]
$(#[$attr])*
pub const $name : $t1 = $t2 {
$($field)*
__align: [],
};
)*)
}
// This macro is used to deprecate items that should be accessed via the mach2 crate
macro_rules! deprecated_mach {
(pub const $id:ident: $ty:ty = $expr:expr;) => {
@@ -333,17 +359,3 @@ macro_rules! deprecated_mach {
)*
}
}
#[cfg(not(libc_ptr_addr_of))]
macro_rules! ptr_addr_of {
($place:expr) => {
&$place
};
}
#[cfg(libc_ptr_addr_of)]
macro_rules! ptr_addr_of {
($place:expr) => {
::core::ptr::addr_of!($place)
};
}

166
third_party/rust/libc/src/primitives.rs vendored Normal file
View File

@@ -0,0 +1,166 @@
//! This module contains type aliases for C's platform-specific types
//! and fixed-width integer types.
//!
//! The platform-specific types definitions were taken from rust-lang/rust in
//! library/core/src/ffi/primitives.rs
//!
//! The fixed-width integer aliases are deprecated: use the Rust types instead.
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type c_float = f32;
pub type c_double = f64;
cfg_if! {
if #[cfg(all(
not(windows),
// FIXME(ctest): just use `target_vendor` = "apple"` once `ctest` supports it
not(any(
target_os = "macos",
target_os = "ios",
target_os = "tvos",
target_os = "watchos",
target_os = "visionos",
)),
not(target_os = "vita"),
any(
target_arch = "aarch64",
target_arch = "arm",
target_arch = "csky",
target_arch = "hexagon",
target_arch = "msp430",
target_arch = "powerpc",
target_arch = "powerpc64",
target_arch = "riscv32",
target_arch = "riscv64",
target_arch = "s390x",
target_arch = "xtensa",
)
))] {
pub type c_char = u8;
} else {
// On every other target, c_char is signed.
pub type c_char = i8;
}
}
cfg_if! {
if #[cfg(any(target_arch = "avr", target_arch = "msp430"))] {
pub type c_int = i16;
pub type c_uint = u16;
} else {
pub type c_int = i32;
pub type c_uint = u32;
}
}
cfg_if! {
if #[cfg(all(target_pointer_width = "64", not(windows)))] {
pub type c_long = i64;
pub type c_ulong = u64;
} else {
// The minimal size of `long` in the C standard is 32 bits
pub type c_long = i32;
pub type c_ulong = u32;
}
}
#[deprecated(since = "0.2.55", note = "Use i8 instead.")]
pub type int8_t = i8;
#[deprecated(since = "0.2.55", note = "Use i16 instead.")]
pub type int16_t = i16;
#[deprecated(since = "0.2.55", note = "Use i32 instead.")]
pub type int32_t = i32;
#[deprecated(since = "0.2.55", note = "Use i64 instead.")]
pub type int64_t = i64;
#[deprecated(since = "0.2.55", note = "Use u8 instead.")]
pub type uint8_t = u8;
#[deprecated(since = "0.2.55", note = "Use u16 instead.")]
pub type uint16_t = u16;
#[deprecated(since = "0.2.55", note = "Use u32 instead.")]
pub type uint32_t = u32;
#[deprecated(since = "0.2.55", note = "Use u64 instead.")]
pub type uint64_t = u64;
cfg_if! {
if #[cfg(all(target_arch = "aarch64", not(target_os = "windows")))] {
// This introduces partial support for FFI with __int128 and
// equivalent types on platforms where Rust's definition is validated
// to match the standard C ABI of that platform.
//
// Rust does not guarantee u128/i128 are sound for FFI, and its
// definitions are in fact known to be incompatible. [0]
//
// However these problems aren't fundamental, and are just platform
// inconsistencies. Specifically at the time of this writing:
//
// * For x64 SysV ABIs (everything but Windows), the types are underaligned.
// * For all Windows ABIs, Microsoft doesn't actually officially define __int128,
// and as a result different implementations don't actually agree on its ABI.
//
// But on the other major aarch64 platforms (android, linux, ios, macos) we have
// validated that rustc has the right ABI for these types. This is important because
// aarch64 uses these types in some fundamental OS types like user_fpsimd_struct,
// which represents saved simd registers.
//
// Any API which uses these types will need to `#[ignore(improper_ctypes)]`
// until the upstream rust issue is resolved, but this at least lets us make
// progress on platforms where this type is important.
//
// The list of supported architectures and OSes is intentionally very restricted,
// as careful work needs to be done to verify that a particular platform
// has a conformant ABI.
//
// [0]: https://github.com/rust-lang/rust/issues/54341
/// C `__int128` (a GCC extension that's part of many ABIs)
pub type __int128 = i128;
/// C `unsigned __int128` (a GCC extension that's part of many ABIs)
pub type __uint128 = u128;
/// C __int128_t (alternate name for [__int128][])
pub type __int128_t = i128;
/// C __uint128_t (alternate name for [__uint128][])
pub type __uint128_t = u128;
// NOTE: if you add more platforms to here, you may need to cfg
// these consts. They should always match the platform's values
// for `sizeof(__int128)` and `_Alignof(__int128)`.
const _SIZE_128: usize = 16;
const _ALIGN_128: usize = 16;
// FIXME(ctest): ctest doesn't handle `_` as an identifier so these tests are temporarily
// disabled.
// macro_rules! static_assert_eq {
// ($a:expr, $b:expr) => {
// const _: [(); $a] = [(); $b];
// };
// }
//
// // Since Rust doesn't officially guarantee that these types
// // have compatible ABIs, we const assert that these values have the
// // known size/align of the target platform's libc. If rustc ever
// // tries to regress things, it will cause a compilation error.
// //
// // This isn't a bullet-proof solution because e.g. it doesn't
// // catch the fact that llvm and gcc disagree on how x64 __int128
// // is actually *passed* on the stack (clang underaligns it for
// // the same reason that rustc *never* properly aligns it).
// static_assert_eq!(core::mem::size_of::<__int128>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__int128>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__uint128>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__uint128>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__int128_t>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__int128_t>(), _ALIGN_128);
// static_assert_eq!(core::mem::size_of::<__uint128_t>(), _SIZE_128);
// static_assert_eq!(core::mem::align_of::<__uint128_t>(), _ALIGN_128);
}
}

View File

@@ -4,16 +4,8 @@
//! by the linker. Crates that use these definitions must, somewhere in the
//! crate graph, include a stub provider crate such as the `psp` crate.
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
use crate::prelude::*;
pub type intmax_t = i64;
pub type uintmax_t = u64;
@@ -23,30 +15,6 @@ pub type intptr_t = isize;
pub type uintptr_t = usize;
pub type ssize_t = isize;
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}
pub type SceKernelVTimerHandler = unsafe extern "C" fn(
uid: SceUid,
arg1: *mut SceKernelSysClock,
@@ -74,16 +42,16 @@ pub type IoPermissions = i32;
pub type UmdCallback = fn(unknown: i32, event: i32) -> i32;
pub type SceMpegRingbufferCb =
::Option<unsafe extern "C" fn(data: *mut c_void, num_packets: i32, param: *mut c_void) -> i32>;
Option<unsafe extern "C" fn(data: *mut c_void, num_packets: i32, param: *mut c_void) -> i32>;
pub type GuCallback = ::Option<extern "C" fn(id: i32, arg: *mut c_void)>;
pub type GuCallback = Option<extern "C" fn(id: i32, arg: *mut c_void)>;
pub type GuSwapBuffersCallback =
::Option<extern "C" fn(display: *mut *mut c_void, render: *mut *mut c_void)>;
Option<extern "C" fn(display: *mut *mut c_void, render: *mut *mut c_void)>;
pub type SceNetAdhocctlHandler =
::Option<unsafe extern "C" fn(flag: i32, error: i32, unknown: *mut c_void)>;
Option<unsafe extern "C" fn(flag: i32, error: i32, unknown: *mut c_void)>;
pub type AdhocMatchingCallback = ::Option<
pub type AdhocMatchingCallback = Option<
unsafe extern "C" fn(
matching_id: i32,
event: i32,
@@ -93,15 +61,15 @@ pub type AdhocMatchingCallback = ::Option<
),
>;
pub type SceNetApctlHandler = ::Option<
pub type SceNetApctlHandler = Option<
unsafe extern "C" fn(oldState: i32, newState: i32, event: i32, error: i32, pArg: *mut c_void),
>;
pub type HttpMallocFunction = ::Option<unsafe extern "C" fn(size: usize) -> *mut c_void>;
pub type HttpMallocFunction = Option<unsafe extern "C" fn(size: usize) -> *mut c_void>;
pub type HttpReallocFunction =
::Option<unsafe extern "C" fn(p: *mut c_void, size: usize) -> *mut c_void>;
pub type HttpFreeFunction = ::Option<unsafe extern "C" fn(p: *mut c_void)>;
pub type HttpPasswordCB = ::Option<
Option<unsafe extern "C" fn(p: *mut c_void, size: usize) -> *mut c_void>;
pub type HttpFreeFunction = Option<unsafe extern "C" fn(p: *mut c_void)>;
pub type HttpPasswordCB = Option<
unsafe extern "C" fn(
request: i32,
auth_type: HttpAuthType,
@@ -1401,7 +1369,7 @@ s! {
pub struct sockaddr {
pub sa_len: u8,
pub sa_family: u8,
pub sa_data: [u8;14],
pub sa_data: [u8; 14],
}
pub struct in_addr {
@@ -1448,9 +1416,9 @@ s! {
}
pub struct GeCallbackData {
pub signal_func: ::Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub signal_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub signal_arg: *mut c_void,
pub finish_func: ::Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub finish_func: Option<extern "C" fn(id: i32, arg: *mut c_void)>,
pub finish_arg: *mut c_void,
}

View File

@@ -1,15 +1,7 @@
//! SGX C types definition
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
use crate::prelude::*;
pub type intmax_t = i64;
pub type uintmax_t = u64;
@@ -19,29 +11,5 @@ pub type intptr_t = isize;
pub type uintptr_t = usize;
pub type ssize_t = isize;
pub type c_char = i8;
pub type c_long = i64;
pub type c_ulong = u64;
pub const INT_MIN: c_int = -2147483648;
pub const INT_MAX: c_int = 2147483647;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}

View File

@@ -1,4 +1 @@
pub type c_char = i8;
pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;

View File

@@ -1,4 +1 @@
pub type c_char = i8;
pub type wchar_t = u32;
pub type c_long = i32;
pub type c_ulong = u32;

View File

@@ -2,24 +2,16 @@
//!
//! [SOLID]: https://solid.kmckk.com/
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
use crate::prelude::*;
pub type intmax_t = i64;
pub type uintmax_t = u64;
pub type uintptr_t = usize;
pub type intptr_t = isize;
pub type ptrdiff_t = isize;
pub type size_t = ::uintptr_t;
pub type ssize_t = ::intptr_t;
pub type size_t = crate::uintptr_t;
pub type ssize_t = intptr_t;
pub type clock_t = c_uint;
pub type time_t = i64;
@@ -209,15 +201,15 @@ pub const O_EXCL: c_int = 0x400;
pub const O_TEXT: c_int = 0x100;
pub const O_BINARY: c_int = 0x200;
pub const O_TRUNC: c_int = 0x20;
pub const S_IEXEC: c_short = 0x0040;
pub const S_IWRITE: c_short = 0x0080;
pub const S_IREAD: c_short = 0x0100;
pub const S_IFCHR: c_short = 0x2000;
pub const S_IFDIR: c_short = 0x4000;
pub const S_IFMT: c_short = 0o160000;
pub const S_IFIFO: c_short = 0o0010000;
pub const S_IFBLK: c_short = 0o0060000;
pub const S_IFREG: c_short = 0o0100000;
pub const S_IEXEC: c_short = 0o0100;
pub const S_IWRITE: c_short = 0o0200;
pub const S_IREAD: c_short = 0o0400;
pub const S_IFCHR: c_short = 0o2_0000;
pub const S_IFDIR: c_short = 0o4_0000;
pub const S_IFMT: c_short = 0o16_0000;
pub const S_IFIFO: c_short = 0o1_0000;
pub const S_IFBLK: c_short = 0o6_0000;
pub const S_IFREG: c_short = 0o10_0000;
pub const LC_ALL: c_int = 0;
pub const LC_COLLATE: c_int = 1;
@@ -405,16 +397,16 @@ pub const SIGPWR: c_int = 32;
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum FILE {}
impl ::Copy for FILE {}
impl ::Clone for FILE {
impl Copy for FILE {}
impl Clone for FILE {
fn clone(&self) -> FILE {
*self
}
}
#[cfg_attr(feature = "extra_traits", derive(Debug))]
pub enum fpos_t {}
impl ::Copy for fpos_t {}
impl ::Clone for fpos_t {
impl Copy for fpos_t {}
impl Clone for fpos_t {
fn clone(&self) -> fpos_t {
*self
}
@@ -538,7 +530,7 @@ extern "C" {
pub fn _Exit(arg1: c_int) -> !;
pub fn abort() -> !;
pub fn abs(arg1: c_int) -> c_int;
pub fn atexit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int;
pub fn atexit(arg1: Option<unsafe extern "C" fn()>) -> c_int;
pub fn atoi(arg1: *const c_char) -> c_int;
pub fn atol(arg1: *const c_char) -> c_long;
pub fn itoa(arg1: c_int, arg2: *mut c_char, arg3: c_int) -> *mut c_char;
@@ -549,7 +541,7 @@ extern "C" {
arg2: *const c_void,
arg3: size_t,
arg4: size_t,
arg5: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
arg5: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> *mut c_void;
pub fn calloc(arg1: size_t, arg2: size_t) -> *mut c_void;
pub fn div(arg1: c_int, arg2: c_int) -> div_t;
@@ -563,7 +555,7 @@ extern "C" {
arg1: *mut c_void,
arg2: size_t,
arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
);
pub fn rand() -> c_int;
pub fn realloc(arg1: *mut c_void, arg2: size_t) -> *mut c_void;
@@ -601,7 +593,7 @@ extern "C" {
pub fn strtoll(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_longlong;
pub fn strtoull(arg1: *const c_char, arg2: *mut *mut c_char, arg3: c_int) -> c_ulonglong;
pub fn aligned_alloc(arg1: size_t, arg2: size_t) -> *mut c_void;
pub fn at_quick_exit(arg1: ::Option<unsafe extern "C" fn()>) -> c_int;
pub fn at_quick_exit(arg1: Option<unsafe extern "C" fn()>) -> c_int;
pub fn quick_exit(arg1: c_int);
pub fn setenv(arg1: *const c_char, arg2: *const c_char, arg3: c_int) -> c_int;
pub fn unsetenv(arg1: *const c_char) -> c_int;
@@ -619,13 +611,13 @@ extern "C" {
arg1: *mut c_void,
arg2: size_t,
arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> c_int;
pub fn mergesort(
arg1: *mut c_void,
arg2: size_t,
arg3: size_t,
arg4: ::Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
arg4: Option<unsafe extern "C" fn(arg1: *const c_void, arg2: *const c_void) -> c_int>,
) -> c_int;
pub fn radixsort(
arg1: *mut *const c_uchar,
@@ -861,36 +853,16 @@ extern "C" {
pub fn newlocale(arg1: c_int, arg2: *const c_char, arg3: locale_t) -> locale_t;
// langinfo.h
pub fn nl_langinfo(item: ::nl_item) -> *mut ::c_char;
pub fn nl_langinfo_l(item: ::nl_item, locale: locale_t) -> *mut ::c_char;
pub fn nl_langinfo(item: crate::nl_item) -> *mut c_char;
pub fn nl_langinfo_l(item: crate::nl_item, locale: locale_t) -> *mut c_char;
// malloc.h
pub fn memalign(align: ::size_t, size: ::size_t) -> *mut ::c_void;
pub fn memalign(align: size_t, size: size_t) -> *mut c_void;
// sys/types.h
pub fn lseek(arg1: c_int, arg2: __off_t, arg3: c_int) -> __off_t;
}
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}
cfg_if! {
if #[cfg(target_arch = "aarch64")] {
mod aarch64;

View File

@@ -1,15 +1,5 @@
//! Switch C type definitions
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64;
pub type uintmax_t = u64;
@@ -20,30 +10,7 @@ pub type uintptr_t = usize;
pub type ssize_t = isize;
pub type off_t = i64;
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
pub type wchar_t = u32;
pub const INT_MIN: c_int = -2147483648;
pub const INT_MAX: c_int = 2147483647;
cfg_if! {
if #[cfg(libc_core_cvoid)] {
pub use ::ffi::c_void;
} else {
// Use repr(u8) as LLVM expects `void*` to be the same as `i8*` to help
// enable more optimization opportunities around it recognizing things
// like malloc/free.
#[repr(u8)]
#[allow(missing_copy_implementations)]
#[allow(missing_debug_implementations)]
pub enum c_void {
// Two dummy variants so the #[repr] attribute can be used.
#[doc(hidden)]
__variant1,
#[doc(hidden)]
__variant2,
}
}
}

View File

@@ -5,33 +5,10 @@
#![allow(non_camel_case_types)]
#![allow(non_snake_case)]
// only supported on Rust > 1.59, so we can directly reexport c_void from core.
pub use core::ffi::c_void;
use Option;
pub type c_schar = i8;
pub type c_uchar = u8;
pub type c_short = i16;
pub type c_ushort = u16;
pub type c_int = i32;
pub type c_uint = u32;
use crate::prelude::*;
pub type c_bool = i32;
pub type c_float = f32;
pub type c_double = f64;
pub type c_longlong = i64;
pub type c_ulonglong = u64;
pub type intmax_t = i64;
pub type uintmax_t = u64;
@@ -48,22 +25,12 @@ pub type ssize_t = isize;
pub type pid_t = c_int;
// aarch64 specifc
pub type c_char = u8;
pub type wchar_t = u32;
pub type c_long = i64;
pub type c_ulong = u64;
#[repr(align(16))]
pub struct _CLongDouble(pub u128);
// long double in C means A float point value, which has 128bit length.
// but some bit maybe not used, so the really length of long double could be 80(x86) or 128(power pc/IEEE)
// but some bit maybe not used, so the real length of long double could be 80(x86) or 128(power pc/IEEE)
// this is different from f128(not stable and not included default) in Rust, so we use u128 for FFI(Rust to C).
// this is unstable and will couse to memfault/data abort.
// this is unstable and will cause to memfault/data abort.
pub type c_longdouble = _CLongDouble;
pub type pthread_t = c_ulong;
@@ -94,6 +61,9 @@ pub type wctype_t = c_ulong;
pub type cmpfunc = extern "C" fn(x: *const c_void, y: *const c_void) -> c_int;
#[repr(align(16))]
pub struct _CLongDouble(pub u128);
#[repr(align(8))]
#[repr(C)]
pub struct pthread_cond_t {
@@ -1109,8 +1079,8 @@ extern "C" {
pub fn pthread_cond_timedwait(
cond: *mut pthread_cond_t,
lock: *mut pthread_mutex_t,
abstime: *const ::timespec,
) -> ::c_int;
abstime: *const timespec,
) -> c_int;
pub fn pthread_mutexattr_setrobust(attr: *mut pthread_mutexattr_t, robustness: c_int) -> c_int;

72
third_party/rust/libc/src/trusty.rs vendored Normal file
View File

@@ -0,0 +1,72 @@
use crate::prelude::*;
pub type size_t = usize;
pub type ssize_t = isize;
pub type off_t = i64;
pub type c_uint8_t = u8;
pub type c_uint16_t = u16;
pub type c_uint32_t = u32;
pub type c_uint64_t = u64;
pub type c_int8_t = i8;
pub type c_int16_t = i16;
pub type c_int32_t = i32;
pub type c_int64_t = i64;
pub type intptr_t = isize;
pub type uintptr_t = usize;
pub type time_t = c_long;
pub type clockid_t = c_int;
s! {
pub struct iovec {
pub iov_base: *mut c_void,
pub iov_len: size_t,
}
pub struct timespec {
pub tv_sec: time_t,
pub tv_nsec: c_long,
}
}
pub const PROT_READ: i32 = 1;
pub const PROT_WRITE: i32 = 2;
// Trusty only supports `CLOCK_BOOTTIME`.
pub const CLOCK_BOOTTIME: clockid_t = 7;
pub const STDOUT_FILENO: c_int = 1;
pub const STDERR_FILENO: c_int = 2;
pub const AT_PAGESZ: c_ulong = 6;
pub const MAP_FAILED: *mut c_void = !0 as *mut c_void;
extern "C" {
pub fn calloc(nobj: size_t, size: size_t) -> *mut c_void;
pub fn malloc(size: size_t) -> *mut c_void;
pub fn realloc(p: *mut c_void, size: size_t) -> *mut c_void;
pub fn free(p: *mut c_void);
pub fn memalign(align: size_t, size: size_t) -> *mut c_void;
pub fn posix_memalign(memptr: *mut *mut c_void, align: size_t, size: size_t) -> c_int;
pub fn write(fd: c_int, buf: *const c_void, count: size_t) -> ssize_t;
pub fn writev(fd: c_int, iov: *const crate::iovec, iovcnt: c_int) -> ssize_t;
pub fn close(fd: c_int) -> c_int;
pub fn strlen(cs: *const c_char) -> size_t;
pub fn getauxval(type_: c_ulong) -> c_ulong;
pub fn mmap(
addr: *mut c_void,
len: size_t,
prot: c_int,
flags: c_int,
fd: c_int,
offset: off_t,
) -> *mut c_void;
pub fn munmap(addr: *mut c_void, len: size_t) -> c_int;
pub fn clock_gettime(clk_id: crate::clockid_t, tp: *mut crate::timespec) -> c_int;
pub fn nanosleep(rqtp: *const crate::timespec, rmtp: *mut crate::timespec) -> c_int;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,5 +1,5 @@
pub type c_long = i64;
pub type c_ulong = u64;
use crate::off_t;
use crate::prelude::*;
s! {
pub struct sigset_t {
@@ -11,287 +11,290 @@ s! {
}
pub struct flock {
pub l_type: ::c_short,
pub l_whence: ::c_short,
pub l_sysid: ::c_uint,
pub l_pid: ::pid_t,
pub l_vfs: ::c_int,
pub l_start: ::off_t,
pub l_len: ::off_t,
pub l_type: c_short,
pub l_whence: c_short,
pub l_sysid: c_uint,
pub l_pid: crate::pid_t,
pub l_vfs: c_int,
pub l_start: off_t,
pub l_len: off_t,
}
pub struct statvfs {
pub f_bsize: ::c_ulong,
pub f_frsize: ::c_ulong,
pub f_blocks: ::fsblkcnt_t,
pub f_bfree: ::fsblkcnt_t,
pub f_bavail: ::fsblkcnt_t,
pub f_files: ::fsfilcnt_t,
pub f_ffree: ::fsfilcnt_t,
pub f_favail: ::fsfilcnt_t,
pub f_fsid: ::c_ulong,
pub f_basetype: [::c_char; 16],
pub f_flag: ::c_ulong,
pub f_namemax: ::c_ulong,
pub f_fstr: [::c_char; 32],
pub f_filler: [::c_ulong; 16]
pub f_bsize: c_ulong,
pub f_frsize: c_ulong,
pub f_blocks: crate::fsblkcnt_t,
pub f_bfree: crate::fsblkcnt_t,
pub f_bavail: crate::fsblkcnt_t,
pub f_files: crate::fsfilcnt_t,
pub f_ffree: crate::fsfilcnt_t,
pub f_favail: crate::fsfilcnt_t,
pub f_fsid: c_ulong,
pub f_basetype: [c_char; 16],
pub f_flag: c_ulong,
pub f_namemax: c_ulong,
pub f_fstr: [c_char; 32],
pub f_filler: [c_ulong; 16],
}
pub struct pthread_rwlock_t {
__rw_word: [::c_long; 10],
__rw_word: [c_long; 10],
}
pub struct pthread_cond_t {
__cv_word: [::c_long; 6],
__cv_word: [c_long; 6],
}
pub struct pthread_mutex_t {
__mt_word: [::c_long; 8],
__mt_word: [c_long; 8],
}
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_flag: ::c_ushort,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
pub st_ssize: ::c_int,
pub st_atime: ::st_timespec,
pub st_mtime: ::st_timespec,
pub st_ctime: ::st_timespec,
pub st_blksize: ::blksize_t,
pub st_blocks: ::blkcnt_t,
pub st_vfstype: ::c_int,
pub st_vfs: ::c_uint,
pub st_type: ::c_uint,
pub st_gen: ::c_uint,
pub st_reserved: [::c_uint; 9],
pub st_padto_ll: ::c_uint,
pub st_size: ::off_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: crate::nlink_t,
pub st_flag: c_ushort,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: crate::dev_t,
pub st_ssize: c_int,
pub st_atime: crate::st_timespec,
pub st_mtime: crate::st_timespec,
pub st_ctime: crate::st_timespec,
pub st_blksize: crate::blksize_t,
pub st_blocks: crate::blkcnt_t,
pub st_vfstype: c_int,
pub st_vfs: c_uint,
pub st_type: c_uint,
pub st_gen: c_uint,
pub st_reserved: [c_uint; 9],
pub st_padto_ll: c_uint,
pub st_size: off_t,
}
pub struct statfs {
pub f_version: ::c_int,
pub f_type: ::c_int,
pub f_bsize: ::c_ulong,
pub f_blocks: ::fsblkcnt_t,
pub f_bfree: ::fsblkcnt_t,
pub f_bavail: ::fsblkcnt_t,
pub f_files: ::fsblkcnt_t,
pub f_ffree: ::fsblkcnt_t,
pub f_fsid: ::fsid64_t,
pub f_vfstype: ::c_int,
pub f_fsize: ::c_ulong,
pub f_vfsnumber: ::c_int,
pub f_vfsoff: ::c_int,
pub f_vfslen: ::c_int,
pub f_vfsvers: ::c_int,
pub f_fname: [::c_char; 32],
pub f_fpack: [::c_char; 32],
pub f_name_max: ::c_int,
pub f_version: c_int,
pub f_type: c_int,
pub f_bsize: c_ulong,
pub f_blocks: crate::fsblkcnt_t,
pub f_bfree: crate::fsblkcnt_t,
pub f_bavail: crate::fsblkcnt_t,
pub f_files: crate::fsblkcnt_t,
pub f_ffree: crate::fsblkcnt_t,
pub f_fsid: crate::fsid64_t,
pub f_vfstype: c_int,
pub f_fsize: c_ulong,
pub f_vfsnumber: c_int,
pub f_vfsoff: c_int,
pub f_vfslen: c_int,
pub f_vfsvers: c_int,
pub f_fname: [c_char; 32],
pub f_fpack: [c_char; 32],
pub f_name_max: c_int,
}
pub struct aiocb {
pub aio_lio_opcode: ::c_int,
pub aio_fildes: ::c_int,
pub aio_word1: ::c_int,
pub aio_offset: ::off_t,
pub aio_buf: *mut ::c_void,
pub aio_return: ::ssize_t,
pub aio_errno: ::c_int,
pub aio_nbytes: ::size_t,
pub aio_reqprio: ::c_int,
pub aio_sigevent: ::sigevent,
pub aio_word2: ::c_int,
pub aio_fp: ::c_int,
pub aio_lio_opcode: c_int,
pub aio_fildes: c_int,
pub aio_word1: c_int,
pub aio_offset: off_t,
pub aio_buf: *mut c_void,
pub aio_return: ssize_t,
pub aio_errno: c_int,
pub aio_nbytes: size_t,
pub aio_reqprio: c_int,
pub aio_sigevent: crate::sigevent,
pub aio_word2: c_int,
pub aio_fp: c_int,
pub aio_handle: *mut aiocb,
pub aio_reserved: [::c_uint; 2],
pub aio_reserved: [c_uint; 2],
pub aio_sigev_tid: c_long,
}
pub struct ucontext_t {
pub __sc_onstack: ::c_int,
pub uc_sigmask: ::sigset_t,
pub __sc_uerror: ::c_int,
pub uc_mcontext: ::mcontext_t,
pub __sc_onstack: c_int,
pub uc_sigmask: crate::sigset_t,
pub __sc_uerror: c_int,
pub uc_mcontext: crate::mcontext_t,
pub uc_link: *mut ucontext_t,
pub uc_stack: ::stack_t,
pub uc_stack: crate::stack_t,
// Should be pointer to __extctx_t
pub __extctx: *mut ::c_void,
pub __extctx_magic: ::c_int,
pub __pad: [::c_int; 1],
pub __extctx: *mut c_void,
pub __extctx_magic: c_int,
pub __pad: [c_int; 1],
}
pub struct mcontext_t {
pub gpr: [::c_ulonglong; 32],
pub msr: ::c_ulonglong,
pub iar: ::c_ulonglong,
pub lr: ::c_ulonglong,
pub ctr: ::c_ulonglong,
pub cr: ::c_uint,
pub xer: ::c_uint,
pub fpscr: ::c_uint,
pub fpscrx: ::c_uint,
pub except: [::c_ulonglong; 1],
pub gpr: [c_ulonglong; 32],
pub msr: c_ulonglong,
pub iar: c_ulonglong,
pub lr: c_ulonglong,
pub ctr: c_ulonglong,
pub cr: c_uint,
pub xer: c_uint,
pub fpscr: c_uint,
pub fpscrx: c_uint,
pub except: [c_ulonglong; 1],
// Should be array of double type
pub fpr: [::uint64_t; 32],
pub fpeu: ::c_char,
pub fpinfo: ::c_char,
pub fpscr24_31: ::c_char,
pub pad: [::c_char; 1],
pub excp_type: ::c_int,
pub fpr: [crate::uint64_t; 32],
pub fpeu: c_char,
pub fpinfo: c_char,
pub fpscr24_31: c_char,
pub pad: [c_char; 1],
pub excp_type: c_int,
}
pub struct utmpx {
pub ut_user: [::c_char; 256],
pub ut_id: [::c_char; 14],
pub ut_line: [::c_char; 64],
pub ut_pid: ::pid_t,
pub ut_type: ::c_short,
pub ut_tv: ::timeval,
pub ut_host: [::c_char; 256],
pub __dbl_word_pad: ::c_int,
pub __reservedA: [::c_int; 2],
pub __reservedV: [::c_int; 6],
pub ut_user: [c_char; 256],
pub ut_id: [c_char; 14],
pub ut_line: [c_char; 64],
pub ut_pid: crate::pid_t,
pub ut_type: c_short,
pub ut_tv: crate::timeval,
pub ut_host: [c_char; 256],
pub __dbl_word_pad: c_int,
pub __reservedA: [c_int; 2],
pub __reservedV: [c_int; 6],
}
pub struct pthread_spinlock_t {
pub __sp_word: [::c_long; 3],
pub __sp_word: [c_long; 3],
}
pub struct pthread_barrier_t {
pub __br_word: [::c_long; 5],
pub __br_word: [c_long; 5],
}
pub struct msqid_ds {
pub msg_perm: ::ipc_perm,
pub msg_first: ::c_uint,
pub msg_last: ::c_uint,
pub msg_cbytes: ::c_uint,
pub msg_qnum: ::c_uint,
pub msg_qbytes: ::c_ulong,
pub msg_lspid: ::pid_t,
pub msg_lrpid: ::pid_t,
pub msg_stime: ::time_t,
pub msg_rtime: ::time_t,
pub msg_ctime: ::time_t,
pub msg_rwait: ::c_int,
pub msg_wwait: ::c_int,
pub msg_reqevents: ::c_ushort,
pub msg_perm: crate::ipc_perm,
pub msg_first: c_uint,
pub msg_last: c_uint,
pub msg_cbytes: c_uint,
pub msg_qnum: c_uint,
pub msg_qbytes: c_ulong,
pub msg_lspid: crate::pid_t,
pub msg_lrpid: crate::pid_t,
pub msg_stime: crate::time_t,
pub msg_rtime: crate::time_t,
pub msg_ctime: crate::time_t,
pub msg_rwait: c_int,
pub msg_wwait: c_int,
pub msg_reqevents: c_ushort,
}
}
s_no_extra_traits! {
pub struct siginfo_t {
pub si_signo: ::c_int,
pub si_errno: ::c_int,
pub si_code: ::c_int,
pub si_pid: ::pid_t,
pub si_uid: ::uid_t,
pub si_status: ::c_int,
pub si_addr: *mut ::c_void,
pub si_band: ::c_long,
pub si_value: ::sigval,
pub __si_flags: ::c_int,
pub __pad: [::c_int; 3],
pub si_signo: c_int,
pub si_errno: c_int,
pub si_code: c_int,
pub si_pid: crate::pid_t,
pub si_uid: crate::uid_t,
pub si_status: c_int,
pub si_addr: *mut c_void,
pub si_band: c_long,
pub si_value: crate::sigval,
pub __si_flags: c_int,
pub __pad: [c_int; 3],
}
#[cfg(libc_union)]
pub union _kernel_simple_lock {
pub _slock: ::c_long,
pub _slock: c_long,
// Should be pointer to 'lock_data_instrumented'
pub _slockp: *mut ::c_void,
pub _slockp: *mut c_void,
}
pub struct fileops_t {
pub fo_rw: extern fn(file: *mut file, rw: ::uio_rw, io: *mut ::c_void, ext: ::c_long,
secattr: *mut ::c_void) -> ::c_int,
pub fo_ioctl: extern fn(file: *mut file, a: ::c_long, b: ::caddr_t, c: ::c_long,
d: ::c_long) -> ::c_int,
pub fo_select: extern fn(file: *mut file, a: ::c_int, b: *mut ::c_ushort,
c: extern fn()) -> ::c_int,
pub fo_close: extern fn(file: *mut file) -> ::c_int,
pub fo_fstat: extern fn(file: *mut file, sstat: *mut ::stat) -> ::c_int,
pub fo_rw: extern "C" fn(
file: *mut file,
rw: crate::uio_rw,
io: *mut c_void,
ext: c_long,
secattr: *mut c_void,
) -> c_int,
pub fo_ioctl: extern "C" fn(
file: *mut file,
a: c_long,
b: crate::caddr_t,
c: c_long,
d: c_long,
) -> c_int,
pub fo_select:
extern "C" fn(file: *mut file, a: c_int, b: *mut c_ushort, c: extern "C" fn()) -> c_int,
pub fo_close: extern "C" fn(file: *mut file) -> c_int,
pub fo_fstat: extern "C" fn(file: *mut file, sstat: *mut crate::stat) -> c_int,
}
pub struct file {
pub f_flag: ::c_long,
pub f_count: ::c_int,
pub f_options: ::c_short,
pub f_type: ::c_short,
pub f_flag: c_long,
pub f_count: c_int,
pub f_options: c_short,
pub f_type: c_short,
// Should be pointer to 'vnode'
pub f_data: *mut ::c_void,
pub f_offset: ::c_longlong,
pub f_dir_off: ::c_long,
pub f_data: *mut c_void,
pub f_offset: c_longlong,
pub f_dir_off: c_long,
// Should be pointer to 'cred'
pub f_cred: *mut ::c_void,
#[cfg(libc_union)]
pub f_cred: *mut c_void,
pub f_lock: _kernel_simple_lock,
#[cfg(libc_union)]
pub f_offset_lock: _kernel_simple_lock,
pub f_vinfo: ::caddr_t,
pub f_vinfo: crate::caddr_t,
pub f_ops: *mut fileops_t,
pub f_parentp: ::caddr_t,
pub f_fnamep: ::caddr_t,
pub f_fdata: [::c_char; 160],
pub f_parentp: crate::caddr_t,
pub f_fnamep: crate::caddr_t,
pub f_fdata: [c_char; 160],
}
#[cfg(libc_union)]
pub union __ld_info_file {
pub _ldinfo_fd: ::c_int,
pub _ldinfo_fd: c_int,
pub _ldinfo_fp: *mut file,
pub _core_offset: ::c_long,
pub _core_offset: c_long,
}
pub struct ld_info {
pub ldinfo_next: ::c_uint,
pub ldinfo_flags: ::c_uint,
#[cfg(libc_union)]
pub ldinfo_next: c_uint,
pub ldinfo_flags: c_uint,
pub _file: __ld_info_file,
pub ldinfo_textorg: *mut ::c_void,
pub ldinfo_textsize: ::c_ulong,
pub ldinfo_dataorg: *mut ::c_void,
pub ldinfo_datasize: ::c_ulong,
pub ldinfo_filename: [::c_char; 2],
pub ldinfo_textorg: *mut c_void,
pub ldinfo_textsize: c_ulong,
pub ldinfo_dataorg: *mut c_void,
pub ldinfo_datasize: c_ulong,
pub ldinfo_filename: [c_char; 2],
}
#[cfg(libc_union)]
pub union __pollfd_ext_u {
pub addr: *mut ::c_void,
pub addr: *mut c_void,
pub data32: u32,
pub data: u64,
}
pub struct pollfd_ext {
pub fd: ::c_int,
pub events: ::c_ushort,
pub revents: ::c_ushort,
#[cfg(libc_union)]
pub fd: c_int,
pub events: c_ushort,
pub revents: c_ushort,
pub data: __pollfd_ext_u,
}
}
impl siginfo_t {
pub unsafe fn si_addr(&self) -> *mut ::c_void {
pub unsafe fn si_addr(&self) -> *mut c_void {
self.si_addr
}
pub unsafe fn si_value(&self) -> ::sigval {
pub unsafe fn si_value(&self) -> crate::sigval {
self.si_value
}
pub unsafe fn si_pid(&self) -> ::pid_t {
pub unsafe fn si_pid(&self) -> crate::pid_t {
self.si_pid
}
pub unsafe fn si_uid(&self) -> ::uid_t {
pub unsafe fn si_uid(&self) -> crate::uid_t {
self.si_uid
}
pub unsafe fn si_status(&self) -> ::c_int {
pub unsafe fn si_status(&self) -> c_int {
self.si_status
}
}
@@ -300,10 +303,6 @@ cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for siginfo_t {
fn eq(&self, other: &siginfo_t) -> bool {
#[cfg(libc_union)]
let value_eq = self.si_value == other.si_value;
#[cfg(not(libc_union))]
let value_eq = true;
self.si_signo == other.si_signo
&& self.si_errno == other.si_errno
&& self.si_code == other.si_code
@@ -313,29 +312,28 @@ cfg_if! {
&& self.si_addr == other.si_addr
&& self.si_band == other.si_band
&& self.__si_flags == other.__si_flags
&& value_eq
&& self.si_value == other.si_value
}
}
impl Eq for siginfo_t {}
impl ::fmt::Debug for siginfo_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let mut struct_formatter = f.debug_struct("siginfo_t");
struct_formatter.field("si_signo", &self.si_signo);
struct_formatter.field("si_errno", &self.si_errno);
struct_formatter.field("si_code", &self.si_code);
struct_formatter.field("si_pid", &self.si_pid);
struct_formatter.field("si_uid", &self.si_uid);
struct_formatter.field("si_status", &self.si_status);
struct_formatter.field("si_addr", &self.si_addr);
struct_formatter.field("si_band", &self.si_band);
#[cfg(libc_union)]
struct_formatter.field("si_value", &self.si_value);
struct_formatter.field("__si_flags", &self.__si_flags);
struct_formatter.finish()
impl fmt::Debug for siginfo_t {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("siginfo_t")
.field("si_signo", &self.si_signo)
.field("si_errno", &self.si_errno)
.field("si_code", &self.si_code)
.field("si_pid", &self.si_pid)
.field("si_uid", &self.si_uid)
.field("si_status", &self.si_status)
.field("si_addr", &self.si_addr)
.field("si_band", &self.si_band)
.field("si_value", &self.si_value)
.field("__si_flags", &self.__si_flags)
.finish()
}
}
impl ::hash::Hash for siginfo_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for siginfo_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.si_signo.hash(state);
self.si_errno.hash(state);
self.si_code.hash(state);
@@ -344,35 +342,19 @@ cfg_if! {
self.si_status.hash(state);
self.si_addr.hash(state);
self.si_band.hash(state);
#[cfg(libc_union)]
self.si_value.hash(state);
self.__si_flags.hash(state);
}
}
#[cfg(libc_union)]
impl PartialEq for _kernel_simple_lock {
fn eq(&self, other: &_kernel_simple_lock) -> bool {
unsafe {
self._slock == other._slock
&& self._slockp == other._slockp
unsafe { self._slock == other._slock && self._slockp == other._slockp }
}
}
}
#[cfg(libc_union)]
impl Eq for _kernel_simple_lock {}
#[cfg(libc_union)]
impl ::fmt::Debug for _kernel_simple_lock {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("_kernel_simple_lock")
.field("_slock", unsafe { &self._slock })
.field("_slockp", unsafe { &self._slockp })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for _kernel_simple_lock {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for _kernel_simple_lock {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
unsafe {
self._slock.hash(state);
self._slockp.hash(state);
@@ -390,19 +372,19 @@ cfg_if! {
}
}
impl Eq for fileops_t {}
impl ::fmt::Debug for fileops_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let mut struct_formatter = f.debug_struct("fileops_t");
struct_formatter.field("fo_rw", &self.fo_rw);
struct_formatter.field("fo_ioctl", &self.fo_ioctl);
struct_formatter.field("fo_select", &self.fo_select);
struct_formatter.field("fo_close", &self.fo_close);
struct_formatter.field("fo_fstat", &self.fo_fstat);
struct_formatter.finish()
impl fmt::Debug for fileops_t {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("fileops_t")
.field("fo_rw", &self.fo_rw)
.field("fo_ioctl", &self.fo_ioctl)
.field("fo_select", &self.fo_select)
.field("fo_close", &self.fo_close)
.field("fo_fstat", &self.fo_fstat)
.finish()
}
}
impl ::hash::Hash for fileops_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for fileops_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fo_rw.hash(state);
self.fo_ioctl.hash(state);
self.fo_select.hash(state);
@@ -413,11 +395,6 @@ cfg_if! {
impl PartialEq for file {
fn eq(&self, other: &file) -> bool {
#[cfg(libc_union)]
let lock_eq = self.f_lock == other.f_lock
&& self.f_offset_lock == other.f_offset_lock;
#[cfg(not(libc_union))]
let lock_eq = true;
self.f_flag == other.f_flag
&& self.f_count == other.f_count
&& self.f_options == other.f_options
@@ -431,35 +408,34 @@ cfg_if! {
&& self.f_parentp == other.f_parentp
&& self.f_fnamep == other.f_fnamep
&& self.f_fdata == other.f_fdata
&& lock_eq
&& self.f_lock == other.f_lock
&& self.f_offset_lock == other.f_offset_lock
}
}
impl Eq for file {}
impl ::fmt::Debug for file {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let mut struct_formatter = f.debug_struct("file");
struct_formatter.field("f_flag", &self.f_flag);
struct_formatter.field("f_count", &self.f_count);
struct_formatter.field("f_options", &self.f_options);
struct_formatter.field("f_type", &self.f_type);
struct_formatter.field("f_data", &self.f_data);
struct_formatter.field("f_offset", &self.f_offset);
struct_formatter.field("f_dir_off", &self.f_dir_off);
struct_formatter.field("f_cred", &self.f_cred);
#[cfg(libc_union)]
struct_formatter.field("f_lock", &self.f_lock);
#[cfg(libc_union)]
struct_formatter.field("f_offset_lock", &self.f_offset_lock);
struct_formatter.field("f_vinfo", &self.f_vinfo);
struct_formatter.field("f_ops", &self.f_ops);
struct_formatter.field("f_parentp", &self.f_parentp);
struct_formatter.field("f_fnamep", &self.f_fnamep);
struct_formatter.field("f_fdata", &self.f_fdata);
struct_formatter.finish()
impl fmt::Debug for file {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("file")
.field("f_flag", &self.f_flag)
.field("f_count", &self.f_count)
.field("f_options", &self.f_options)
.field("f_type", &self.f_type)
.field("f_data", &self.f_data)
.field("f_offset", &self.f_offset)
.field("f_dir_off", &self.f_dir_off)
.field("f_cred", &self.f_cred)
.field("f_lock", &self.f_lock)
.field("f_offset_lock", &self.f_offset_lock)
.field("f_vinfo", &self.f_vinfo)
.field("f_ops", &self.f_ops)
.field("f_parentp", &self.f_parentp)
.field("f_fnamep", &self.f_fnamep)
.field("f_fdata", &self.f_fdata)
.finish()
}
}
impl ::hash::Hash for file {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for file {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_flag.hash(state);
self.f_count.hash(state);
self.f_options.hash(state);
@@ -468,9 +444,7 @@ cfg_if! {
self.f_offset.hash(state);
self.f_dir_off.hash(state);
self.f_cred.hash(state);
#[cfg(libc_union)]
self.f_lock.hash(state);
#[cfg(libc_union)]
self.f_offset_lock.hash(state);
self.f_vinfo.hash(state);
self.f_ops.hash(state);
@@ -480,7 +454,6 @@ cfg_if! {
}
}
#[cfg(libc_union)]
impl PartialEq for __ld_info_file {
fn eq(&self, other: &__ld_info_file) -> bool {
unsafe {
@@ -490,21 +463,9 @@ cfg_if! {
}
}
}
#[cfg(libc_union)]
impl Eq for __ld_info_file {}
#[cfg(libc_union)]
impl ::fmt::Debug for __ld_info_file {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("__ld_info_file")
.field("_ldinfo_fd", unsafe { &self._ldinfo_fd })
.field("_ldinfo_fp", unsafe { &self._ldinfo_fp })
.field("_core_offset", unsafe { &self._core_offset })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for __ld_info_file {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for __ld_info_file {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
unsafe {
self._ldinfo_fd.hash(state);
self._ldinfo_fp.hash(state);
@@ -515,10 +476,6 @@ cfg_if! {
impl PartialEq for ld_info {
fn eq(&self, other: &ld_info) -> bool {
#[cfg(libc_union)]
let file_eq = self._file == other._file;
#[cfg(not(libc_union))]
let file_eq = true;
self.ldinfo_next == other.ldinfo_next
&& self.ldinfo_flags == other.ldinfo_flags
&& self.ldinfo_textorg == other.ldinfo_textorg
@@ -526,27 +483,26 @@ cfg_if! {
&& self.ldinfo_dataorg == other.ldinfo_dataorg
&& self.ldinfo_datasize == other.ldinfo_datasize
&& self.ldinfo_filename == other.ldinfo_filename
&& file_eq
&& self._file == other._file
}
}
impl Eq for ld_info {}
impl ::fmt::Debug for ld_info {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let mut struct_formatter = f.debug_struct("ld_info");
struct_formatter.field("ldinfo_next", &self.ldinfo_next);
struct_formatter.field("ldinfo_flags", &self.ldinfo_flags);
struct_formatter.field("ldinfo_textorg", &self.ldinfo_textorg);
struct_formatter.field("ldinfo_textsize", &self.ldinfo_textsize);
struct_formatter.field("ldinfo_dataorg", &self.ldinfo_dataorg);
struct_formatter.field("ldinfo_datasize", &self.ldinfo_datasize);
struct_formatter.field("ldinfo_filename", &self.ldinfo_filename);
#[cfg(libc_union)]
struct_formatter.field("_file", &self._file);
struct_formatter.finish()
impl fmt::Debug for ld_info {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("ld_info")
.field("ldinfo_next", &self.ldinfo_next)
.field("ldinfo_flags", &self.ldinfo_flags)
.field("ldinfo_textorg", &self.ldinfo_textorg)
.field("ldinfo_textsize", &self.ldinfo_textsize)
.field("ldinfo_dataorg", &self.ldinfo_dataorg)
.field("ldinfo_datasize", &self.ldinfo_datasize)
.field("ldinfo_filename", &self.ldinfo_filename)
.field("_file", &self._file)
.finish()
}
}
impl ::hash::Hash for ld_info {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for ld_info {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.ldinfo_next.hash(state);
self.ldinfo_flags.hash(state);
self.ldinfo_textorg.hash(state);
@@ -554,12 +510,10 @@ cfg_if! {
self.ldinfo_dataorg.hash(state);
self.ldinfo_datasize.hash(state);
self.ldinfo_filename.hash(state);
#[cfg(libc_union)]
self._file.hash(state);
}
}
#[cfg(libc_union)]
impl PartialEq for __pollfd_ext_u {
fn eq(&self, other: &__pollfd_ext_u) -> bool {
unsafe {
@@ -569,21 +523,9 @@ cfg_if! {
}
}
}
#[cfg(libc_union)]
impl Eq for __pollfd_ext_u {}
#[cfg(libc_union)]
impl ::fmt::Debug for __pollfd_ext_u {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
f.debug_struct("__pollfd_ext_u")
.field("addr", unsafe { &self.addr })
.field("data32", unsafe { &self.data32 })
.field("data", unsafe { &self.data })
.finish()
}
}
#[cfg(libc_union)]
impl ::hash::Hash for __pollfd_ext_u {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for __pollfd_ext_u {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
unsafe {
self.addr.hash(state);
self.data.hash(state);
@@ -594,34 +536,28 @@ cfg_if! {
impl PartialEq for pollfd_ext {
fn eq(&self, other: &pollfd_ext) -> bool {
#[cfg(libc_union)]
let data_eq = self.data == other.data;
#[cfg(not(libc_union))]
let data_eq = true;
self.fd == other.fd
&& self.events == other.events
&& self.revents == other.revents
&& data_eq
&& self.data == other.data
}
}
impl Eq for pollfd_ext {}
impl ::fmt::Debug for pollfd_ext {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let mut struct_formatter = f.debug_struct("pollfd_ext");
struct_formatter.field("fd", &self.fd);
struct_formatter.field("events", &self.events);
struct_formatter.field("revents", &self.revents);
#[cfg(libc_union)]
struct_formatter.field("data", &self.data);
struct_formatter.finish()
impl fmt::Debug for pollfd_ext {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
f.debug_struct("pollfd_ext")
.field("fd", &self.fd)
.field("events", &self.events)
.field("revents", &self.revents)
.field("data", &self.data)
.finish()
}
}
impl ::hash::Hash for pollfd_ext {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for pollfd_ext {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fd.hash(state);
self.events.hash(state);
self.revents.hash(state);
#[cfg(libc_union)]
self.data.hash(state);
}
}
@@ -637,8 +573,8 @@ pub const PTHREAD_COND_INITIALIZER: pthread_cond_t = pthread_cond_t {
pub const PTHREAD_RWLOCK_INITIALIZER: pthread_rwlock_t = pthread_rwlock_t {
__rw_word: [2, 0, 0, 0, 0, 0, 0, 0, 0, 0],
};
pub const RLIM_INFINITY: ::c_ulong = 0x7fffffffffffffff;
pub const RLIM_INFINITY: c_ulong = 0x7fffffffffffffff;
extern "C" {
pub fn getsystemcfg(label: ::c_int) -> ::c_ulong;
pub fn getsystemcfg(label: c_int) -> c_ulong;
}

View File

@@ -1,14 +0,0 @@
s! {
#[repr(align(4))]
pub struct in6_addr {
pub s6_addr: [u8; 16],
}
}
pub const IN6ADDR_LOOPBACK_INIT: in6_addr = in6_addr {
s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1],
};
pub const IN6ADDR_ANY_INIT: in6_addr = in6_addr {
s6_addr: [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
};

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,19 +1,19 @@
//! 32-bit specific Apple (ios/darwin) definitions
pub type c_long = i32;
pub type c_ulong = u32;
pub type boolean_t = ::c_int;
use crate::prelude::*;
pub type boolean_t = c_int;
s! {
pub struct if_data {
pub ifi_type: ::c_uchar,
pub ifi_typelen: ::c_uchar,
pub ifi_physical: ::c_uchar,
pub ifi_addrlen: ::c_uchar,
pub ifi_hdrlen: ::c_uchar,
pub ifi_recvquota: ::c_uchar,
pub ifi_xmitquota: ::c_uchar,
pub ifi_unused1: ::c_uchar,
pub ifi_type: c_uchar,
pub ifi_typelen: c_uchar,
pub ifi_physical: c_uchar,
pub ifi_addrlen: c_uchar,
pub ifi_hdrlen: c_uchar,
pub ifi_recvquota: c_uchar,
pub ifi_xmitquota: c_uchar,
pub ifi_unused1: c_uchar,
pub ifi_mtu: u32,
pub ifi_metric: u32,
pub ifi_baudrate: u32,
@@ -30,7 +30,7 @@ s! {
pub ifi_noproto: u32,
pub ifi_recvtiming: u32,
pub ifi_xmittiming: u32,
pub ifi_lastchange: ::timeval,
pub ifi_lastchange: crate::timeval,
pub ifi_unused2: u32,
pub ifi_hwassist: u32,
pub ifi_reserved1: u32,
@@ -38,26 +38,32 @@ s! {
}
pub struct bpf_hdr {
pub bh_tstamp: ::timeval,
pub bh_tstamp: crate::timeval,
pub bh_caplen: u32,
pub bh_datalen: u32,
pub bh_hdrlen: ::c_ushort,
pub bh_hdrlen: c_ushort,
}
pub struct malloc_zone_t {
__private: [::uintptr_t; 18], // FIXME: keeping private for now
__private: [crate::uintptr_t; 18], // FIXME(macos): keeping private for now
}
}
s_no_extra_traits! {
pub struct pthread_attr_t {
__sig: c_long,
__opaque: [::c_char; 36]
__opaque: [c_char; 36],
}
pub struct pthread_once_t {
__sig: c_long,
__opaque: [::c_char; ::__PTHREAD_ONCE_SIZE__],
__opaque: [c_char; crate::__PTHREAD_ONCE_SIZE__],
}
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2],
}
}
@@ -66,23 +72,24 @@ cfg_if! {
impl PartialEq for pthread_attr_t {
fn eq(&self, other: &pthread_attr_t) -> bool {
self.__sig == other.__sig
&& self.__opaque
&& self
.__opaque
.iter()
.zip(other.__opaque.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for pthread_attr_t {}
impl ::fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_attr_t")
.field("__sig", &self.__sig)
// FIXME: .field("__opaque", &self.__opaque)
// FIXME(debug): .field("__opaque", &self.__opaque)
.finish()
}
}
impl ::hash::Hash for pthread_attr_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for pthread_attr_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state);
self.__opaque.hash(state);
}
@@ -90,22 +97,23 @@ cfg_if! {
impl PartialEq for pthread_once_t {
fn eq(&self, other: &pthread_once_t) -> bool {
self.__sig == other.__sig
&& self.__opaque
&& self
.__opaque
.iter()
.zip(other.__opaque.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for pthread_once_t {}
impl ::fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_once_t")
.field("__sig", &self.__sig)
.finish()
}
}
impl ::hash::Hash for pthread_once_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for pthread_once_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state);
self.__opaque.hash(state);
}
@@ -115,7 +123,7 @@ cfg_if! {
#[doc(hidden)]
#[deprecated(since = "0.2.55")]
pub const NET_RT_MAXID: ::c_int = 10;
pub const NET_RT_MAXID: c_int = 10;
pub const __PTHREAD_MUTEX_SIZE__: usize = 40;
pub const __PTHREAD_COND_SIZE__: usize = 24;
@@ -124,31 +132,20 @@ pub const __PTHREAD_ONCE_SIZE__: usize = 4;
pub const __PTHREAD_RWLOCK_SIZE__: usize = 124;
pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 12;
pub const TIOCTIMESTAMP: ::c_ulong = 0x40087459;
pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40087458;
pub const TIOCTIMESTAMP: c_ulong = 0x40087459;
pub const TIOCDCDTIMESTAMP: c_ulong = 0x40087458;
pub const BIOCSETF: ::c_ulong = 0x80084267;
pub const BIOCSRTIMEOUT: ::c_ulong = 0x8008426d;
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4008426e;
pub const BIOCSETFNR: ::c_ulong = 0x8008427e;
pub const BIOCSETF: c_ulong = 0x80084267;
pub const BIOCSRTIMEOUT: c_ulong = 0x8008426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4008426e;
pub const BIOCSETFNR: c_ulong = 0x8008427e;
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t {
pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t {
__sig: _PTHREAD_ONCE_SIG_INIT,
__opaque: [0; 4],
};
extern "C" {
pub fn exchangedata(
path1: *const ::c_char,
path2: *const ::c_char,
options: ::c_ulong,
) -> ::c_int;
}
cfg_if! {
if #[cfg(libc_align)] {
mod align;
pub use self::align::*;
}
pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_ulong) -> c_int;
}

View File

@@ -1,55 +0,0 @@
pub type mcontext_t = *mut __darwin_mcontext64;
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
pub struct max_align_t {
priv_: f64
}
}
s! {
pub struct ucontext_t {
pub uc_onstack: ::c_int,
pub uc_sigmask: ::sigset_t,
pub uc_stack: ::stack_t,
pub uc_link: *mut ::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
}
pub struct __darwin_mcontext64 {
pub __es: __darwin_arm_exception_state64,
pub __ss: __darwin_arm_thread_state64,
pub __ns: __darwin_arm_neon_state64,
}
pub struct __darwin_arm_exception_state64 {
pub __far: u64,
pub __esr: u32,
pub __exception: u32,
}
pub struct __darwin_arm_thread_state64 {
pub __x: [u64; 29],
pub __fp: u64,
pub __lr: u64,
pub __sp: u64,
pub __pc: u64,
pub __cpsr: u32,
pub __pad: u32,
}
// This type natively uses a uint128, but for a while we hacked
// it in with repr(align) and `[u64; 2]`. uint128 isn't available
// all the way back to our earliest supported versions so we
// preserver the old shim.
#[cfg_attr(not(libc_int128), repr(align(16)))]
pub struct __darwin_arm_neon_state64 {
#[cfg(libc_int128)]
pub __v: [::__uint128_t; 32],
#[cfg(not(libc_int128))]
pub __v: [[u64; 2]; 32],
pub __fpsr: u32,
pub __fpcr: u32,
}
}

View File

@@ -1,14 +1,54 @@
pub type boolean_t = ::c_int;
use crate::prelude::*;
pub type boolean_t = c_int;
pub type mcontext_t = *mut __darwin_mcontext64;
s! {
pub struct malloc_zone_t {
__private: [::uintptr_t; 18], // FIXME: needs arm64 auth pointers support
__private: [crate::uintptr_t; 18], // FIXME(macos): needs arm64 auth pointers support
}
pub struct ucontext_t {
pub uc_onstack: c_int,
pub uc_sigmask: crate::sigset_t,
pub uc_stack: crate::stack_t,
pub uc_link: *mut crate::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
}
pub struct __darwin_mcontext64 {
pub __es: __darwin_arm_exception_state64,
pub __ss: __darwin_arm_thread_state64,
pub __ns: __darwin_arm_neon_state64,
}
pub struct __darwin_arm_exception_state64 {
pub __far: u64,
pub __esr: u32,
pub __exception: u32,
}
pub struct __darwin_arm_thread_state64 {
pub __x: [u64; 29],
pub __fp: u64,
pub __lr: u64,
pub __sp: u64,
pub __pc: u64,
pub __cpsr: u32,
pub __pad: u32,
}
pub struct __darwin_arm_neon_state64 {
pub __v: [crate::__uint128_t; 32],
pub __fpsr: u32,
pub __fpcr: u32,
}
}
cfg_if! {
if #[cfg(libc_align)] {
mod align;
pub use self::align::*;
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
pub struct max_align_t {
priv_: f64,
}
}

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,7 +1,6 @@
//! 64-bit specific Apple (ios/darwin) definitions
pub type c_long = i64;
pub type c_ulong = u64;
use crate::prelude::*;
s! {
pub struct timeval32 {
@@ -10,14 +9,14 @@ s! {
}
pub struct if_data {
pub ifi_type: ::c_uchar,
pub ifi_typelen: ::c_uchar,
pub ifi_physical: ::c_uchar,
pub ifi_addrlen: ::c_uchar,
pub ifi_hdrlen: ::c_uchar,
pub ifi_recvquota: ::c_uchar,
pub ifi_xmitquota: ::c_uchar,
pub ifi_unused1: ::c_uchar,
pub ifi_type: c_uchar,
pub ifi_typelen: c_uchar,
pub ifi_physical: c_uchar,
pub ifi_addrlen: c_uchar,
pub ifi_hdrlen: c_uchar,
pub ifi_recvquota: c_uchar,
pub ifi_xmitquota: c_uchar,
pub ifi_unused1: c_uchar,
pub ifi_mtu: u32,
pub ifi_metric: u32,
pub ifi_baudrate: u32,
@@ -42,22 +41,22 @@ s! {
}
pub struct bpf_hdr {
pub bh_tstamp: ::timeval32,
pub bh_tstamp: crate::timeval32,
pub bh_caplen: u32,
pub bh_datalen: u32,
pub bh_hdrlen: ::c_ushort,
pub bh_hdrlen: c_ushort,
}
}
s_no_extra_traits! {
pub struct pthread_attr_t {
__sig: c_long,
__opaque: [::c_char; 56]
__opaque: [c_char; 56],
}
pub struct pthread_once_t {
__sig: c_long,
__opaque: [::c_char; __PTHREAD_ONCE_SIZE__],
__opaque: [c_char; __PTHREAD_ONCE_SIZE__],
}
}
@@ -66,23 +65,24 @@ cfg_if! {
impl PartialEq for pthread_attr_t {
fn eq(&self, other: &pthread_attr_t) -> bool {
self.__sig == other.__sig
&& self.__opaque
&& self
.__opaque
.iter()
.zip(other.__opaque.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for pthread_attr_t {}
impl ::fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for pthread_attr_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_attr_t")
.field("__sig", &self.__sig)
// FIXME: .field("__opaque", &self.__opaque)
// FIXME(debug): .field("__opaque", &self.__opaque)
.finish()
}
}
impl ::hash::Hash for pthread_attr_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for pthread_attr_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state);
self.__opaque.hash(state);
}
@@ -90,22 +90,23 @@ cfg_if! {
impl PartialEq for pthread_once_t {
fn eq(&self, other: &pthread_once_t) -> bool {
self.__sig == other.__sig
&& self.__opaque
&& self
.__opaque
.iter()
.zip(other.__opaque.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for pthread_once_t {}
impl ::fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for pthread_once_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("pthread_once_t")
.field("__sig", &self.__sig)
.finish()
}
}
impl ::hash::Hash for pthread_once_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for pthread_once_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__sig.hash(state);
self.__opaque.hash(state);
}
@@ -115,7 +116,7 @@ cfg_if! {
#[doc(hidden)]
#[deprecated(since = "0.2.55")]
pub const NET_RT_MAXID: ::c_int = 11;
pub const NET_RT_MAXID: c_int = 11;
pub const __PTHREAD_MUTEX_SIZE__: usize = 56;
pub const __PTHREAD_COND_SIZE__: usize = 40;
@@ -124,26 +125,22 @@ pub const __PTHREAD_ONCE_SIZE__: usize = 8;
pub const __PTHREAD_RWLOCK_SIZE__: usize = 192;
pub const __PTHREAD_RWLOCKATTR_SIZE__: usize = 16;
pub const TIOCTIMESTAMP: ::c_ulong = 0x40107459;
pub const TIOCDCDTIMESTAMP: ::c_ulong = 0x40107458;
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;
pub const TIOCDCDTIMESTAMP: c_ulong = 0x40107458;
pub const BIOCSETF: ::c_ulong = 0x80104267;
pub const BIOCSRTIMEOUT: ::c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: ::c_ulong = 0x4010426e;
pub const BIOCSETFNR: ::c_ulong = 0x8010427e;
pub const BIOCSETF: c_ulong = 0x80104267;
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const BIOCSETFNR: c_ulong = 0x8010427e;
const _PTHREAD_ONCE_SIG_INIT: c_long = 0x30B1BCBA;
pub const PTHREAD_ONCE_INIT: ::pthread_once_t = ::pthread_once_t {
pub const PTHREAD_ONCE_INIT: crate::pthread_once_t = crate::pthread_once_t {
__sig: _PTHREAD_ONCE_SIG_INIT,
__opaque: [0; 8],
};
extern "C" {
pub fn exchangedata(
path1: *const ::c_char,
path2: *const ::c_char,
options: ::c_uint,
) -> ::c_int;
pub fn exchangedata(path1: *const c_char, path2: *const c_char, options: c_uint) -> c_int;
}
cfg_if! {

View File

@@ -1,7 +0,0 @@
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2]
}
}

View File

@@ -1,12 +1,14 @@
pub type boolean_t = ::c_uint;
use crate::prelude::*;
pub type boolean_t = c_uint;
pub type mcontext_t = *mut __darwin_mcontext64;
s! {
pub struct ucontext_t {
pub uc_onstack: ::c_int,
pub uc_sigmask: ::sigset_t,
pub uc_stack: ::stack_t,
pub uc_link: *mut ::ucontext_t,
pub uc_onstack: c_int,
pub uc_sigmask: crate::sigset_t,
pub uc_stack: crate::stack_t,
pub uc_link: *mut crate::ucontext_t,
pub uc_mcsize: usize,
pub uc_mcontext: mcontext_t,
}
@@ -49,9 +51,9 @@ s! {
}
pub struct __darwin_x86_float_state64 {
pub __fpu_reserved: [::c_int; 2],
__fpu_fcw: ::c_short,
__fpu_fsw: ::c_short,
pub __fpu_reserved: [c_int; 2],
__fpu_fcw: c_short,
__fpu_fsw: c_short,
pub __fpu_ftw: u8,
pub __fpu_rsrv1: u8,
pub __fpu_fop: u16,
@@ -91,90 +93,86 @@ s! {
// allows us to auto-implement traits for it since the length of the
// array is less than 32
__fpu_rsrv4: [u32; 24],
pub __fpu_reserved1: ::c_int,
pub __fpu_reserved1: c_int,
}
pub struct __darwin_mmst_reg {
pub __mmst_reg: [::c_char; 10],
pub __mmst_rsrv: [::c_char; 6],
pub __mmst_reg: [c_char; 10],
pub __mmst_rsrv: [c_char; 6],
}
pub struct __darwin_xmm_reg {
pub __xmm_reg: [::c_char; 16],
pub __xmm_reg: [c_char; 16],
}
pub struct malloc_introspection_t {
_private: [::uintptr_t; 16], // FIXME: keeping private for now
_private: [crate::uintptr_t; 16], // FIXME(macos): keeping private for now
}
pub struct malloc_zone_t {
_reserved1: *mut ::c_void,
_reserved2: *mut ::c_void,
pub size: ::Option<unsafe extern "C" fn(
_reserved1: *mut c_void,
_reserved2: *mut c_void,
pub size:
Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *const c_void) -> size_t>,
pub malloc:
Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, size: size_t) -> *mut c_void>,
pub calloc: Option<
unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *const ::c_void,
) -> ::size_t>,
pub malloc: ::Option<unsafe extern "C" fn(
num_items: size_t,
size: size_t,
) -> *mut c_void,
>,
pub valloc:
Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, size: size_t) -> *mut c_void>,
pub free: Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void)>,
pub realloc: Option<
unsafe extern "C" fn(
zone: *mut malloc_zone_t,
size: ::size_t,
) -> *mut ::c_void>,
pub calloc: ::Option<unsafe extern "C" fn(
ptr: *mut c_void,
size: size_t,
) -> *mut c_void,
>,
pub destroy: Option<unsafe extern "C" fn(zone: *mut malloc_zone_t)>,
pub zone_name: *const c_char,
pub batch_malloc: Option<
unsafe extern "C" fn(
zone: *mut malloc_zone_t,
num_items: ::size_t,
size: ::size_t,
) -> *mut ::c_void>,
pub valloc: ::Option<unsafe extern "C" fn(
size: size_t,
results: *mut *mut c_void,
num_requested: c_uint,
) -> c_uint,
>,
pub batch_free: Option<
unsafe extern "C" fn(
zone: *mut malloc_zone_t,
size: ::size_t
) -> *mut ::c_void>,
pub free: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *mut ::c_void
)>,
pub realloc: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *mut ::c_void,
size: ::size_t,
) -> *mut ::c_void>,
pub destroy: ::Option<unsafe extern "C" fn(zone: *mut malloc_zone_t)>,
pub zone_name: *const ::c_char,
pub batch_malloc: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
size: ::size_t,
results: *mut *mut ::c_void,
num_requested: ::c_uint,
) -> ::c_uint>,
pub batch_free: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
to_be_freed: *mut *mut ::c_void,
num_to_be_freed: ::c_uint,
)>,
to_be_freed: *mut *mut c_void,
num_to_be_freed: c_uint,
),
>,
pub introspect: *mut malloc_introspection_t,
pub version: ::c_uint,
pub memalign: ::Option<unsafe extern "C" fn(
pub version: c_uint,
pub memalign: Option<
unsafe extern "C" fn(
zone: *mut malloc_zone_t,
alignment: ::size_t,
size: ::size_t,
) -> *mut ::c_void>,
pub free_definite_size: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *mut ::c_void,
size: ::size_t
)>,
pub pressure_relief: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
goal: ::size_t,
) -> ::size_t>,
pub claimed_address: ::Option<unsafe extern "C" fn(
zone: *mut malloc_zone_t,
ptr: *mut ::c_void,
) -> ::boolean_t>,
alignment: size_t,
size: size_t,
) -> *mut c_void,
>,
pub free_definite_size:
Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void, size: size_t)>,
pub pressure_relief:
Option<unsafe extern "C" fn(zone: *mut malloc_zone_t, goal: size_t) -> size_t>,
pub claimed_address: Option<
unsafe extern "C" fn(zone: *mut malloc_zone_t, ptr: *mut c_void) -> crate::boolean_t,
>,
}
}
cfg_if! {
if #[cfg(libc_align)] {
mod align;
pub use self::align::*;
s_no_extra_traits! {
#[allow(missing_debug_implementations)]
#[repr(align(16))]
pub struct max_align_t {
priv_: [f64; 2],
}
}

View File

@@ -1,8 +0,0 @@
s! {
pub struct ctl_info {
pub ctl_id: u32,
pub ctl_name: [::c_char; MAX_KCTL_NAME],
}
}
pub const MAX_KCTL_NAME: usize = 96;

File diff suppressed because it is too large Load Diff

View File

@@ -1,13 +1,17 @@
use crate::prelude::*;
/* DIFF(main): module removed in de76fee6 */
// DragonFlyBSD's __error function is declared with "static inline", so it must
// be implemented in the libc crate, as a pointer to a static thread_local.
f! {
#[deprecated(since = "0.2.77", note = "Use `__errno_location()` instead")]
pub fn __error() -> *mut ::c_int {
pub fn __error() -> *mut c_int {
&mut errno
}
}
extern "C" {
#[thread_local]
pub static mut errno: ::c_int;
pub static mut errno: c_int;
}

File diff suppressed because it is too large Load Diff

View File

@@ -1,6 +1,6 @@
pub type c_char = u8;
pub type c_long = i64;
pub type c_ulong = u64;
use crate::prelude::*;
pub type clock_t = i32;
pub type wchar_t = u32;
pub type time_t = i64;
pub type suseconds_t = i64;
@@ -8,57 +8,48 @@ pub type register_t = i64;
s_no_extra_traits! {
pub struct gpregs {
pub gp_x: [::register_t; 30],
pub gp_lr: ::register_t,
pub gp_sp: ::register_t,
pub gp_elr: ::register_t,
pub gp_x: [crate::register_t; 30],
pub gp_lr: crate::register_t,
pub gp_sp: crate::register_t,
pub gp_elr: crate::register_t,
pub gp_spsr: u32,
pub gp_pad: ::c_int,
pub gp_pad: c_int,
}
pub struct fpregs {
pub fp_q: u128,
pub fp_sr: u32,
pub fp_cr: u32,
pub fp_flags: ::c_int,
pub fp_pad: ::c_int,
pub fp_flags: c_int,
pub fp_pad: c_int,
}
pub struct mcontext_t {
pub mc_gpregs: gpregs,
pub mc_fpregs: fpregs,
pub mc_flags: ::c_int,
pub mc_pad: ::c_int,
pub mc_flags: c_int,
pub mc_pad: c_int,
pub mc_spare: [u64; 8],
}
}
// should be pub(crate), but that requires Rust 1.18.0
cfg_if! {
if #[cfg(libc_const_size_of)] {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_longlong>() - 1;
} else {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = 8 - 1;
}
}
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_longlong>() - 1;
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for gpregs {
fn eq(&self, other: &gpregs) -> bool {
self.gp_x.iter().zip(other.gp_x.iter()).all(|(a, b)| a == b) &&
self.gp_lr == other.gp_lr &&
self.gp_sp == other.gp_sp &&
self.gp_elr == other.gp_elr &&
self.gp_spsr == other.gp_spsr &&
self.gp_pad == other.gp_pad
self.gp_x.iter().zip(other.gp_x.iter()).all(|(a, b)| a == b)
&& self.gp_lr == other.gp_lr
&& self.gp_sp == other.gp_sp
&& self.gp_elr == other.gp_elr
&& self.gp_spsr == other.gp_spsr
&& self.gp_pad == other.gp_pad
}
}
impl Eq for gpregs {}
impl ::fmt::Debug for gpregs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for gpregs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("gpregs")
.field("gp_x", &self.gp_x)
.field("gp_lr", &self.gp_lr)
@@ -69,8 +60,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for gpregs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for gpregs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.gp_x.hash(state);
self.gp_lr.hash(state);
self.gp_sp.hash(state);
@@ -81,16 +72,16 @@ cfg_if! {
}
impl PartialEq for fpregs {
fn eq(&self, other: &fpregs) -> bool {
self.fp_q == other.fp_q &&
self.fp_sr == other.fp_sr &&
self.fp_cr == other.fp_cr &&
self.fp_flags == other.fp_flags &&
self.fp_pad == other.fp_pad
self.fp_q == other.fp_q
&& self.fp_sr == other.fp_sr
&& self.fp_cr == other.fp_cr
&& self.fp_flags == other.fp_flags
&& self.fp_pad == other.fp_pad
}
}
impl Eq for fpregs {}
impl ::fmt::Debug for fpregs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for fpregs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("fpregs")
.field("fp_q", &self.fp_q)
.field("fp_sr", &self.fp_sr)
@@ -100,8 +91,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for fpregs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for fpregs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.fp_q.hash(state);
self.fp_sr.hash(state);
self.fp_cr.hash(state);
@@ -111,16 +102,20 @@ cfg_if! {
}
impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool {
self.mc_gpregs == other.mc_gpregs &&
self.mc_fpregs == other.mc_fpregs &&
self.mc_flags == other.mc_flags &&
self.mc_pad == other.mc_pad &&
self.mc_spare.iter().zip(other.mc_spare.iter()).all(|(a, b)| a == b)
self.mc_gpregs == other.mc_gpregs
&& self.mc_fpregs == other.mc_fpregs
&& self.mc_flags == other.mc_flags
&& self.mc_pad == other.mc_pad
&& self
.mc_spare
.iter()
.zip(other.mc_spare.iter())
.all(|(a, b)| a == b)
}
}
impl Eq for mcontext_t {}
impl ::fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t")
.field("mc_gpregs", &self.mc_gpregs)
.field("mc_fpregs", &self.mc_fpregs)
@@ -130,8 +125,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for mcontext_t {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for mcontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.mc_gpregs.hash(state);
self.mc_fpregs.hash(state);
self.mc_flags.hash(state);
@@ -142,5 +137,8 @@ cfg_if! {
}
}
pub const MAP_32BIT: ::c_int = 0x00080000;
pub const MINSIGSTKSZ: ::size_t = 4096; // 1024 * 4
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 4096; // 1024 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

View File

@@ -1,20 +1,63 @@
pub type c_char = u8;
pub type c_long = i32;
pub type c_ulong = u32;
use crate::prelude::*;
pub type clock_t = u32;
pub type wchar_t = u32;
pub type time_t = i64;
pub type suseconds_t = i32;
pub type register_t = i32;
pub type __greg_t = c_uint;
pub type __gregset_t = [crate::__greg_t; 17];
// should be pub(crate), but that requires Rust 1.18.0
cfg_if! {
if #[cfg(libc_const_size_of)] {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1;
} else {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = 4 - 1;
s_no_extra_traits! {
pub struct mcontext_t {
pub __gregs: crate::__gregset_t,
pub mc_vfp_size: usize,
pub mc_vfp_ptr: *mut c_void,
pub mc_spare: [c_uint; 33],
}
}
pub const MAP_32BIT: ::c_int = 0x00080000;
pub const MINSIGSTKSZ: ::size_t = 4096; // 1024 * 4
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool {
self.__gregs == other.__gregs
&& self.mc_vfp_size == other.mc_vfp_size
&& self.mc_vfp_ptr == other.mc_vfp_ptr
&& self
.mc_spare
.iter()
.zip(other.mc_spare.iter())
.all(|(a, b)| a == b)
}
}
impl Eq for mcontext_t {}
impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t")
.field("__gregs", &self.__gregs)
.field("mc_vfp_size", &self.mc_vfp_size)
.field("mc_vfp_ptr", &self.mc_vfp_ptr)
.field("mc_spare", &self.mc_spare)
.finish()
}
}
impl hash::Hash for mcontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.__gregs.hash(state);
self.mc_vfp_size.hash(state);
self.mc_vfp_ptr.hash(state);
self.mc_spare.hash(state);
}
}
}
}
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_int>() - 1;
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 4096; // 1024 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

View File

@@ -1,33 +1,36 @@
use crate::off_t;
use crate::prelude::*;
#[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: crate::nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: crate::dev_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u32,
pub st_lspare: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
__unused: [u8; 8],
}
impl ::Copy for ::stat {}
impl ::Clone for ::stat {
fn clone(&self) -> ::stat {
impl Copy for crate::stat {}
impl Clone for crate::stat {
fn clone(&self) -> crate::stat {
*self
}
}

View File

@@ -1,32 +1,35 @@
use crate::off_t;
use crate::prelude::*;
#[repr(C)]
#[cfg_attr(feature = "extra_traits", derive(Debug, Eq, Hash, PartialEq))]
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_mode: ::mode_t,
pub st_nlink: ::nlink_t,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_rdev: ::dev_t,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_mode: crate::mode_t,
pub st_nlink: crate::nlink_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
pub st_rdev: crate::dev_t,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u32,
pub st_lspare: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
}
impl ::Copy for ::stat {}
impl ::Clone for ::stat {
fn clone(&self) -> ::stat {
impl Copy for crate::stat {}
impl Clone for crate::stat {
fn clone(&self) -> crate::stat {
*self
}
}

View File

@@ -1,3 +1,5 @@
use crate::prelude::*;
// APIs that were changed after FreeBSD 11
// The type of `nlink_t` changed from `u16` to `u64` in FreeBSD 12:
@@ -9,216 +11,216 @@ pub type ino_t = u32;
s! {
pub struct kevent {
pub ident: ::uintptr_t,
pub filter: ::c_short,
pub flags: ::c_ushort,
pub fflags: ::c_uint,
pub data: ::intptr_t,
pub udata: *mut ::c_void,
pub ident: crate::uintptr_t,
pub filter: c_short,
pub flags: c_ushort,
pub fflags: c_uint,
pub data: intptr_t,
pub udata: *mut c_void,
}
pub struct shmid_ds {
pub shm_perm: ::ipc_perm,
pub shm_segsz: ::size_t,
pub shm_lpid: ::pid_t,
pub shm_cpid: ::pid_t,
pub shm_perm: crate::ipc_perm,
pub shm_segsz: size_t,
pub shm_lpid: crate::pid_t,
pub shm_cpid: crate::pid_t,
// Type of shm_nattc changed from `int` to `shmatt_t` (aka `unsigned
// int`) in FreeBSD 12:
pub shm_nattch: ::c_int,
pub shm_atime: ::time_t,
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
pub shm_nattch: c_int,
pub shm_atime: crate::time_t,
pub shm_dtime: crate::time_t,
pub shm_ctime: crate::time_t,
}
pub struct kinfo_proc {
/// Size of this structure.
pub ki_structsize: ::c_int,
pub ki_structsize: c_int,
/// Reserved: layout identifier.
pub ki_layout: ::c_int,
pub ki_layout: c_int,
/// Address of command arguments.
pub ki_args: *mut ::pargs,
pub ki_args: *mut crate::pargs,
// This is normally "struct proc".
/// Address of proc.
pub ki_paddr: *mut ::c_void,
pub ki_paddr: *mut c_void,
// This is normally "struct user".
/// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void,
pub ki_addr: *mut c_void,
// This is normally "struct vnode".
/// Pointer to trace file.
pub ki_tracep: *mut ::c_void,
pub ki_tracep: *mut c_void,
// This is normally "struct vnode".
/// Pointer to executable file.
pub ki_textvp: *mut ::c_void,
pub ki_textvp: *mut c_void,
// This is normally "struct filedesc".
/// Pointer to open file info.
pub ki_fd: *mut ::c_void,
pub ki_fd: *mut c_void,
// This is normally "struct vmspace".
/// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void,
pub ki_vmspace: *mut c_void,
/// Sleep address.
pub ki_wchan: *mut ::c_void,
pub ki_wchan: *mut c_void,
/// Process identifier.
pub ki_pid: ::pid_t,
pub ki_pid: crate::pid_t,
/// Parent process ID.
pub ki_ppid: ::pid_t,
pub ki_ppid: crate::pid_t,
/// Process group ID.
pub ki_pgid: ::pid_t,
pub ki_pgid: crate::pid_t,
/// tty process group ID.
pub ki_tpgid: ::pid_t,
pub ki_tpgid: crate::pid_t,
/// Process session ID.
pub ki_sid: ::pid_t,
pub ki_sid: crate::pid_t,
/// Terminal session ID.
pub ki_tsid: ::pid_t,
pub ki_tsid: crate::pid_t,
/// Job control counter.
pub ki_jobc: ::c_short,
pub ki_jobc: c_short,
/// Unused (just here for alignment).
pub ki_spare_short1: ::c_short,
pub ki_spare_short1: c_short,
/// Controlling tty dev.
pub ki_tdev: ::dev_t,
pub ki_tdev: crate::dev_t,
/// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t,
pub ki_siglist: crate::sigset_t,
/// Current signal mask.
pub ki_sigmask: ::sigset_t,
pub ki_sigmask: crate::sigset_t,
/// Signals being ignored.
pub ki_sigignore: ::sigset_t,
pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user.
pub ki_sigcatch: ::sigset_t,
pub ki_sigcatch: crate::sigset_t,
/// Effective user ID.
pub ki_uid: ::uid_t,
pub ki_uid: crate::uid_t,
/// Real user ID.
pub ki_ruid: ::uid_t,
pub ki_ruid: crate::uid_t,
/// Saved effective user ID.
pub ki_svuid: ::uid_t,
pub ki_svuid: crate::uid_t,
/// Real group ID.
pub ki_rgid: ::gid_t,
pub ki_rgid: crate::gid_t,
/// Saved effective group ID.
pub ki_svgid: ::gid_t,
pub ki_svgid: crate::gid_t,
/// Number of groups.
pub ki_ngroups: ::c_short,
pub ki_ngroups: c_short,
/// Unused (just here for alignment).
pub ki_spare_short2: ::c_short,
pub ki_spare_short2: c_short,
/// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size.
pub ki_size: ::vm_size_t,
pub ki_size: crate::vm_size_t,
/// Current resident set size in pages.
pub ki_rssize: ::segsz_t,
pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap.
pub ki_swrss: ::segsz_t,
pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX.
pub ki_tsize: ::segsz_t,
pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX.
pub ki_dsize: ::segsz_t,
pub ki_dsize: crate::segsz_t,
/// Stack size (pages).
pub ki_ssize: ::segsz_t,
pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal.
pub ki_xstat: ::u_short,
pub ki_xstat: crate::u_short,
/// Accounting flags.
pub ki_acflag: ::u_short,
pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t,
pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int,
pub ki_estcpu: crate::u_int,
/// Time since last blocked.
pub ki_slptime: ::u_int,
pub ki_slptime: crate::u_int,
/// Time swapped in or out.
pub ki_swtime: ::u_int,
pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults.
pub ki_cow: ::u_int,
pub ki_cow: crate::u_int,
/// Real time in microsec.
pub ki_runtime: u64,
/// Starting time.
pub ki_start: ::timeval,
pub ki_start: crate::timeval,
/// Time used by process children.
pub ki_childtime: ::timeval,
pub ki_childtime: crate::timeval,
/// P_* flags.
pub ki_flag: ::c_long,
pub ki_flag: c_long,
/// KI_* flags (below).
pub ki_kiflag: ::c_long,
pub ki_kiflag: c_long,
/// Kernel trace points.
pub ki_traceflag: ::c_int,
pub ki_traceflag: c_int,
/// S* process status.
pub ki_stat: ::c_char,
pub ki_stat: c_char,
/// Process "nice" value.
pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count.
pub ki_lock: ::c_char,
pub ki_lock: c_char,
/// Run queue index.
pub ki_rqindex: ::c_char,
pub ki_rqindex: c_char,
/// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar,
pub ki_oncpu_old: c_uchar,
/// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar,
pub ki_lastcpu_old: c_uchar,
/// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Which cpu we are on.
pub ki_oncpu: ::c_int,
pub ki_oncpu: c_int,
/// Last cpu we were on.
pub ki_lastcpu: ::c_int,
pub ki_lastcpu: c_int,
/// PID of tracing process.
pub ki_tracer: ::c_int,
pub ki_tracer: c_int,
/// P2_* flags.
pub ki_flag2: ::c_int,
pub ki_flag2: c_int,
/// Default FIB number.
pub ki_fibnum: ::c_int,
pub ki_fibnum: c_int,
/// Credential flags.
pub ki_cr_flags: ::u_int,
pub ki_cr_flags: crate::u_int,
/// Process jail ID.
pub ki_jid: ::c_int,
pub ki_jid: c_int,
/// Number of threads in total.
pub ki_numthreads: ::c_int,
pub ki_numthreads: c_int,
/// Thread ID.
pub ki_tid: ::lwpid_t,
pub ki_tid: crate::lwpid_t,
/// Process priority.
pub ki_pri: ::priority,
pub ki_pri: crate::priority,
/// Process rusage statistics.
pub ki_rusage: ::rusage,
pub ki_rusage: crate::rusage,
/// rusage of children processes.
pub ki_rusage_ch: ::rusage,
pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb".
/// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void,
pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void,
pub ki_kstack: *mut c_void,
/// User convenience pointer.
pub ki_udata: *mut ::c_void,
pub ki_udata: *mut c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_tdaddr: *mut c_void,
pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags.
pub ki_sflag: ::c_long,
pub ki_sflag: c_long,
/// kthread flag.
pub ki_tdflags: ::c_long,
pub ki_tdflags: c_long,
}
}
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
pub d_fileno: crate::ino_t,
pub d_reclen: u16,
pub d_type: u8,
// Type of `d_namlen` changed from `char` to `u16` in FreeBSD 12:
pub d_namlen: u8,
pub d_name: [::c_char; 256],
pub d_name: [c_char; 256],
}
pub struct statfs {
@@ -238,25 +240,25 @@ s_no_extra_traits! {
pub f_asyncreads: u64,
f_spare: [u64; 10],
pub f_namemax: u32,
pub f_owner: ::uid_t,
pub f_fsid: ::fsid_t,
f_charspare: [::c_char; 80],
pub f_fstypename: [::c_char; 16],
pub f_owner: crate::uid_t,
pub f_fsid: crate::fsid_t,
f_charspare: [c_char; 80],
pub f_fstypename: [c_char; 16],
// Array length changed from 88 to 1024 in FreeBSD 12:
pub f_mntfromname: [::c_char; 88],
pub f_mntfromname: [c_char; 88],
// Array length changed from 88 to 1024 in FreeBSD 12:
pub f_mntonname: [::c_char; 88],
pub f_mntonname: [c_char; 88],
}
pub struct vnstat {
pub vn_fileid: u64,
pub vn_size: u64,
pub vn_mntdir: *mut ::c_char,
pub vn_mntdir: *mut c_char,
pub vn_dev: u32,
pub vn_fsid: u32,
pub vn_type: ::c_int,
pub vn_type: c_int,
pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1],
pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
}
}
@@ -286,17 +288,17 @@ cfg_if! {
.f_mntfromname
.iter()
.zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
&& self
.f_mntonname
.iter()
.zip(other.f_mntonname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for statfs {}
impl ::fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for statfs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize)
@@ -318,8 +320,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for statfs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state);
self.f_type.hash(state);
self.f_flags.hash(state);
@@ -349,16 +351,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen
&& self.d_type == other.d_type
&& self.d_namlen == other.d_namlen
&& self
.d_name[..self.d_namlen as _]
&& self.d_name[..self.d_namlen as _]
.iter()
.zip(other.d_name.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for dirent {}
impl ::fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for dirent {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno)
.field("d_reclen", &self.d_reclen)
@@ -368,8 +369,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for dirent {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state);
self.d_reclen.hash(state);
self.d_type.hash(state);
@@ -380,23 +381,23 @@ cfg_if! {
impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname;
let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid &&
self.vn_size == other.vn_size &&
self.vn_mntdir == other.vn_mntdir &&
self.vn_dev == other.vn_dev &&
self.vn_fsid == other.vn_fsid &&
self.vn_type == other.vn_type &&
self.vn_mode == other.vn_mode &&
self_vn_devname == other_vn_devname
self.vn_fileid == other.vn_fileid
&& self.vn_size == other.vn_size
&& self.vn_mntdir == other.vn_mntdir
&& self.vn_dev == other.vn_dev
&& self.vn_fsid == other.vn_fsid
&& self.vn_type == other.vn_type
&& self.vn_mode == other.vn_mode
&& self_vn_devname == other_vn_devname
}
}
impl Eq for vnstat {}
impl ::fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid)
@@ -410,9 +411,9 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl hash::Hash for vnstat {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state);
self.vn_size.hash(state);
@@ -427,55 +428,53 @@ cfg_if! {
}
}
pub const ELAST: ::c_int = 96;
pub const RAND_MAX: ::c_int = 0x7fff_fffd;
pub const ELAST: c_int = 96;
pub const RAND_MAX: c_int = 0x7fff_fffd;
pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20;
pub const MINCORE_SUPER: c_int = 0x20;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 63;
pub const SPECNAMELEN: c_int = 63;
safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
(major << 8) | minor
}
}
f! {
pub fn major(dev: ::dev_t) -> ::c_int {
((dev >> 8) & 0xff) as ::c_int
pub {const} fn major(dev: crate::dev_t) -> c_int {
((dev >> 8) & 0xff) as c_int
}
pub fn minor(dev: ::dev_t) -> ::c_int {
(dev & 0xffff00ff) as ::c_int
pub {const} fn minor(dev: crate::dev_t) -> c_int {
(dev & 0xffff00ff) as c_int
}
}
extern "C" {
// Return type ::c_int was removed in FreeBSD 12
pub fn setgrent() -> ::c_int;
// Return type c_int was removed in FreeBSD 12
pub fn setgrent() -> c_int;
// Type of `addr` argument changed from `const void*` to `void*`
// in FreeBSD 12
pub fn mprotect(addr: *const ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn mprotect(addr: *const c_void, len: size_t, prot: c_int) -> c_int;
// Return type ::c_int was removed in FreeBSD 12
pub fn freelocale(loc: ::locale_t) -> ::c_int;
// Return type c_int was removed in FreeBSD 12
pub fn freelocale(loc: crate::locale_t) -> c_int;
// Return type ::c_int changed to ::ssize_t in FreeBSD 12:
// Return type c_int changed to ssize_t in FreeBSD 12:
pub fn msgrcv(
msqid: ::c_int,
msgp: *mut ::c_void,
msgsz: ::size_t,
msgtyp: ::c_long,
msgflg: ::c_int,
) -> ::c_int;
msqid: c_int,
msgp: *mut c_void,
msgsz: size_t,
msgtyp: c_long,
msgflg: c_int,
) -> c_int;
// Type of `path` argument changed from `const void*` to `void*`
// in FreeBSD 12
pub fn dirname(path: *const ::c_char) -> *mut ::c_char;
pub fn basename(path: *const ::c_char) -> *mut ::c_char;
pub fn dirname(path: *const c_char) -> *mut c_char;
pub fn basename(path: *const c_char) -> *mut c_char;
}
cfg_if! {

View File

@@ -1,254 +1,257 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 12 that have changed since 11.
pub type nlink_t = u64;
pub type dev_t = u64;
pub type ino_t = u64;
pub type shmatt_t = ::c_uint;
pub type shmatt_t = c_uint;
s! {
pub struct shmid_ds {
pub shm_perm: ::ipc_perm,
pub shm_segsz: ::size_t,
pub shm_lpid: ::pid_t,
pub shm_cpid: ::pid_t,
pub shm_nattch: ::shmatt_t,
pub shm_atime: ::time_t,
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
pub shm_perm: crate::ipc_perm,
pub shm_segsz: size_t,
pub shm_lpid: crate::pid_t,
pub shm_cpid: crate::pid_t,
pub shm_nattch: crate::shmatt_t,
pub shm_atime: crate::time_t,
pub shm_dtime: crate::time_t,
pub shm_ctime: crate::time_t,
}
pub struct kevent {
pub ident: ::uintptr_t,
pub filter: ::c_short,
pub flags: ::c_ushort,
pub fflags: ::c_uint,
pub ident: crate::uintptr_t,
pub filter: c_short,
pub flags: c_ushort,
pub fflags: c_uint,
pub data: i64,
pub udata: *mut ::c_void,
pub udata: *mut c_void,
pub ext: [u64; 4],
}
pub struct kvm_page {
pub version: ::c_uint,
pub paddr: ::c_ulong,
pub kmap_vaddr: ::c_ulong,
pub dmap_vaddr: ::c_ulong,
pub prot: ::vm_prot_t,
pub offset: ::u_long,
pub len: ::size_t,
pub version: c_uint,
pub paddr: c_ulong,
pub kmap_vaddr: c_ulong,
pub dmap_vaddr: c_ulong,
pub prot: crate::vm_prot_t,
pub offset: crate::u_long,
pub len: size_t,
}
pub struct kinfo_proc {
/// Size of this structure.
pub ki_structsize: ::c_int,
pub ki_structsize: c_int,
/// Reserved: layout identifier.
pub ki_layout: ::c_int,
pub ki_layout: c_int,
/// Address of command arguments.
pub ki_args: *mut ::pargs,
pub ki_args: *mut crate::pargs,
// This is normally "struct proc".
/// Address of proc.
pub ki_paddr: *mut ::c_void,
pub ki_paddr: *mut c_void,
// This is normally "struct user".
/// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void,
pub ki_addr: *mut c_void,
// This is normally "struct vnode".
/// Pointer to trace file.
pub ki_tracep: *mut ::c_void,
pub ki_tracep: *mut c_void,
// This is normally "struct vnode".
/// Pointer to executable file.
pub ki_textvp: *mut ::c_void,
pub ki_textvp: *mut c_void,
// This is normally "struct filedesc".
/// Pointer to open file info.
pub ki_fd: *mut ::c_void,
pub ki_fd: *mut c_void,
// This is normally "struct vmspace".
/// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void,
pub ki_vmspace: *mut c_void,
/// Sleep address.
pub ki_wchan: *mut ::c_void,
pub ki_wchan: *mut c_void,
/// Process identifier.
pub ki_pid: ::pid_t,
pub ki_pid: crate::pid_t,
/// Parent process ID.
pub ki_ppid: ::pid_t,
pub ki_ppid: crate::pid_t,
/// Process group ID.
pub ki_pgid: ::pid_t,
pub ki_pgid: crate::pid_t,
/// tty process group ID.
pub ki_tpgid: ::pid_t,
pub ki_tpgid: crate::pid_t,
/// Process session ID.
pub ki_sid: ::pid_t,
pub ki_sid: crate::pid_t,
/// Terminal session ID.
pub ki_tsid: ::pid_t,
pub ki_tsid: crate::pid_t,
/// Job control counter.
pub ki_jobc: ::c_short,
pub ki_jobc: c_short,
/// Unused (just here for alignment).
pub ki_spare_short1: ::c_short,
pub ki_spare_short1: c_short,
/// Controlling tty dev.
pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t,
pub ki_siglist: crate::sigset_t,
/// Current signal mask.
pub ki_sigmask: ::sigset_t,
pub ki_sigmask: crate::sigset_t,
/// Signals being ignored.
pub ki_sigignore: ::sigset_t,
pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user.
pub ki_sigcatch: ::sigset_t,
pub ki_sigcatch: crate::sigset_t,
/// Effective user ID.
pub ki_uid: ::uid_t,
pub ki_uid: crate::uid_t,
/// Real user ID.
pub ki_ruid: ::uid_t,
pub ki_ruid: crate::uid_t,
/// Saved effective user ID.
pub ki_svuid: ::uid_t,
pub ki_svuid: crate::uid_t,
/// Real group ID.
pub ki_rgid: ::gid_t,
pub ki_rgid: crate::gid_t,
/// Saved effective group ID.
pub ki_svgid: ::gid_t,
pub ki_svgid: crate::gid_t,
/// Number of groups.
pub ki_ngroups: ::c_short,
pub ki_ngroups: c_short,
/// Unused (just here for alignment).
pub ki_spare_short2: ::c_short,
pub ki_spare_short2: c_short,
/// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size.
pub ki_size: ::vm_size_t,
pub ki_size: crate::vm_size_t,
/// Current resident set size in pages.
pub ki_rssize: ::segsz_t,
pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap.
pub ki_swrss: ::segsz_t,
pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX.
pub ki_tsize: ::segsz_t,
pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX.
pub ki_dsize: ::segsz_t,
pub ki_dsize: crate::segsz_t,
/// Stack size (pages).
pub ki_ssize: ::segsz_t,
pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal.
pub ki_xstat: ::u_short,
pub ki_xstat: crate::u_short,
/// Accounting flags.
pub ki_acflag: ::u_short,
pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t,
pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int,
pub ki_estcpu: crate::u_int,
/// Time since last blocked.
pub ki_slptime: ::u_int,
pub ki_slptime: crate::u_int,
/// Time swapped in or out.
pub ki_swtime: ::u_int,
pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults.
pub ki_cow: ::u_int,
pub ki_cow: crate::u_int,
/// Real time in microsec.
pub ki_runtime: u64,
/// Starting time.
pub ki_start: ::timeval,
pub ki_start: crate::timeval,
/// Time used by process children.
pub ki_childtime: ::timeval,
pub ki_childtime: crate::timeval,
/// P_* flags.
pub ki_flag: ::c_long,
pub ki_flag: c_long,
/// KI_* flags (below).
pub ki_kiflag: ::c_long,
pub ki_kiflag: c_long,
/// Kernel trace points.
pub ki_traceflag: ::c_int,
pub ki_traceflag: c_int,
/// S* process status.
pub ki_stat: ::c_char,
pub ki_stat: c_char,
/// Process "nice" value.
pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count.
pub ki_lock: ::c_char,
pub ki_lock: c_char,
/// Run queue index.
pub ki_rqindex: ::c_char,
pub ki_rqindex: c_char,
/// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar,
pub ki_oncpu_old: c_uchar,
/// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar,
pub ki_lastcpu_old: c_uchar,
/// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev.
pub ki_tdev: ::dev_t,
pub ki_tdev: crate::dev_t,
/// Which cpu we are on.
pub ki_oncpu: ::c_int,
pub ki_oncpu: c_int,
/// Last cpu we were on.
pub ki_lastcpu: ::c_int,
pub ki_lastcpu: c_int,
/// PID of tracing process.
pub ki_tracer: ::c_int,
pub ki_tracer: c_int,
/// P2_* flags.
pub ki_flag2: ::c_int,
pub ki_flag2: c_int,
/// Default FIB number.
pub ki_fibnum: ::c_int,
pub ki_fibnum: c_int,
/// Credential flags.
pub ki_cr_flags: ::u_int,
pub ki_cr_flags: crate::u_int,
/// Process jail ID.
pub ki_jid: ::c_int,
pub ki_jid: c_int,
/// Number of threads in total.
pub ki_numthreads: ::c_int,
pub ki_numthreads: c_int,
/// Thread ID.
pub ki_tid: ::lwpid_t,
pub ki_tid: crate::lwpid_t,
/// Process priority.
pub ki_pri: ::priority,
pub ki_pri: crate::priority,
/// Process rusage statistics.
pub ki_rusage: ::rusage,
pub ki_rusage: crate::rusage,
/// rusage of children processes.
pub ki_rusage_ch: ::rusage,
pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb".
/// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void,
pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void,
pub ki_kstack: *mut c_void,
/// User convenience pointer.
pub ki_udata: *mut ::c_void,
pub ki_udata: *mut c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_tdaddr: *mut c_void,
pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags.
pub ki_sflag: ::c_long,
pub ki_sflag: c_long,
/// kthread flag.
pub ki_tdflags: ::c_long,
pub ki_tdflags: c_long,
}
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
st_padding0: i16,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
pub st_rdev: ::dev_t,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_mtim_ext: i32,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_ctim_ext: i32,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_btim_ext: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u64,
pub st_spare: [u64; 10],
}
@@ -256,14 +259,14 @@ s! {
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
pub d_off: ::off_t,
pub d_fileno: crate::ino_t,
pub d_off: off_t,
pub d_reclen: u16,
pub d_type: u8,
d_pad0: u8,
pub d_namlen: u16,
d_pad1: u16,
pub d_name: [::c_char; 256],
pub d_name: [c_char; 256],
}
pub struct statfs {
@@ -283,12 +286,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64,
f_spare: [u64; 10],
pub f_namemax: u32,
pub f_owner: ::uid_t,
pub f_fsid: ::fsid_t,
f_charspare: [::c_char; 80],
pub f_fstypename: [::c_char; 16],
pub f_mntfromname: [::c_char; 1024],
pub f_mntonname: [::c_char; 1024],
pub f_owner: crate::uid_t,
pub f_fsid: crate::fsid_t,
f_charspare: [c_char; 80],
pub f_fstypename: [c_char; 16],
pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [c_char; 1024],
}
pub struct vnstat {
@@ -296,10 +299,10 @@ s_no_extra_traits! {
pub vn_size: u64,
pub vn_dev: u64,
pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char,
pub vn_type: ::c_int,
pub vn_mntdir: *mut c_char,
pub vn_type: c_int,
pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1],
pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
}
}
@@ -329,17 +332,17 @@ cfg_if! {
.f_mntfromname
.iter()
.zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
&& self
.f_mntonname
.iter()
.zip(other.f_mntonname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for statfs {}
impl ::fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for statfs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize)
@@ -361,8 +364,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for statfs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state);
self.f_type.hash(state);
self.f_flags.hash(state);
@@ -394,16 +397,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen
&& self.d_type == other.d_type
&& self.d_namlen == other.d_namlen
&& self
.d_name[..self.d_namlen as _]
&& self.d_name[..self.d_namlen as _]
.iter()
.zip(other.d_name.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for dirent {}
impl ::fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for dirent {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off)
@@ -414,8 +416,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for dirent {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state);
self.d_off.hash(state);
self.d_reclen.hash(state);
@@ -427,23 +429,23 @@ cfg_if! {
impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname;
let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid &&
self.vn_size == other.vn_size &&
self.vn_dev == other.vn_dev &&
self.vn_fsid == other.vn_fsid &&
self.vn_mntdir == other.vn_mntdir &&
self.vn_type == other.vn_type &&
self.vn_mode == other.vn_mode &&
self_vn_devname == other_vn_devname
self.vn_fileid == other.vn_fileid
&& self.vn_size == other.vn_size
&& self.vn_dev == other.vn_dev
&& self.vn_fsid == other.vn_fsid
&& self.vn_mntdir == other.vn_mntdir
&& self.vn_type == other.vn_type
&& self.vn_mode == other.vn_mode
&& self_vn_devname == other_vn_devname
}
}
impl Eq for vnstat {}
impl ::fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid)
@@ -457,9 +459,9 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl hash::Hash for vnstat {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state);
self.vn_size.hash(state);
@@ -474,19 +476,19 @@ cfg_if! {
}
}
pub const RAND_MAX: ::c_int = 0x7fff_fffd;
pub const ELAST: ::c_int = 97;
pub const RAND_MAX: c_int = 0x7fff_fffd;
pub const ELAST: c_int = 97;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 63;
pub const SPECNAMELEN: c_int = 63;
pub const KI_NSPARE_PTR: usize = 6;
pub const MINCORE_SUPER: ::c_int = 0x20;
pub const MINCORE_SUPER: c_int = 0x20;
safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -494,32 +496,30 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev
}
}
f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
pub {const} fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}
pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn freelocale(loc: ::locale_t);
pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv(
msqid: ::c_int,
msgp: *mut ::c_void,
msgsz: ::size_t,
msgtyp: ::c_long,
msgflg: ::c_int,
) -> ::ssize_t;
msqid: c_int,
msgp: *mut c_void,
msgsz: size_t,
msgtyp: c_long,
msgflg: c_int,
) -> ssize_t;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut c_char) -> *mut c_char;
}
cfg_if! {

View File

@@ -1,5 +1,7 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000;
use crate::prelude::*;
pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;

View File

@@ -1,264 +1,270 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 13 that have changed since 11.
pub type nlink_t = u64;
pub type dev_t = u64;
pub type ino_t = u64;
pub type shmatt_t = ::c_uint;
pub type shmatt_t = c_uint;
pub type kpaddr_t = u64;
pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset;
s! {
pub struct shmid_ds {
pub shm_perm: ::ipc_perm,
pub shm_segsz: ::size_t,
pub shm_lpid: ::pid_t,
pub shm_cpid: ::pid_t,
pub shm_nattch: ::shmatt_t,
pub shm_atime: ::time_t,
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
pub shm_perm: crate::ipc_perm,
pub shm_segsz: size_t,
pub shm_lpid: crate::pid_t,
pub shm_cpid: crate::pid_t,
pub shm_nattch: crate::shmatt_t,
pub shm_atime: crate::time_t,
pub shm_dtime: crate::time_t,
pub shm_ctime: crate::time_t,
}
pub struct kevent {
pub ident: ::uintptr_t,
pub filter: ::c_short,
pub flags: ::c_ushort,
pub fflags: ::c_uint,
pub ident: crate::uintptr_t,
pub filter: c_short,
pub flags: c_ushort,
pub fflags: c_uint,
pub data: i64,
pub udata: *mut ::c_void,
pub udata: *mut c_void,
pub ext: [u64; 4],
}
pub struct kvm_page {
pub kp_version: ::u_int,
pub kp_paddr: ::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t,
pub kp_prot: ::vm_prot_t,
pub kp_offset: ::off_t,
pub kp_len: ::size_t,
pub kp_version: crate::u_int,
pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: crate::vm_prot_t,
pub kp_offset: off_t,
pub kp_len: size_t,
}
pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4],
#[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
}
pub struct kinfo_proc {
/// Size of this structure.
pub ki_structsize: ::c_int,
pub ki_structsize: c_int,
/// Reserved: layout identifier.
pub ki_layout: ::c_int,
pub ki_layout: c_int,
/// Address of command arguments.
pub ki_args: *mut ::pargs,
pub ki_args: *mut crate::pargs,
// This is normally "struct proc".
/// Address of proc.
pub ki_paddr: *mut ::c_void,
pub ki_paddr: *mut c_void,
// This is normally "struct user".
/// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void,
pub ki_addr: *mut c_void,
// This is normally "struct vnode".
/// Pointer to trace file.
pub ki_tracep: *mut ::c_void,
pub ki_tracep: *mut c_void,
// This is normally "struct vnode".
/// Pointer to executable file.
pub ki_textvp: *mut ::c_void,
pub ki_textvp: *mut c_void,
// This is normally "struct filedesc".
/// Pointer to open file info.
pub ki_fd: *mut ::c_void,
pub ki_fd: *mut c_void,
// This is normally "struct vmspace".
/// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void,
pub ki_vmspace: *mut c_void,
/// Sleep address.
pub ki_wchan: *const ::c_void,
pub ki_wchan: *const c_void,
/// Process identifier.
pub ki_pid: ::pid_t,
pub ki_pid: crate::pid_t,
/// Parent process ID.
pub ki_ppid: ::pid_t,
pub ki_ppid: crate::pid_t,
/// Process group ID.
pub ki_pgid: ::pid_t,
pub ki_pgid: crate::pid_t,
/// tty process group ID.
pub ki_tpgid: ::pid_t,
pub ki_tpgid: crate::pid_t,
/// Process session ID.
pub ki_sid: ::pid_t,
pub ki_sid: crate::pid_t,
/// Terminal session ID.
pub ki_tsid: ::pid_t,
pub ki_tsid: crate::pid_t,
/// Job control counter.
pub ki_jobc: ::c_short,
pub ki_jobc: c_short,
/// Unused (just here for alignment).
pub ki_spare_short1: ::c_short,
pub ki_spare_short1: c_short,
/// Controlling tty dev.
pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t,
pub ki_siglist: crate::sigset_t,
/// Current signal mask.
pub ki_sigmask: ::sigset_t,
pub ki_sigmask: crate::sigset_t,
/// Signals being ignored.
pub ki_sigignore: ::sigset_t,
pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user.
pub ki_sigcatch: ::sigset_t,
pub ki_sigcatch: crate::sigset_t,
/// Effective user ID.
pub ki_uid: ::uid_t,
pub ki_uid: crate::uid_t,
/// Real user ID.
pub ki_ruid: ::uid_t,
pub ki_ruid: crate::uid_t,
/// Saved effective user ID.
pub ki_svuid: ::uid_t,
pub ki_svuid: crate::uid_t,
/// Real group ID.
pub ki_rgid: ::gid_t,
pub ki_rgid: crate::gid_t,
/// Saved effective group ID.
pub ki_svgid: ::gid_t,
pub ki_svgid: crate::gid_t,
/// Number of groups.
pub ki_ngroups: ::c_short,
pub ki_ngroups: c_short,
/// Unused (just here for alignment).
pub ki_spare_short2: ::c_short,
pub ki_spare_short2: c_short,
/// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size.
pub ki_size: ::vm_size_t,
pub ki_size: crate::vm_size_t,
/// Current resident set size in pages.
pub ki_rssize: ::segsz_t,
pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap.
pub ki_swrss: ::segsz_t,
pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX.
pub ki_tsize: ::segsz_t,
pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX.
pub ki_dsize: ::segsz_t,
pub ki_dsize: crate::segsz_t,
/// Stack size (pages).
pub ki_ssize: ::segsz_t,
pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal.
pub ki_xstat: ::u_short,
pub ki_xstat: crate::u_short,
/// Accounting flags.
pub ki_acflag: ::u_short,
pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t,
pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int,
pub ki_estcpu: crate::u_int,
/// Time since last blocked.
pub ki_slptime: ::u_int,
pub ki_slptime: crate::u_int,
/// Time swapped in or out.
pub ki_swtime: ::u_int,
pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults.
pub ki_cow: ::u_int,
pub ki_cow: crate::u_int,
/// Real time in microsec.
pub ki_runtime: u64,
/// Starting time.
pub ki_start: ::timeval,
pub ki_start: crate::timeval,
/// Time used by process children.
pub ki_childtime: ::timeval,
pub ki_childtime: crate::timeval,
/// P_* flags.
pub ki_flag: ::c_long,
pub ki_flag: c_long,
/// KI_* flags (below).
pub ki_kiflag: ::c_long,
pub ki_kiflag: c_long,
/// Kernel trace points.
pub ki_traceflag: ::c_int,
pub ki_traceflag: c_int,
/// S* process status.
pub ki_stat: ::c_char,
pub ki_stat: c_char,
/// Process "nice" value.
pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count.
pub ki_lock: ::c_char,
pub ki_lock: c_char,
/// Run queue index.
pub ki_rqindex: ::c_char,
pub ki_rqindex: c_char,
/// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar,
pub ki_oncpu_old: c_uchar,
/// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar,
pub ki_lastcpu_old: c_uchar,
/// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev.
pub ki_tdev: u64,
/// Which cpu we are on.
pub ki_oncpu: ::c_int,
pub ki_oncpu: c_int,
/// Last cpu we were on.
pub ki_lastcpu: ::c_int,
pub ki_lastcpu: c_int,
/// PID of tracing process.
pub ki_tracer: ::c_int,
pub ki_tracer: c_int,
/// P2_* flags.
pub ki_flag2: ::c_int,
pub ki_flag2: c_int,
/// Default FIB number.
pub ki_fibnum: ::c_int,
pub ki_fibnum: c_int,
/// Credential flags.
pub ki_cr_flags: ::u_int,
pub ki_cr_flags: crate::u_int,
/// Process jail ID.
pub ki_jid: ::c_int,
pub ki_jid: c_int,
/// Number of threads in total.
pub ki_numthreads: ::c_int,
pub ki_numthreads: c_int,
/// Thread ID.
pub ki_tid: ::lwpid_t,
pub ki_tid: crate::lwpid_t,
/// Process priority.
pub ki_pri: ::priority,
pub ki_pri: crate::priority,
/// Process rusage statistics.
pub ki_rusage: ::rusage,
pub ki_rusage: crate::rusage,
/// rusage of children processes.
pub ki_rusage_ch: ::rusage,
pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb".
/// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void,
pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void,
pub ki_kstack: *mut c_void,
/// User convenience pointer.
pub ki_udata: *mut ::c_void,
pub ki_udata: *mut c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc".
/// Pointer to process paths info.
pub ki_pd: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags.
pub ki_sflag: ::c_long,
pub ki_sflag: c_long,
/// kthread flag.
pub ki_tdflags: ::c_long,
pub ki_tdflags: c_long,
}
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
st_padding0: i16,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
pub st_rdev: ::dev_t,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_mtim_ext: i32,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_ctim_ext: i32,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_btim_ext: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u64,
pub st_spare: [u64; 10],
}
@@ -266,14 +272,14 @@ s! {
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
pub d_off: ::off_t,
pub d_fileno: crate::ino_t,
pub d_off: off_t,
pub d_reclen: u16,
pub d_type: u8,
d_pad0: u8,
pub d_namlen: u16,
d_pad1: u16,
pub d_name: [::c_char; 256],
pub d_name: [c_char; 256],
}
pub struct statfs {
@@ -293,12 +299,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64,
f_spare: [u64; 10],
pub f_namemax: u32,
pub f_owner: ::uid_t,
pub f_fsid: ::fsid_t,
f_charspare: [::c_char; 80],
pub f_fstypename: [::c_char; 16],
pub f_mntfromname: [::c_char; 1024],
pub f_mntonname: [::c_char; 1024],
pub f_owner: crate::uid_t,
pub f_fsid: crate::fsid_t,
f_charspare: [c_char; 80],
pub f_fstypename: [c_char; 16],
pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [c_char; 1024],
}
pub struct vnstat {
@@ -306,10 +312,10 @@ s_no_extra_traits! {
pub vn_size: u64,
pub vn_dev: u64,
pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char,
pub vn_type: ::c_int,
pub vn_mntdir: *mut c_char,
pub vn_type: c_int,
pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1],
pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
}
}
@@ -339,17 +345,17 @@ cfg_if! {
.f_mntfromname
.iter()
.zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
&& self
.f_mntonname
.iter()
.zip(other.f_mntonname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for statfs {}
impl ::fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for statfs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize)
@@ -371,8 +377,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for statfs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state);
self.f_type.hash(state);
self.f_flags.hash(state);
@@ -404,16 +410,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen
&& self.d_type == other.d_type
&& self.d_namlen == other.d_namlen
&& self
.d_name[..self.d_namlen as _]
&& self.d_name[..self.d_namlen as _]
.iter()
.zip(other.d_name.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for dirent {}
impl ::fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for dirent {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off)
@@ -424,8 +429,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for dirent {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state);
self.d_off.hash(state);
self.d_reclen.hash(state);
@@ -437,23 +442,23 @@ cfg_if! {
impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname;
let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid &&
self.vn_size == other.vn_size &&
self.vn_dev == other.vn_dev &&
self.vn_fsid == other.vn_fsid &&
self.vn_mntdir == other.vn_mntdir &&
self.vn_type == other.vn_type &&
self.vn_mode == other.vn_mode &&
self_vn_devname == other_vn_devname
self.vn_fileid == other.vn_fileid
&& self.vn_size == other.vn_size
&& self.vn_dev == other.vn_dev
&& self.vn_fsid == other.vn_fsid
&& self.vn_mntdir == other.vn_mntdir
&& self.vn_type == other.vn_type
&& self.vn_mode == other.vn_mode
&& self_vn_devname == other_vn_devname
}
}
impl Eq for vnstat {}
impl ::fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid)
@@ -467,9 +472,9 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl hash::Hash for vnstat {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state);
self.vn_size.hash(state);
@@ -484,28 +489,28 @@ cfg_if! {
}
}
pub const RAND_MAX: ::c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97;
pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13;
pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 255;
pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4;
pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x20;
pub const MINCORE_SUPER: c_int = 0x20;
safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +518,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev
}
}
f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
pub {const} fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}
pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn freelocale(loc: ::locale_t);
pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv(
msqid: ::c_int,
msgp: *mut ::c_void,
msgsz: ::size_t,
msgtyp: ::c_long,
msgflg: ::c_int,
) -> ::ssize_t;
msqid: c_int,
msgp: *mut c_void,
msgsz: size_t,
msgtyp: c_long,
msgflg: c_int,
) -> ssize_t;
pub fn cpuset_getdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *mut ::domainset_t,
policy: *mut ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *mut crate::domainset_t,
policy: *mut c_int,
) -> c_int;
pub fn cpuset_setdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *const ::domainset_t,
policy: ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *const crate::domainset_t,
policy: c_int,
) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut c_char) -> *mut c_char;
}
#[link(name = "kvm")]
extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
}
cfg_if! {

View File

@@ -1,5 +1,7 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000;
use crate::prelude::*;
pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;

View File

@@ -1,264 +1,270 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 14 that have changed since 11.
pub type nlink_t = u64;
pub type dev_t = u64;
pub type ino_t = u64;
pub type shmatt_t = ::c_uint;
pub type shmatt_t = c_uint;
pub type kpaddr_t = u64;
pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset;
s! {
pub struct shmid_ds {
pub shm_perm: ::ipc_perm,
pub shm_segsz: ::size_t,
pub shm_lpid: ::pid_t,
pub shm_cpid: ::pid_t,
pub shm_nattch: ::shmatt_t,
pub shm_atime: ::time_t,
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
pub shm_perm: crate::ipc_perm,
pub shm_segsz: size_t,
pub shm_lpid: crate::pid_t,
pub shm_cpid: crate::pid_t,
pub shm_nattch: crate::shmatt_t,
pub shm_atime: crate::time_t,
pub shm_dtime: crate::time_t,
pub shm_ctime: crate::time_t,
}
pub struct kevent {
pub ident: ::uintptr_t,
pub filter: ::c_short,
pub flags: ::c_ushort,
pub fflags: ::c_uint,
pub ident: crate::uintptr_t,
pub filter: c_short,
pub flags: c_ushort,
pub fflags: c_uint,
pub data: i64,
pub udata: *mut ::c_void,
pub udata: *mut c_void,
pub ext: [u64; 4],
}
pub struct kvm_page {
pub kp_version: ::u_int,
pub kp_paddr: ::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t,
pub kp_prot: ::vm_prot_t,
pub kp_offset: ::off_t,
pub kp_len: ::size_t,
pub kp_version: crate::u_int,
pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: crate::vm_prot_t,
pub kp_offset: off_t,
pub kp_len: size_t,
}
pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4],
#[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
}
pub struct kinfo_proc {
/// Size of this structure.
pub ki_structsize: ::c_int,
pub ki_structsize: c_int,
/// Reserved: layout identifier.
pub ki_layout: ::c_int,
pub ki_layout: c_int,
/// Address of command arguments.
pub ki_args: *mut ::pargs,
pub ki_args: *mut crate::pargs,
// This is normally "struct proc".
/// Address of proc.
pub ki_paddr: *mut ::c_void,
pub ki_paddr: *mut c_void,
// This is normally "struct user".
/// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void,
pub ki_addr: *mut c_void,
// This is normally "struct vnode".
/// Pointer to trace file.
pub ki_tracep: *mut ::c_void,
pub ki_tracep: *mut c_void,
// This is normally "struct vnode".
/// Pointer to executable file.
pub ki_textvp: *mut ::c_void,
pub ki_textvp: *mut c_void,
// This is normally "struct filedesc".
/// Pointer to open file info.
pub ki_fd: *mut ::c_void,
pub ki_fd: *mut c_void,
// This is normally "struct vmspace".
/// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void,
pub ki_vmspace: *mut c_void,
/// Sleep address.
pub ki_wchan: *const ::c_void,
pub ki_wchan: *const c_void,
/// Process identifier.
pub ki_pid: ::pid_t,
pub ki_pid: crate::pid_t,
/// Parent process ID.
pub ki_ppid: ::pid_t,
pub ki_ppid: crate::pid_t,
/// Process group ID.
pub ki_pgid: ::pid_t,
pub ki_pgid: crate::pid_t,
/// tty process group ID.
pub ki_tpgid: ::pid_t,
pub ki_tpgid: crate::pid_t,
/// Process session ID.
pub ki_sid: ::pid_t,
pub ki_sid: crate::pid_t,
/// Terminal session ID.
pub ki_tsid: ::pid_t,
pub ki_tsid: crate::pid_t,
/// Job control counter.
pub ki_jobc: ::c_short,
pub ki_jobc: c_short,
/// Unused (just here for alignment).
pub ki_spare_short1: ::c_short,
pub ki_spare_short1: c_short,
/// Controlling tty dev.
pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t,
pub ki_siglist: crate::sigset_t,
/// Current signal mask.
pub ki_sigmask: ::sigset_t,
pub ki_sigmask: crate::sigset_t,
/// Signals being ignored.
pub ki_sigignore: ::sigset_t,
pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user.
pub ki_sigcatch: ::sigset_t,
pub ki_sigcatch: crate::sigset_t,
/// Effective user ID.
pub ki_uid: ::uid_t,
pub ki_uid: crate::uid_t,
/// Real user ID.
pub ki_ruid: ::uid_t,
pub ki_ruid: crate::uid_t,
/// Saved effective user ID.
pub ki_svuid: ::uid_t,
pub ki_svuid: crate::uid_t,
/// Real group ID.
pub ki_rgid: ::gid_t,
pub ki_rgid: crate::gid_t,
/// Saved effective group ID.
pub ki_svgid: ::gid_t,
pub ki_svgid: crate::gid_t,
/// Number of groups.
pub ki_ngroups: ::c_short,
pub ki_ngroups: c_short,
/// Unused (just here for alignment).
pub ki_spare_short2: ::c_short,
pub ki_spare_short2: c_short,
/// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size.
pub ki_size: ::vm_size_t,
pub ki_size: crate::vm_size_t,
/// Current resident set size in pages.
pub ki_rssize: ::segsz_t,
pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap.
pub ki_swrss: ::segsz_t,
pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX.
pub ki_tsize: ::segsz_t,
pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX.
pub ki_dsize: ::segsz_t,
pub ki_dsize: crate::segsz_t,
/// Stack size (pages).
pub ki_ssize: ::segsz_t,
pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal.
pub ki_xstat: ::u_short,
pub ki_xstat: crate::u_short,
/// Accounting flags.
pub ki_acflag: ::u_short,
pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t,
pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int,
pub ki_estcpu: crate::u_int,
/// Time since last blocked.
pub ki_slptime: ::u_int,
pub ki_slptime: crate::u_int,
/// Time swapped in or out.
pub ki_swtime: ::u_int,
pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults.
pub ki_cow: ::u_int,
pub ki_cow: crate::u_int,
/// Real time in microsec.
pub ki_runtime: u64,
/// Starting time.
pub ki_start: ::timeval,
pub ki_start: crate::timeval,
/// Time used by process children.
pub ki_childtime: ::timeval,
pub ki_childtime: crate::timeval,
/// P_* flags.
pub ki_flag: ::c_long,
pub ki_flag: c_long,
/// KI_* flags (below).
pub ki_kiflag: ::c_long,
pub ki_kiflag: c_long,
/// Kernel trace points.
pub ki_traceflag: ::c_int,
pub ki_traceflag: c_int,
/// S* process status.
pub ki_stat: ::c_char,
pub ki_stat: c_char,
/// Process "nice" value.
pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count.
pub ki_lock: ::c_char,
pub ki_lock: c_char,
/// Run queue index.
pub ki_rqindex: ::c_char,
pub ki_rqindex: c_char,
/// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar,
pub ki_oncpu_old: c_uchar,
/// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar,
pub ki_lastcpu_old: c_uchar,
/// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev.
pub ki_tdev: u64,
/// Which cpu we are on.
pub ki_oncpu: ::c_int,
pub ki_oncpu: c_int,
/// Last cpu we were on.
pub ki_lastcpu: ::c_int,
pub ki_lastcpu: c_int,
/// PID of tracing process.
pub ki_tracer: ::c_int,
pub ki_tracer: c_int,
/// P2_* flags.
pub ki_flag2: ::c_int,
pub ki_flag2: c_int,
/// Default FIB number.
pub ki_fibnum: ::c_int,
pub ki_fibnum: c_int,
/// Credential flags.
pub ki_cr_flags: ::u_int,
pub ki_cr_flags: crate::u_int,
/// Process jail ID.
pub ki_jid: ::c_int,
pub ki_jid: c_int,
/// Number of threads in total.
pub ki_numthreads: ::c_int,
pub ki_numthreads: c_int,
/// Thread ID.
pub ki_tid: ::lwpid_t,
pub ki_tid: crate::lwpid_t,
/// Process priority.
pub ki_pri: ::priority,
pub ki_pri: crate::priority,
/// Process rusage statistics.
pub ki_rusage: ::rusage,
pub ki_rusage: crate::rusage,
/// rusage of children processes.
pub ki_rusage_ch: ::rusage,
pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb".
/// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void,
pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void,
pub ki_kstack: *mut c_void,
/// User convenience pointer.
pub ki_udata: *mut ::c_void,
pub ki_udata: *mut c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc".
/// Pointer to process paths info.
pub ki_pd: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags.
pub ki_sflag: ::c_long,
pub ki_sflag: c_long,
/// kthread flag.
pub ki_tdflags: ::c_long,
pub ki_tdflags: c_long,
}
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
st_padding0: i16,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
pub st_rdev: ::dev_t,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_mtim_ext: i32,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_ctim_ext: i32,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_btim_ext: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u64,
pub st_spare: [u64; 10],
}
@@ -266,14 +272,14 @@ s! {
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
pub d_off: ::off_t,
pub d_fileno: crate::ino_t,
pub d_off: off_t,
pub d_reclen: u16,
pub d_type: u8,
d_pad0: u8,
pub d_namlen: u16,
d_pad1: u16,
pub d_name: [::c_char; 256],
pub d_name: [c_char; 256],
}
pub struct statfs {
@@ -293,12 +299,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64,
f_spare: [u64; 10],
pub f_namemax: u32,
pub f_owner: ::uid_t,
pub f_fsid: ::fsid_t,
f_charspare: [::c_char; 80],
pub f_fstypename: [::c_char; 16],
pub f_mntfromname: [::c_char; 1024],
pub f_mntonname: [::c_char; 1024],
pub f_owner: crate::uid_t,
pub f_fsid: crate::fsid_t,
f_charspare: [c_char; 80],
pub f_fstypename: [c_char; 16],
pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [c_char; 1024],
}
pub struct vnstat {
@@ -306,10 +312,10 @@ s_no_extra_traits! {
pub vn_size: u64,
pub vn_dev: u64,
pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char,
pub vn_type: ::c_int,
pub vn_mntdir: *mut c_char,
pub vn_type: c_int,
pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1],
pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
}
}
@@ -339,17 +345,17 @@ cfg_if! {
.f_mntfromname
.iter()
.zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
&& self
.f_mntonname
.iter()
.zip(other.f_mntonname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for statfs {}
impl ::fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for statfs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize)
@@ -371,8 +377,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for statfs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state);
self.f_type.hash(state);
self.f_flags.hash(state);
@@ -404,16 +410,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen
&& self.d_type == other.d_type
&& self.d_namlen == other.d_namlen
&& self
.d_name[..self.d_namlen as _]
&& self.d_name[..self.d_namlen as _]
.iter()
.zip(other.d_name.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for dirent {}
impl ::fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for dirent {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off)
@@ -424,8 +429,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for dirent {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state);
self.d_off.hash(state);
self.d_reclen.hash(state);
@@ -437,23 +442,23 @@ cfg_if! {
impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname;
let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid &&
self.vn_size == other.vn_size &&
self.vn_dev == other.vn_dev &&
self.vn_fsid == other.vn_fsid &&
self.vn_mntdir == other.vn_mntdir &&
self.vn_type == other.vn_type &&
self.vn_mode == other.vn_mode &&
self_vn_devname == other_vn_devname
self.vn_fileid == other.vn_fileid
&& self.vn_size == other.vn_size
&& self.vn_dev == other.vn_dev
&& self.vn_fsid == other.vn_fsid
&& self.vn_mntdir == other.vn_mntdir
&& self.vn_type == other.vn_type
&& self.vn_mode == other.vn_mode
&& self_vn_devname == other_vn_devname
}
}
impl Eq for vnstat {}
impl ::fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid)
@@ -467,9 +472,9 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl hash::Hash for vnstat {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state);
self.vn_size.hash(state);
@@ -484,28 +489,28 @@ cfg_if! {
}
}
pub const RAND_MAX: ::c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97;
pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13;
pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 255;
pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4;
pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x60;
pub const MINCORE_SUPER: c_int = 0x60;
safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +518,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev
}
}
f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
pub {const} fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}
pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn freelocale(loc: ::locale_t);
pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv(
msqid: ::c_int,
msgp: *mut ::c_void,
msgsz: ::size_t,
msgtyp: ::c_long,
msgflg: ::c_int,
) -> ::ssize_t;
msqid: c_int,
msgp: *mut c_void,
msgsz: size_t,
msgtyp: c_long,
msgflg: c_int,
) -> ssize_t;
pub fn cpuset_getdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *mut ::domainset_t,
policy: *mut ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *mut crate::domainset_t,
policy: *mut c_int,
) -> c_int;
pub fn cpuset_setdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *const ::domainset_t,
policy: ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *const crate::domainset_t,
policy: c_int,
) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut c_char) -> *mut c_char;
}
#[link(name = "kvm")]
extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
}
cfg_if! {

View File

@@ -1,12 +1,14 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000;
pub const PROC_LA_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_LA48_ON_EXEC: ::c_int = 1;
pub const PROC_LA_CTL_LA57_ON_EXEC: ::c_int = 2;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: ::c_int = 3;
pub const PROC_LA_STATUS_LA48: ::c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: ::c_int = 0x02000000;
use crate::prelude::*;
pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;
pub const PROC_LA_CTL: c_int = crate::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_LA48_ON_EXEC: c_int = 1;
pub const PROC_LA_CTL_LA57_ON_EXEC: c_int = 2;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: c_int = 3;
pub const PROC_LA_STATUS_LA48: c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: c_int = 0x02000000;

View File

@@ -1,279 +1,286 @@
use crate::off_t;
use crate::prelude::*;
// APIs in FreeBSD 15 that have changed since 11.
pub type nlink_t = u64;
pub type dev_t = u64;
pub type ino_t = u64;
pub type shmatt_t = ::c_uint;
pub type shmatt_t = c_uint;
pub type kpaddr_t = u64;
pub type kssize_t = i64;
pub type domainset_t = __c_anonymous_domainset;
s! {
pub struct shmid_ds {
pub shm_perm: ::ipc_perm,
pub shm_segsz: ::size_t,
pub shm_lpid: ::pid_t,
pub shm_cpid: ::pid_t,
pub shm_nattch: ::shmatt_t,
pub shm_atime: ::time_t,
pub shm_dtime: ::time_t,
pub shm_ctime: ::time_t,
pub shm_perm: crate::ipc_perm,
pub shm_segsz: size_t,
pub shm_lpid: crate::pid_t,
pub shm_cpid: crate::pid_t,
pub shm_nattch: crate::shmatt_t,
pub shm_atime: crate::time_t,
pub shm_dtime: crate::time_t,
pub shm_ctime: crate::time_t,
}
pub struct kevent {
pub ident: ::uintptr_t,
pub filter: ::c_short,
pub flags: ::c_ushort,
pub fflags: ::c_uint,
pub ident: crate::uintptr_t,
pub filter: c_short,
pub flags: c_ushort,
pub fflags: c_uint,
pub data: i64,
pub udata: *mut ::c_void,
pub udata: *mut c_void,
pub ext: [u64; 4],
}
pub struct kvm_page {
pub kp_version: ::u_int,
pub kp_paddr: ::kpaddr_t,
pub kp_kmap_vaddr: ::kvaddr_t,
pub kp_dmap_vaddr: ::kvaddr_t,
pub kp_prot: ::vm_prot_t,
pub kp_offset: ::off_t,
pub kp_len: ::size_t,
pub kp_version: crate::u_int,
pub kp_paddr: crate::kpaddr_t,
pub kp_kmap_vaddr: crate::kvaddr_t,
pub kp_dmap_vaddr: crate::kvaddr_t,
pub kp_prot: crate::vm_prot_t,
pub kp_offset: off_t,
pub kp_len: size_t,
}
pub struct __c_anonymous_domainset {
_priv: [::uintptr_t; 4],
#[cfg(target_pointer_width = "64")]
_priv: [c_ulong; 4],
#[cfg(target_pointer_width = "32")]
_priv: [c_ulong; 8],
}
pub struct kinfo_proc {
/// Size of this structure.
pub ki_structsize: ::c_int,
pub ki_structsize: c_int,
/// Reserved: layout identifier.
pub ki_layout: ::c_int,
pub ki_layout: c_int,
/// Address of command arguments.
pub ki_args: *mut ::pargs,
pub ki_args: *mut crate::pargs,
// This is normally "struct proc".
/// Address of proc.
pub ki_paddr: *mut ::c_void,
pub ki_paddr: *mut c_void,
// This is normally "struct user".
/// Kernel virtual address of u-area.
pub ki_addr: *mut ::c_void,
pub ki_addr: *mut c_void,
// This is normally "struct vnode".
/// Pointer to trace file.
pub ki_tracep: *mut ::c_void,
pub ki_tracep: *mut c_void,
// This is normally "struct vnode".
/// Pointer to executable file.
pub ki_textvp: *mut ::c_void,
pub ki_textvp: *mut c_void,
// This is normally "struct filedesc".
/// Pointer to open file info.
pub ki_fd: *mut ::c_void,
pub ki_fd: *mut c_void,
// This is normally "struct vmspace".
/// Pointer to kernel vmspace struct.
pub ki_vmspace: *mut ::c_void,
pub ki_vmspace: *mut c_void,
/// Sleep address.
pub ki_wchan: *const ::c_void,
pub ki_wchan: *const c_void,
/// Process identifier.
pub ki_pid: ::pid_t,
pub ki_pid: crate::pid_t,
/// Parent process ID.
pub ki_ppid: ::pid_t,
pub ki_ppid: crate::pid_t,
/// Process group ID.
pub ki_pgid: ::pid_t,
pub ki_pgid: crate::pid_t,
/// tty process group ID.
pub ki_tpgid: ::pid_t,
pub ki_tpgid: crate::pid_t,
/// Process session ID.
pub ki_sid: ::pid_t,
pub ki_sid: crate::pid_t,
/// Terminal session ID.
pub ki_tsid: ::pid_t,
pub ki_tsid: crate::pid_t,
/// Job control counter.
pub ki_jobc: ::c_short,
pub ki_jobc: c_short,
/// Unused (just here for alignment).
pub ki_spare_short1: ::c_short,
pub ki_spare_short1: c_short,
/// Controlling tty dev.
pub ki_tdev_freebsd11: u32,
/// Signals arrived but not delivered.
pub ki_siglist: ::sigset_t,
pub ki_siglist: crate::sigset_t,
/// Current signal mask.
pub ki_sigmask: ::sigset_t,
pub ki_sigmask: crate::sigset_t,
/// Signals being ignored.
pub ki_sigignore: ::sigset_t,
pub ki_sigignore: crate::sigset_t,
/// Signals being caught by user.
pub ki_sigcatch: ::sigset_t,
pub ki_sigcatch: crate::sigset_t,
/// Effective user ID.
pub ki_uid: ::uid_t,
pub ki_uid: crate::uid_t,
/// Real user ID.
pub ki_ruid: ::uid_t,
pub ki_ruid: crate::uid_t,
/// Saved effective user ID.
pub ki_svuid: ::uid_t,
pub ki_svuid: crate::uid_t,
/// Real group ID.
pub ki_rgid: ::gid_t,
pub ki_rgid: crate::gid_t,
/// Saved effective group ID.
pub ki_svgid: ::gid_t,
pub ki_svgid: crate::gid_t,
/// Number of groups.
pub ki_ngroups: ::c_short,
pub ki_ngroups: c_short,
/// Unused (just here for alignment).
pub ki_spare_short2: ::c_short,
pub ki_spare_short2: c_short,
/// Groups.
pub ki_groups: [::gid_t; ::KI_NGROUPS],
pub ki_groups: [crate::gid_t; crate::KI_NGROUPS],
/// Virtual size.
pub ki_size: ::vm_size_t,
pub ki_size: crate::vm_size_t,
/// Current resident set size in pages.
pub ki_rssize: ::segsz_t,
pub ki_rssize: crate::segsz_t,
/// Resident set size before last swap.
pub ki_swrss: ::segsz_t,
pub ki_swrss: crate::segsz_t,
/// Text size (pages) XXX.
pub ki_tsize: ::segsz_t,
pub ki_tsize: crate::segsz_t,
/// Data size (pages) XXX.
pub ki_dsize: ::segsz_t,
pub ki_dsize: crate::segsz_t,
/// Stack size (pages).
pub ki_ssize: ::segsz_t,
pub ki_ssize: crate::segsz_t,
/// Exit status for wait & stop signal.
pub ki_xstat: ::u_short,
pub ki_xstat: crate::u_short,
/// Accounting flags.
pub ki_acflag: ::u_short,
pub ki_acflag: crate::u_short,
/// %cpu for process during `ki_swtime`.
pub ki_pctcpu: ::fixpt_t,
pub ki_pctcpu: crate::fixpt_t,
/// Time averaged value of `ki_cpticks`.
pub ki_estcpu: ::u_int,
pub ki_estcpu: crate::u_int,
/// Time since last blocked.
pub ki_slptime: ::u_int,
pub ki_slptime: crate::u_int,
/// Time swapped in or out.
pub ki_swtime: ::u_int,
pub ki_swtime: crate::u_int,
/// Number of copy-on-write faults.
pub ki_cow: ::u_int,
pub ki_cow: crate::u_int,
/// Real time in microsec.
pub ki_runtime: u64,
/// Starting time.
pub ki_start: ::timeval,
pub ki_start: crate::timeval,
/// Time used by process children.
pub ki_childtime: ::timeval,
pub ki_childtime: crate::timeval,
/// P_* flags.
pub ki_flag: ::c_long,
pub ki_flag: c_long,
/// KI_* flags (below).
pub ki_kiflag: ::c_long,
pub ki_kiflag: c_long,
/// Kernel trace points.
pub ki_traceflag: ::c_int,
pub ki_traceflag: c_int,
/// S* process status.
pub ki_stat: ::c_char,
pub ki_stat: c_char,
/// Process "nice" value.
pub ki_nice: i8, // signed char
/// Process lock (prevent swap) count.
pub ki_lock: ::c_char,
pub ki_lock: c_char,
/// Run queue index.
pub ki_rqindex: ::c_char,
pub ki_rqindex: c_char,
/// Which cpu we are on.
pub ki_oncpu_old: ::c_uchar,
pub ki_oncpu_old: c_uchar,
/// Last cpu we were on.
pub ki_lastcpu_old: ::c_uchar,
pub ki_lastcpu_old: c_uchar,
/// Thread name.
pub ki_tdname: [::c_char; ::TDNAMLEN + 1],
pub ki_tdname: [c_char; crate::TDNAMLEN + 1],
/// Wchan message.
pub ki_wmesg: [::c_char; ::WMESGLEN + 1],
pub ki_wmesg: [c_char; crate::WMESGLEN + 1],
/// Setlogin name.
pub ki_login: [::c_char; ::LOGNAMELEN + 1],
pub ki_login: [c_char; crate::LOGNAMELEN + 1],
/// Lock name.
pub ki_lockname: [::c_char; ::LOCKNAMELEN + 1],
pub ki_lockname: [c_char; crate::LOCKNAMELEN + 1],
/// Command name.
pub ki_comm: [::c_char; ::COMMLEN + 1],
pub ki_comm: [c_char; crate::COMMLEN + 1],
/// Emulation name.
pub ki_emul: [::c_char; ::KI_EMULNAMELEN + 1],
pub ki_emul: [c_char; crate::KI_EMULNAMELEN + 1],
/// Login class.
pub ki_loginclass: [::c_char; ::LOGINCLASSLEN + 1],
pub ki_loginclass: [c_char; crate::LOGINCLASSLEN + 1],
/// More thread name.
pub ki_moretdname: [::c_char; ::MAXCOMLEN - ::TDNAMLEN + 1],
pub ki_moretdname: [c_char; crate::MAXCOMLEN - crate::TDNAMLEN + 1],
/// Spare string space.
pub ki_sparestrings: [[::c_char; 23]; 2], // little hack to allow PartialEq
pub ki_sparestrings: [[c_char; 23]; 2], // little hack to allow PartialEq
/// Spare room for growth.
pub ki_spareints: [::c_int; ::KI_NSPARE_INT],
pub ki_spareints: [c_int; crate::KI_NSPARE_INT],
/// Controlling tty dev.
pub ki_tdev: u64,
/// Which cpu we are on.
pub ki_oncpu: ::c_int,
pub ki_oncpu: c_int,
/// Last cpu we were on.
pub ki_lastcpu: ::c_int,
pub ki_lastcpu: c_int,
/// PID of tracing process.
pub ki_tracer: ::c_int,
pub ki_tracer: c_int,
/// P2_* flags.
pub ki_flag2: ::c_int,
pub ki_flag2: c_int,
/// Default FIB number.
pub ki_fibnum: ::c_int,
pub ki_fibnum: c_int,
/// Credential flags.
pub ki_cr_flags: ::u_int,
pub ki_cr_flags: crate::u_int,
/// Process jail ID.
pub ki_jid: ::c_int,
pub ki_jid: c_int,
/// Number of threads in total.
pub ki_numthreads: ::c_int,
pub ki_numthreads: c_int,
/// Thread ID.
pub ki_tid: ::lwpid_t,
pub ki_tid: crate::lwpid_t,
/// Process priority.
pub ki_pri: ::priority,
pub ki_pri: crate::priority,
/// Process rusage statistics.
pub ki_rusage: ::rusage,
pub ki_rusage: crate::rusage,
/// rusage of children processes.
pub ki_rusage_ch: ::rusage,
pub ki_rusage_ch: crate::rusage,
// This is normally "struct pcb".
/// Kernel virtual addr of pcb.
pub ki_pcb: *mut ::c_void,
pub ki_pcb: *mut c_void,
/// Kernel virtual addr of stack.
pub ki_kstack: *mut ::c_void,
pub ki_kstack: *mut c_void,
/// User convenience pointer.
pub ki_udata: *mut ::c_void,
pub ki_udata: *mut c_void,
// This is normally "struct thread".
pub ki_tdaddr: *mut ::c_void,
pub ki_tdaddr: *mut c_void,
// This is normally "struct pwddesc".
/// Pointer to process paths info.
pub ki_pd: *mut ::c_void,
pub ki_spareptrs: [*mut ::c_void; ::KI_NSPARE_PTR],
pub ki_sparelongs: [::c_long; ::KI_NSPARE_LONG],
pub ki_pd: *mut c_void,
pub ki_spareptrs: [*mut c_void; crate::KI_NSPARE_PTR],
pub ki_sparelongs: [c_long; crate::KI_NSPARE_LONG],
/// PS_* flags.
pub ki_sflag: ::c_long,
pub ki_sflag: c_long,
/// kthread flag.
pub ki_tdflags: ::c_long,
pub ki_tdflags: c_long,
}
pub struct stat {
pub st_dev: ::dev_t,
pub st_ino: ::ino_t,
pub st_nlink: ::nlink_t,
pub st_mode: ::mode_t,
pub st_dev: crate::dev_t,
pub st_ino: crate::ino_t,
pub st_nlink: crate::nlink_t,
pub st_mode: crate::mode_t,
st_padding0: i16,
pub st_uid: ::uid_t,
pub st_gid: ::gid_t,
pub st_uid: crate::uid_t,
pub st_gid: crate::gid_t,
st_padding1: i32,
pub st_rdev: ::dev_t,
pub st_rdev: crate::dev_t,
#[cfg(target_arch = "x86")]
st_atim_ext: i32,
pub st_atime: ::time_t,
pub st_atime_nsec: ::c_long,
pub st_atime: crate::time_t,
pub st_atime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_mtim_ext: i32,
pub st_mtime: ::time_t,
pub st_mtime_nsec: ::c_long,
pub st_mtime: crate::time_t,
pub st_mtime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_ctim_ext: i32,
pub st_ctime: ::time_t,
pub st_ctime_nsec: ::c_long,
pub st_ctime: crate::time_t,
pub st_ctime_nsec: c_long,
#[cfg(target_arch = "x86")]
st_btim_ext: i32,
pub st_birthtime: ::time_t,
pub st_birthtime_nsec: ::c_long,
pub st_size: ::off_t,
pub st_blocks: ::blkcnt_t,
pub st_blksize: ::blksize_t,
pub st_flags: ::fflags_t,
pub st_birthtime: crate::time_t,
pub st_birthtime_nsec: c_long,
pub st_size: off_t,
pub st_blocks: crate::blkcnt_t,
pub st_blksize: crate::blksize_t,
pub st_flags: crate::fflags_t,
pub st_gen: u64,
pub st_spare: [u64; 10],
pub st_filerev: u64,
pub st_spare: [u64; 9],
}
}
s_no_extra_traits! {
pub struct dirent {
pub d_fileno: ::ino_t,
pub d_off: ::off_t,
pub d_fileno: crate::ino_t,
pub d_off: off_t,
pub d_reclen: u16,
pub d_type: u8,
d_pad0: u8,
pub d_namlen: u16,
d_pad1: u16,
pub d_name: [::c_char; 256],
pub d_name: [c_char; 256],
}
pub struct statfs {
@@ -293,12 +300,12 @@ s_no_extra_traits! {
pub f_asyncreads: u64,
f_spare: [u64; 10],
pub f_namemax: u32,
pub f_owner: ::uid_t,
pub f_fsid: ::fsid_t,
f_charspare: [::c_char; 80],
pub f_fstypename: [::c_char; 16],
pub f_mntfromname: [::c_char; 1024],
pub f_mntonname: [::c_char; 1024],
pub f_owner: crate::uid_t,
pub f_fsid: crate::fsid_t,
f_charspare: [c_char; 80],
pub f_fstypename: [c_char; 16],
pub f_mntfromname: [c_char; 1024],
pub f_mntonname: [c_char; 1024],
}
pub struct vnstat {
@@ -306,10 +313,10 @@ s_no_extra_traits! {
pub vn_size: u64,
pub vn_dev: u64,
pub vn_fsid: u64,
pub vn_mntdir: *mut ::c_char,
pub vn_type: ::c_int,
pub vn_mntdir: *mut c_char,
pub vn_type: c_int,
pub vn_mode: u16,
pub vn_devname: [::c_char; ::SPECNAMELEN as usize + 1],
pub vn_devname: [c_char; crate::SPECNAMELEN as usize + 1],
}
}
@@ -339,17 +346,17 @@ cfg_if! {
.f_mntfromname
.iter()
.zip(other.f_mntfromname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
&& self
.f_mntonname
.iter()
.zip(other.f_mntonname.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for statfs {}
impl ::fmt::Debug for statfs {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for statfs {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("statfs")
.field("f_bsize", &self.f_bsize)
.field("f_iosize", &self.f_iosize)
@@ -371,8 +378,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for statfs {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for statfs {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.f_version.hash(state);
self.f_type.hash(state);
self.f_flags.hash(state);
@@ -404,16 +411,15 @@ cfg_if! {
&& self.d_reclen == other.d_reclen
&& self.d_type == other.d_type
&& self.d_namlen == other.d_namlen
&& self
.d_name[..self.d_namlen as _]
&& self.d_name[..self.d_namlen as _]
.iter()
.zip(other.d_name.iter())
.all(|(a,b)| a == b)
.all(|(a, b)| a == b)
}
}
impl Eq for dirent {}
impl ::fmt::Debug for dirent {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
impl fmt::Debug for dirent {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("dirent")
.field("d_fileno", &self.d_fileno)
.field("d_off", &self.d_off)
@@ -424,8 +430,8 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for dirent {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
impl hash::Hash for dirent {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.d_fileno.hash(state);
self.d_off.hash(state);
self.d_reclen.hash(state);
@@ -437,23 +443,23 @@ cfg_if! {
impl PartialEq for vnstat {
fn eq(&self, other: &vnstat) -> bool {
let self_vn_devname: &[::c_char] = &self.vn_devname;
let other_vn_devname: &[::c_char] = &other.vn_devname;
let self_vn_devname: &[c_char] = &self.vn_devname;
let other_vn_devname: &[c_char] = &other.vn_devname;
self.vn_fileid == other.vn_fileid &&
self.vn_size == other.vn_size &&
self.vn_dev == other.vn_dev &&
self.vn_fsid == other.vn_fsid &&
self.vn_mntdir == other.vn_mntdir &&
self.vn_type == other.vn_type &&
self.vn_mode == other.vn_mode &&
self_vn_devname == other_vn_devname
self.vn_fileid == other.vn_fileid
&& self.vn_size == other.vn_size
&& self.vn_dev == other.vn_dev
&& self.vn_fsid == other.vn_fsid
&& self.vn_mntdir == other.vn_mntdir
&& self.vn_type == other.vn_type
&& self.vn_mode == other.vn_mode
&& self_vn_devname == other_vn_devname
}
}
impl Eq for vnstat {}
impl ::fmt::Debug for vnstat {
fn fmt(&self, f: &mut ::fmt::Formatter) -> ::fmt::Result {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl fmt::Debug for vnstat {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
let self_vn_devname: &[c_char] = &self.vn_devname;
f.debug_struct("vnstat")
.field("vn_fileid", &self.vn_fileid)
@@ -467,9 +473,9 @@ cfg_if! {
.finish()
}
}
impl ::hash::Hash for vnstat {
fn hash<H: ::hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[::c_char] = &self.vn_devname;
impl hash::Hash for vnstat {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
let self_vn_devname: &[c_char] = &self.vn_devname;
self.vn_fileid.hash(state);
self.vn_size.hash(state);
@@ -484,28 +490,28 @@ cfg_if! {
}
}
pub const RAND_MAX: ::c_int = 0x7fff_ffff;
pub const ELAST: ::c_int = 97;
pub const RAND_MAX: c_int = 0x7fff_ffff;
pub const ELAST: c_int = 97;
pub const KF_TYPE_EVENTFD: ::c_int = 13;
pub const KF_TYPE_EVENTFD: c_int = 13;
/// max length of devicename
pub const SPECNAMELEN: ::c_int = 255;
pub const SPECNAMELEN: c_int = 255;
pub const KI_NSPARE_PTR: usize = 5;
/// domainset policies
pub const DOMAINSET_POLICY_INVALID: ::c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: ::c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: ::c_int = 2;
pub const DOMAINSET_POLICY_PREFER: ::c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: ::c_int = 4;
pub const DOMAINSET_POLICY_INVALID: c_int = 0;
pub const DOMAINSET_POLICY_ROUNDROBIN: c_int = 1;
pub const DOMAINSET_POLICY_FIRSTTOUCH: c_int = 2;
pub const DOMAINSET_POLICY_PREFER: c_int = 3;
pub const DOMAINSET_POLICY_INTERLEAVE: c_int = 4;
pub const MINCORE_SUPER: ::c_int = 0x60;
pub const MINCORE_SUPER: c_int = 0x60;
safe_f! {
pub {const} fn makedev(major: ::c_uint, minor: ::c_uint) -> ::dev_t {
let major = major as ::dev_t;
let minor = minor as ::dev_t;
pub {const} fn makedev(major: c_uint, minor: c_uint) -> crate::dev_t {
let major = major as crate::dev_t;
let minor = minor as crate::dev_t;
let mut dev = 0;
dev |= ((major & 0xffffff00) as dev_t) << 32;
dev |= ((major & 0x000000ff) as dev_t) << 8;
@@ -513,54 +519,52 @@ safe_f! {
dev |= ((minor & 0xffff00ff) as dev_t) << 0;
dev
}
}
f! {
pub fn major(dev: ::dev_t) -> ::c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as ::c_int
pub {const} fn major(dev: crate::dev_t) -> c_int {
(((dev >> 32) & 0xffffff00) | ((dev >> 8) & 0xff)) as c_int
}
pub fn minor(dev: ::dev_t) -> ::c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as ::c_int
pub {const} fn minor(dev: crate::dev_t) -> c_int {
(((dev >> 24) & 0xff00) | (dev & 0xffff00ff)) as c_int
}
}
extern "C" {
pub fn setgrent();
pub fn mprotect(addr: *mut ::c_void, len: ::size_t, prot: ::c_int) -> ::c_int;
pub fn freelocale(loc: ::locale_t);
pub fn mprotect(addr: *mut c_void, len: size_t, prot: c_int) -> c_int;
pub fn freelocale(loc: crate::locale_t);
pub fn msgrcv(
msqid: ::c_int,
msgp: *mut ::c_void,
msgsz: ::size_t,
msgtyp: ::c_long,
msgflg: ::c_int,
) -> ::ssize_t;
msqid: c_int,
msgp: *mut c_void,
msgsz: size_t,
msgtyp: c_long,
msgflg: c_int,
) -> ssize_t;
pub fn cpuset_getdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *mut ::domainset_t,
policy: *mut ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *mut crate::domainset_t,
policy: *mut c_int,
) -> c_int;
pub fn cpuset_setdomain(
level: ::cpulevel_t,
which: ::cpuwhich_t,
id: ::id_t,
setsize: ::size_t,
mask: *const ::domainset_t,
policy: ::c_int,
) -> ::c_int;
level: crate::cpulevel_t,
which: crate::cpuwhich_t,
id: crate::id_t,
setsize: size_t,
mask: *const crate::domainset_t,
policy: c_int,
) -> c_int;
pub fn dirname(path: *mut ::c_char) -> *mut ::c_char;
pub fn basename(path: *mut ::c_char) -> *mut ::c_char;
pub fn dirname(path: *mut c_char) -> *mut c_char;
pub fn basename(path: *mut c_char) -> *mut c_char;
}
#[link(name = "kvm")]
extern "C" {
pub fn kvm_kerndisp(kd: *mut ::kvm_t) -> ::kssize_t;
pub fn kvm_kerndisp(kd: *mut crate::kvm_t) -> crate::kssize_t;
}
cfg_if! {

View File

@@ -1,12 +1,14 @@
pub const PROC_KPTI_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: ::c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: ::c_int = 2;
pub const PROC_KPTI_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: ::c_int = 0x80000000;
pub const PROC_LA_CTL: ::c_int = ::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_STATUS: ::c_int = ::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_LA48_ON_EXEC: ::c_int = 1;
pub const PROC_LA_CTL_LA57_ON_EXEC: ::c_int = 2;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: ::c_int = 3;
pub const PROC_LA_STATUS_LA48: ::c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: ::c_int = 0x02000000;
use crate::prelude::*;
pub const PROC_KPTI_CTL: c_int = crate::PROC_PROCCTL_MD_MIN;
pub const PROC_KPTI_CTL_ENABLE_ON_EXEC: c_int = 1;
pub const PROC_KPTI_CTL_DISABLE_ON_EXEC: c_int = 2;
pub const PROC_KPTI_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 1;
pub const PROC_KPTI_STATUS_ACTIVE: c_int = 0x80000000;
pub const PROC_LA_CTL: c_int = crate::PROC_PROCCTL_MD_MIN + 2;
pub const PROC_LA_STATUS: c_int = crate::PROC_PROCCTL_MD_MIN + 3;
pub const PROC_LA_CTL_LA48_ON_EXEC: c_int = 1;
pub const PROC_LA_CTL_LA57_ON_EXEC: c_int = 2;
pub const PROC_LA_CTL_DEFAULT_ON_EXEC: c_int = 3;
pub const PROC_LA_STATUS_LA48: c_int = 0x01000000;
pub const PROC_LA_STATUS_LA57: c_int = 0x02000000;

File diff suppressed because it is too large Load Diff

View File

@@ -1,21 +1,77 @@
pub type c_char = u8;
pub type c_long = i32;
pub type c_ulong = u32;
use crate::prelude::*;
pub type clock_t = u32;
pub type wchar_t = i32;
pub type time_t = i64;
pub type suseconds_t = i32;
pub type register_t = i32;
// should be pub(crate), but that requires Rust 1.18.0
cfg_if! {
if #[cfg(libc_const_size_of)] {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = ::mem::size_of::<::c_int>() - 1;
} else {
#[doc(hidden)]
pub const _ALIGNBYTES: usize = 4 - 1;
s_no_extra_traits! {
#[repr(align(16))]
pub struct mcontext_t {
pub mc_vers: c_int,
pub mc_flags: c_int,
pub mc_onstack: c_int,
pub mc_len: c_int,
pub mc_avec: [u64; 64],
pub mc_av: [u32; 2],
pub mc_frame: [crate::register_t; 42],
pub mc_fpreg: [u64; 33],
pub mc_vsxfpreg: [u64; 32],
}
}
pub const MAP_32BIT: ::c_int = 0x00080000;
pub const MINSIGSTKSZ: ::size_t = 2048; // 512 * 4
cfg_if! {
if #[cfg(feature = "extra_traits")] {
impl PartialEq for mcontext_t {
fn eq(&self, other: &mcontext_t) -> bool {
self.mc_vers == other.mc_vers
&& self.mc_flags == other.mc_flags
&& self.mc_onstack == other.mc_onstack
&& self.mc_len == other.mc_len
&& self.mc_avec == other.mc_avec
&& self.mc_av == other.mc_av
&& self.mc_frame == other.mc_frame
&& self.mc_fpreg == other.mc_fpreg
&& self.mc_vsxfpreg == other.mc_vsxfpreg
}
}
impl Eq for mcontext_t {}
impl fmt::Debug for mcontext_t {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
f.debug_struct("mcontext_t")
.field("mc_vers", &self.mc_vers)
.field("mc_flags", &self.mc_flags)
.field("mc_onstack", &self.mc_onstack)
.field("mc_len", &self.mc_len)
.field("mc_avec", &self.mc_avec)
.field("mc_av", &self.mc_av)
.field("mc_frame", &self.mc_frame)
.field("mc_fpreg", &self.mc_fpreg)
.field("mc_vsxfpreg", &self.mc_vsxfpreg)
.finish()
}
}
impl hash::Hash for mcontext_t {
fn hash<H: hash::Hasher>(&self, state: &mut H) {
self.mc_vers.hash(state);
self.mc_flags.hash(state);
self.mc_onstack.hash(state);
self.mc_len.hash(state);
self.mc_avec.hash(state);
self.mc_av.hash(state);
self.mc_frame.hash(state);
self.mc_fpreg.hash(state);
self.mc_vsxfpreg.hash(state);
}
}
}
}
pub(crate) const _ALIGNBYTES: usize = mem::size_of::<c_int>() - 1;
pub const BIOCSRTIMEOUT: c_ulong = 0x8010426d;
pub const BIOCGRTIMEOUT: c_ulong = 0x4010426e;
pub const MAP_32BIT: c_int = 0x00080000;
pub const MINSIGSTKSZ: size_t = 2048; // 512 * 4
pub const TIOCTIMESTAMP: c_ulong = 0x40107459;

Some files were not shown because too many files have changed in this diff Show More