PRE(sys_kcmp)
{
- PRINT("kcmp ( %ld, %ld, %ld, %lu, %lu )", ARG1, ARG1, ARG3, ARG4, ARG5);
- PRE_REG_READ5(long, "kcmp",
- vki_pid_t, pid1, vki_pid_t, pid2, int, type,
- unsigned long, idx1, unsigned long, idx2);
+ PRINT("kcmp ( %ld, %ld, %ld, %lu, %lu )", ARG1, ARG2, ARG3, ARG4, ARG5);
+ switch (ARG3) {
+ case VKI_KCMP_VM: case VKI_KCMP_FILES: case VKI_KCMP_FS:
+ case VKI_KCMP_SIGHAND: case VKI_KCMP_IO: case VKI_KCMP_SYSVSEM:
+ /* Most of the comparison types don't look at |idx1| or
+ |idx2|. */
+ PRE_REG_READ3(long, "kcmp",
+ vki_pid_t, pid1, vki_pid_t, pid2, int, type);
+ break;
+ case VKI_KCMP_FILE:
+ default:
+ PRE_REG_READ5(long, "kcmp",
+ vki_pid_t, pid1, vki_pid_t, pid2, int, type,
+ unsigned long, idx1, unsigned long, idx2);
+ break;
+ }
}
#undef PRE
#define VKI_MEDIA_IOC_ENUM_LINKS _VKI_IOWR('|', 0x02, struct vki_media_links_enum)
#define VKI_MEDIA_IOC_SETUP_LINK _VKI_IOWR('|', 0x03, struct vki_media_link_desc)
+/* Comparison type */
+enum vki_kcmp_type {
+ VKI_KCMP_FILE,
+ VKI_KCMP_VM,
+ VKI_KCMP_FILES,
+ VKI_KCMP_FS,
+ VKI_KCMP_SIGHAND,
+ VKI_KCMP_IO,
+ VKI_KCMP_SYSVSEM,
+
+ VKI_KCMP_TYPES
+};
+
#endif // __VKI_LINUX_H
/*--------------------------------------------------------------------*/