]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
samples: fix building fs-monitor on musl systems
authorBrahmajit Das <listout@listout.xyz>
Mon, 30 Jun 2025 11:02:41 +0000 (13:02 +0200)
committerJan Kara <jack@suse.cz>
Mon, 28 Jul 2025 16:14:15 +0000 (18:14 +0200)
samples/fanotify/fs-monitor.c:22:9: error: unknown type name '__s32'
   22 |         __s32 error;
      |         ^~~~~
samples/fanotify/fs-monitor.c:23:9: error: unknown type name '__u32'
   23 |         __u32 error_count;
      |         ^~~~~
samples/fanotify/fs-monitor.c: In function 'handle_notifications':
samples/fanotify/fs-monitor.c:98:50: error: 'fsid_t' has no member named 'val';
did you mean '__val'?
   98 |                                        fid->fsid.val[0],
fid->fsid.val[1]);
      |                                                  ^~~
      |                                                  __val
samples/fanotify/fs-monitor.c:98:68: error: 'fsid_t' has no member named 'val';
did you mean '__val'?
   98 |                                        fid->fsid.val[0],
fid->fsid.val[1]);
      |                                                                    ^~~
      |                                                                    __val

This is due to sys/fanotify.h on musl does not include
linux/fanotify.h[0] unlike glibc which includes it. This also results in
fsid not being of type __kernel_fsid_t, rather the libc's definition of
it which does not have val, but instead __val.

[0]: https://git.musl-libc.org/cgit/musl/tree/include/sys/fanotify.h
Signed-off-by: Brahmajit Das <listout@listout.xyz>
Signed-off-by: Jan Kara <jack@suse.cz>
Link: https://patch.msgid.link/20250630103011.27484-1-listout@listout.xyz
samples/fanotify/fs-monitor.c

index 608db24c471e762e835a5567e89ca5d877a8e984..28c0a652ffebffe318b137af0c167070a6b6dca3 100644 (file)
@@ -12,6 +12,9 @@
 #include <sys/fanotify.h>
 #include <sys/types.h>
 #include <unistd.h>
+#ifndef __GLIBC__
+#include <asm-generic/int-ll64.h>
+#endif
 
 #ifndef FAN_FS_ERROR
 #define FAN_FS_ERROR           0x00008000
@@ -95,7 +98,11 @@ static void handle_notifications(char *buffer, int len)
                                fid = (struct fanotify_event_info_fid *) info;
 
                                printf("\tfsid: %x%x\n",
+#if defined(__GLIBC__)
                                       fid->fsid.val[0], fid->fsid.val[1]);
+#else
+                                      fid->fsid.__val[0], fid->fsid.__val[1]);
+#endif
                                print_fh((struct file_handle *) &fid->handle);
                                break;