Skip to content

Commit b610c7e

Browse files
jorge-ortegaLegNeato
authored andcommitted
refactor(cust_raw): Add must_use attrbuites on result/error types.
CUDA libraries have different result types (`CUresult`, `cudaError_t`, etc.) that must be checked after calling the function. This change adds `must_use` attribute on those types and functions that return that type when generating the bindings. This also fixes the warnings caused by this in places where the result type was not checked by either checking the result type, or ignore the value.
1 parent 0c4cf01 commit b610c7e

File tree

12 files changed

+25
-14
lines changed

12 files changed

+25
-14
lines changed

crates/blastoff/src/context.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ impl CublasContext {
340340
impl Drop for CublasContext {
341341
fn drop(&mut self) {
342342
unsafe {
343-
cublas_sys::cublasDestroy(self.raw);
343+
let _ = cublas_sys::cublasDestroy(self.raw);
344344
}
345345
}
346346
}

crates/cust/src/context/legacy.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -372,7 +372,7 @@ impl Drop for Context {
372372

373373
unsafe {
374374
let inner = mem::replace(&mut self.inner, ptr::null_mut());
375-
driver_sys::cuCtxDestroy(inner);
375+
let _ = driver_sys::cuCtxDestroy(inner);
376376
}
377377
}
378378
}

crates/cust/src/context/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ impl Context {
197197
driver_sys::cuDevicePrimaryCtxRetain(inner.as_mut_ptr(), device.as_raw())
198198
.to_result()?;
199199
let inner = inner.assume_init();
200-
driver_sys::cuCtxSetCurrent(inner);
200+
driver_sys::cuCtxSetCurrent(inner).to_result()?;
201201
Ok(Self {
202202
inner,
203203
device: device.as_raw(),
@@ -316,7 +316,7 @@ impl Drop for Context {
316316

317317
unsafe {
318318
self.inner = ptr::null_mut();
319-
driver_sys::cuDevicePrimaryCtxRelease(self.device);
319+
let _ = driver_sys::cuDevicePrimaryCtxRelease(self.device);
320320
}
321321
}
322322
}

crates/cust/src/event.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,9 @@ impl Event {
347347

348348
impl Drop for Event {
349349
fn drop(&mut self) {
350-
unsafe { cuEventDestroy(self.0) };
350+
unsafe {
351+
let _ = cuEventDestroy(self.0);
352+
};
351353
}
352354
}
353355

crates/cust/src/link.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,8 @@ impl Linker {
137137

138138
impl Drop for Linker {
139139
fn drop(&mut self) {
140-
unsafe { driver_sys::cuLinkDestroy(self.raw) };
140+
unsafe {
141+
let _ = driver_sys::cuLinkDestroy(self.raw);
142+
};
141143
}
142144
}

crates/cust/src/memory/array.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -867,7 +867,9 @@ impl std::fmt::Debug for ArrayObject {
867867

868868
impl Drop for ArrayObject {
869869
fn drop(&mut self) {
870-
unsafe { driver_sys::cuArrayDestroy(self.handle) };
870+
unsafe {
871+
let _ = driver_sys::cuArrayDestroy(self.handle);
872+
};
871873
}
872874
}
873875

crates/cust/src/module.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -491,7 +491,7 @@ impl Drop for Module {
491491
unsafe {
492492
// No choice but to panic if this fails...
493493
let module = mem::replace(&mut self.inner, ptr::null_mut());
494-
driver_sys::cuModuleUnload(module);
494+
let _ = driver_sys::cuModuleUnload(module);
495495
}
496496
}
497497
}

crates/cust/src/stream.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -344,7 +344,7 @@ impl Drop for Stream {
344344
unsafe {
345345
let inner = mem::replace(&mut self.inner, ptr::null_mut());
346346

347-
driver_sys::cuStreamDestroy(inner);
347+
let _ = driver_sys::cuStreamDestroy(inner);
348348
}
349349
}
350350
}

crates/cust/src/surface.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ impl Drop for Surface {
3030
}
3131
}
3232

33-
cuSurfObjectDestroy(self.handle);
33+
let _ = cuSurfObjectDestroy(self.handle);
3434
}
3535
}
3636
}

crates/cust/src/texture.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -415,7 +415,7 @@ impl Drop for Texture {
415415
}
416416
}
417417

418-
cuTexObjectDestroy(self.handle);
418+
let _ = cuTexObjectDestroy(self.handle);
419419
}
420420
}
421421
}

crates/cust_raw/build/main.rs

+5
Original file line numberDiff line numberDiff line change
@@ -137,6 +137,7 @@ fn create_cuda_driver_bindings(sdk: &cuda_sdk::CudaSdk, outdir: &path::Path) {
137137
.derive_ord(true)
138138
.size_t_is_usize(true)
139139
.layout_tests(true)
140+
.must_use_type("CUresult")
140141
.generate()
141142
.expect("Unable to generate CUDA driver bindings.");
142143
bindings
@@ -178,6 +179,7 @@ fn create_cuda_runtime_bindings(sdk: &cuda_sdk::CudaSdk, outdir: &path::Path) {
178179
.derive_ord(true)
179180
.size_t_is_usize(true)
180181
.layout_tests(true)
182+
.must_use_type("cudaError_t")
181183
.generate()
182184
.expect("Unable to generate CUDA runtime bindings.");
183185
bindings
@@ -224,6 +226,7 @@ fn create_cublas_bindings(sdk: &cuda_sdk::CudaSdk, outdir: &path::Path) {
224226
.derive_ord(true)
225227
.size_t_is_usize(true)
226228
.layout_tests(true)
229+
.must_use_type("cublasStatus_t")
227230
.generate()
228231
.unwrap_or_else(|_| panic!("Unable to generate {pkg} bindings."));
229232
bindings
@@ -257,6 +260,7 @@ fn create_nptx_compiler_bindings(sdk: &cuda_sdk::CudaSdk, outdir: &path::Path) {
257260
.derive_ord(true)
258261
.size_t_is_usize(true)
259262
.layout_tests(true)
263+
.must_use_type("nvPTXCompileResult")
260264
.generate()
261265
.expect("Unable to generate nvptx-compiler bindings.");
262266
bindings
@@ -287,6 +291,7 @@ fn create_nvvm_bindings(sdk: &cuda_sdk::CudaSdk, outdir: &path::Path) {
287291
.derive_ord(true)
288292
.size_t_is_usize(true)
289293
.layout_tests(true)
294+
.must_use_type("nvvmResult")
290295
.generate()
291296
.expect("Unable to generate libNVVM bindings.");
292297
bindings

crates/nvvm/src/lib.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ pub fn ir_version() -> (i32, i32) {
2020
let mut major_dbg = MaybeUninit::uninit();
2121
let mut minor_dbg = MaybeUninit::uninit();
2222
// according to the docs this cant fail
23-
nvvm_sys::nvvmIRVersion(
23+
let _ = nvvm_sys::nvvmIRVersion(
2424
major_ir.as_mut_ptr(),
2525
minor_ir.as_mut_ptr(),
2626
major_dbg.as_mut_ptr(),
@@ -38,7 +38,7 @@ pub fn dbg_version() -> (i32, i32) {
3838
let mut major_dbg = MaybeUninit::uninit();
3939
let mut minor_dbg = MaybeUninit::uninit();
4040
// according to the docs this cant fail
41-
nvvm_sys::nvvmIRVersion(
41+
let _ = nvvm_sys::nvvmIRVersion(
4242
major_ir.as_mut_ptr(),
4343
minor_ir.as_mut_ptr(),
4444
major_dbg.as_mut_ptr(),
@@ -54,7 +54,7 @@ pub fn nvvm_version() -> (i32, i32) {
5454
let mut major = MaybeUninit::uninit();
5555
let mut minor = MaybeUninit::uninit();
5656
// according to the docs this cant fail
57-
nvvm_sys::nvvmVersion(major.as_mut_ptr(), minor.as_mut_ptr());
57+
let _ = nvvm_sys::nvvmVersion(major.as_mut_ptr(), minor.as_mut_ptr());
5858
(major.assume_init(), minor.assume_init())
5959
}
6060
}

0 commit comments

Comments
 (0)