Message ID | 1579880839-31466-2-git-send-email-aleksandar.markovic@rt-rk.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | linux-user: Add support for fs and fd ioctls | expand |
Le 24/01/2020 à 16:47, Aleksandar Markovic a écrit : > From: Aleksandar Markovic <amarkovic@wavecomp.com> > > Both FS_IOC_FSGETXATTR and FS_IOC_FSSETXATTR accept a pointer to > the structure > > struct fsxattr { > __u32 fsx_xflags; /* xflags field value (get/set) */ > __u32 fsx_extsize; /* extsize field value (get/set)*/ > __u32 fsx_nextents; /* nextents field value (get) */ > __u32 fsx_projid; /* project identifier (get/set) */ > __u32 fsx_cowextsize; /* CoW extsize field value (get/set)*/ > unsigned char fsx_pad[8]; > }; > > as their third argument. > > These ioctls were relatively recently introduced, so the "#ifdef" > guards are used in this implementation. > > Signed-off-by: Aleksandar Markovic <amarkovic@wavecomp.com> > --- > linux-user/ioctls.h | 7 +++++++ > linux-user/syscall_defs.h | 6 ++++++ > 2 files changed, 13 insertions(+) > > diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h > index 73dcc76..9fb9d6f 100644 > --- a/linux-user/ioctls.h > +++ b/linux-user/ioctls.h > @@ -173,6 +173,13 @@ > IOCTL(FS_IOC32_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) > IOCTL(FS_IOC32_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) > IOCTL(FS_IOC32_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) > +#ifdef FS_IOC_FSGETXATTR > + IOCTL(FS_IOC_FSGETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) kernel declares that as IOC_R > +#endif > +#ifdef FS_IOC_FSSETXATTR > + IOCTL(FS_IOC_FSSETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) > +#endif > + > > #ifdef CONFIG_USBFS > /* USB ioctls */ > diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h > index 9b61ae8..ed5068f 100644 > --- a/linux-user/syscall_defs.h > +++ b/linux-user/syscall_defs.h > @@ -966,6 +966,12 @@ struct target_rtc_pll_info { > #define TARGET_FS_IOC32_SETFLAGS TARGET_IOW('f', 2, int) > #define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, int) > #define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int) > +#ifdef FS_IOC_FSGETXATTR > +#define TARGET_FS_IOC_FSGETXATTR TARGET_IOR('X', 31, struct fsxattr) > +#endif > +#ifdef FS_IOC_FSSETXATTR > +#define TARGET_FS_IOC_FSSETXATTR TARGET_IOR('X', 32, struct fsxattr) kernel declares that as _IOW > +#endif > > /* usb ioctls */ > #define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0) > where is defined STRUCT(fsxattr, ...)? Thanks, Laurent
diff --git a/linux-user/ioctls.h b/linux-user/ioctls.h index 73dcc76..9fb9d6f 100644 --- a/linux-user/ioctls.h +++ b/linux-user/ioctls.h @@ -173,6 +173,13 @@ IOCTL(FS_IOC32_SETFLAGS, IOC_W, MK_PTR(TYPE_INT)) IOCTL(FS_IOC32_GETVERSION, IOC_R, MK_PTR(TYPE_INT)) IOCTL(FS_IOC32_SETVERSION, IOC_W, MK_PTR(TYPE_INT)) +#ifdef FS_IOC_FSGETXATTR + IOCTL(FS_IOC_FSGETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) +#endif +#ifdef FS_IOC_FSSETXATTR + IOCTL(FS_IOC_FSSETXATTR, IOC_W, MK_PTR(MK_STRUCT(STRUCT_fsxattr))) +#endif + #ifdef CONFIG_USBFS /* USB ioctls */ diff --git a/linux-user/syscall_defs.h b/linux-user/syscall_defs.h index 9b61ae8..ed5068f 100644 --- a/linux-user/syscall_defs.h +++ b/linux-user/syscall_defs.h @@ -966,6 +966,12 @@ struct target_rtc_pll_info { #define TARGET_FS_IOC32_SETFLAGS TARGET_IOW('f', 2, int) #define TARGET_FS_IOC32_GETVERSION TARGET_IOR('v', 1, int) #define TARGET_FS_IOC32_SETVERSION TARGET_IOW('v', 2, int) +#ifdef FS_IOC_FSGETXATTR +#define TARGET_FS_IOC_FSGETXATTR TARGET_IOR('X', 31, struct fsxattr) +#endif +#ifdef FS_IOC_FSSETXATTR +#define TARGET_FS_IOC_FSSETXATTR TARGET_IOR('X', 32, struct fsxattr) +#endif /* usb ioctls */ #define TARGET_USBDEVFS_CONTROL TARGET_IOWRU('U', 0)