all lists on lists.proxmox.com
 help / color / mirror / Atom feed
* [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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.
Service provided by Proxmox Server Solutions GmbH | Privacy | Legal