* [pve-devel] [PATCH proxmox-fuse-rs] add explicit "C" ABI to all extern function declarations
@ 2025-11-13 2:13 Kefu Chai
0 siblings, 0 replies; only message in thread
From: Kefu Chai @ 2025-11-13 2:13 UTC (permalink / raw)
To: pve-devel
This fixes deprecation warnings where extern function declarations
did not explicitly specify the ABI. All extern fn types in the
FUSE Operations struct now use `extern "C" fn` instead of `extern fn`.
The C ABI is required for FUSE callbacks that interface with the
native libfuse library.
Signed-off-by: Kefu Chai <k.chai@proxmox.com>
---
src/sys.rs | 86 +++++++++++++++++++++++++++---------------------------
1 file changed, 43 insertions(+), 43 deletions(-)
diff --git a/src/sys.rs b/src/sys.rs
index a08eece..17a01de 100644
--- a/src/sys.rs
+++ b/src/sys.rs
@@ -113,49 +113,49 @@ default_to_none! {
// The order in which the functions are listed matters, as the offset in the
// struct defines what function the fuse driver uses.
// It should therefore not be altered!
- pub init: Option<extern fn(userdata: MutPtr)>,
- pub destroy: Option<extern fn(userdata: MutPtr)>,
- pub lookup: Option<extern fn(req: Request, parent: u64, name: StrPtr)>,
- pub forget: Option<extern fn(req: Request, inode: u64, nlookup: u64)>,
- pub getattr: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub setattr: Option<extern fn(req: Request, inode: u64, attr: *const libc::stat, to_set: c_int, file_info: *const FuseFileInfo)>,
- pub readlink: Option<extern fn(req: Request, inode: u64)>,
- pub mknod: Option<extern fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t, rdev: libc::dev_t)>,
- pub mkdir: Option<extern fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t)>,
- pub unlink: Option<extern fn(req: Request, parent: u64, name: StrPtr)>,
- pub rmdir: Option<extern fn(req: Request, parent: u64, name: StrPtr)>,
- pub symlink: Option<extern fn(req: Request, link: StrPtr, parent: u64, name: StrPtr)>,
- pub rename: Option<extern fn(req: Request, parent: u64, name: StrPtr, newparent: u64, newname: StrPtr, flags: c_int)>,
- pub link: Option<extern fn(req: Request, inode: u64, newparent: u64, newname: StrPtr)>,
- pub open: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub read: Option<extern fn(req: Request, inode: u64, size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>,
- pub write: Option<extern fn(req: Request, inode: u64, buffer: *const u8, size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>,
- pub flush: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub release: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub fsync: Option<extern fn(req: Request, inode: u64, datasync: c_int, file_info: *const FuseFileInfo)>,
- pub opendir: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub readdir: Option<extern fn(req: Request, inode: u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>,
- pub releasedir: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
- pub fsyncdir: Option<extern fn(req: Request, inode: u64, datasync: c_int, file_info: *const FuseFileInfo)>,
- pub statfs: Option<extern fn(req: Request, inode: u64)>,
- pub setxattr: Option<extern fn(req: Request, inode: u64, name: StrPtr, value: StrPtr, size: size_t, flags: c_int)>,
- pub getxattr: Option<extern fn(req: Request, inode: u64, name: StrPtr, size: size_t)>,
- pub listxattr: Option<extern fn(req: Request, inode: u64, size: size_t)>,
- pub removexattr: Option<extern fn(req: Request, inode: u64, name: StrPtr)>,
- pub access: Option<extern fn(req: Request, inode: u64, mask: i32)>,
- pub create: Option<extern fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t, file_info: *const FuseFileInfo)>,
- pub getlk: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo, lock: MutPtr)>,
- pub setlk: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo, lock: MutPtr, sleep: c_int)>,
- pub bmap: Option<extern fn(req: Request, inode: u64, blocksize: size_t, idx: u64)>,
- pub ioctl: Option<extern fn(req: Request, inode: u64, cmd: c_int, arg: MutPtr, file_info: *const FuseFileInfo, flags: c_int, in_buf: ConstPtr, in_bufsz: size_t, out_bufsz: size_t)>,
- pub poll: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo, pollhandle: MutPtr)>,
- pub write_buf: Option<extern fn(req: Request, inode: u64, bufv: MutPtr, offset: libc::off_t, file_info: *const FuseFileInfo)>,
- pub retrieve_reply: Option<extern fn(req: Request, cookie: ConstPtr, inode: u64, offset: libc::off_t, bufv: MutPtr)>,
- pub forget_multi: Option<extern fn(req: Request, count: size_t, forgets: MutPtr)>,
- pub flock: Option<extern fn(req: Request, inode: u64, file_info: *const FuseFileInfo, op: c_int)>,
- pub fallocate: Option<extern fn(req: Request, inode: u64, mode: c_int, offset: libc::off_t, length: libc::off_t, file_info: *const FuseFileInfo)>,
- pub readdirplus: Option<extern fn(req: Request, inode: u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>,
- pub copy_file_range: Option<extern fn(req: Request, ino_in: u64, off_in: libc::off_t, fi_in: *const FuseFileInfo, ino_out: u64, off_out: libc::off_t, fi_out: *const FuseFileInfo, len: size_t, flags: c_int)>,
+ pub init: Option<extern "C" fn(userdata: MutPtr)>,
+ pub destroy: Option<extern "C" fn(userdata: MutPtr)>,
+ pub lookup: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr)>,
+ pub forget: Option<extern "C" fn(req: Request, inode: u64, nlookup: u64)>,
+ pub getattr: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub setattr: Option<extern "C" fn(req: Request, inode: u64, attr: *const libc::stat, to_set: c_int, file_info: *const FuseFileInfo)>,
+ pub readlink: Option<extern "C" fn(req: Request, inode: u64)>,
+ pub mknod: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t, rdev: libc::dev_t)>,
+ pub mkdir: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t)>,
+ pub unlink: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr)>,
+ pub rmdir: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr)>,
+ pub symlink: Option<extern "C" fn(req: Request, link: StrPtr, parent: u64, name: StrPtr)>,
+ pub rename: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr, newparent: u64, newname: StrPtr, flags: c_int)>,
+ pub link: Option<extern "C" fn(req: Request, inode: u64, newparent: u64, newname: StrPtr)>,
+ pub open: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub read: Option<extern "C" fn(req: Request, inode: u64, size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>,
+ pub write: Option<extern "C" fn(req: Request, inode: u64, buffer: *const u8, size: size_t, offset: libc::off_t, file_info: *const FuseFileInfo)>,
+ pub flush: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub release: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub fsync: Option<extern "C" fn(req: Request, inode: u64, datasync: c_int, file_info: *const FuseFileInfo)>,
+ pub opendir: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub readdir: Option<extern "C" fn(req: Request, inode: u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>,
+ pub releasedir: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo)>,
+ pub fsyncdir: Option<extern "C" fn(req: Request, inode: u64, datasync: c_int, file_info: *const FuseFileInfo)>,
+ pub statfs: Option<extern "C" fn(req: Request, inode: u64)>,
+ pub setxattr: Option<extern "C" fn(req: Request, inode: u64, name: StrPtr, value: StrPtr, size: size_t, flags: c_int)>,
+ pub getxattr: Option<extern "C" fn(req: Request, inode: u64, name: StrPtr, size: size_t)>,
+ pub listxattr: Option<extern "C" fn(req: Request, inode: u64, size: size_t)>,
+ pub removexattr: Option<extern "C" fn(req: Request, inode: u64, name: StrPtr)>,
+ pub access: Option<extern "C" fn(req: Request, inode: u64, mask: i32)>,
+ pub create: Option<extern "C" fn(req: Request, parent: u64, name: StrPtr, mode: libc::mode_t, file_info: *const FuseFileInfo)>,
+ pub getlk: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo, lock: MutPtr)>,
+ pub setlk: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo, lock: MutPtr, sleep: c_int)>,
+ pub bmap: Option<extern "C" fn(req: Request, inode: u64, blocksize: size_t, idx: u64)>,
+ pub ioctl: Option<extern "C" fn(req: Request, inode: u64, cmd: c_int, arg: MutPtr, file_info: *const FuseFileInfo, flags: c_int, in_buf: ConstPtr, in_bufsz: size_t, out_bufsz: size_t)>,
+ pub poll: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo, pollhandle: MutPtr)>,
+ pub write_buf: Option<extern "C" fn(req: Request, inode: u64, bufv: MutPtr, offset: libc::off_t, file_info: *const FuseFileInfo)>,
+ pub retrieve_reply: Option<extern "C" fn(req: Request, cookie: ConstPtr, inode: u64, offset: libc::off_t, bufv: MutPtr)>,
+ pub forget_multi: Option<extern "C" fn(req: Request, count: size_t, forgets: MutPtr)>,
+ pub flock: Option<extern "C" fn(req: Request, inode: u64, file_info: *const FuseFileInfo, op: c_int)>,
+ pub fallocate: Option<extern "C" fn(req: Request, inode: u64, mode: c_int, offset: libc::off_t, length: libc::off_t, file_info: *const FuseFileInfo)>,
+ pub readdirplus: Option<extern "C" fn(req: Request, inode: u64, size: size_t, offset: off_t, file_info: *const FuseFileInfo)>,
+ pub copy_file_range: Option<extern "C" fn(req: Request, ino_in: u64, off_in: libc::off_t, fi_in: *const FuseFileInfo, ino_out: u64, off_out: libc::off_t, fi_out: *const FuseFileInfo, len: size_t, flags: c_int)>,
}
}
--
2.47.3
_______________________________________________
pve-devel mailing list
pve-devel@lists.proxmox.com
https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-11-13 2:13 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-11-13 2:13 [pve-devel] [PATCH proxmox-fuse-rs] add explicit "C" ABI to all extern function declarations Kefu Chai
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox