UL_BUILD_INIT([lsfd])
UL_REQUIRES_LINUX([lsfd])
UL_REQUIRES_BUILD([lsfd], [libsmartcols])
-UL_REQUIRES_HAVE([lsfd], [linux_kcmp_h], [linux/kcmp.h header file])
AM_CONDITIONAL([BUILD_LSFD], [test "x$build_lsfd" = xyes])
AC_ARG_ENABLE([lslogins],
#include <sys/uio.h>
#include <linux/sched.h>
#include <sys/syscall.h>
-#include <linux/kcmp.h>
+
+#ifdef HAVE_LINUX_KCMP_H
+# include <linux/kcmp.h>
static int kcmp(pid_t pid1, pid_t pid2, int type,
unsigned long idx1, unsigned long idx2)
{
return syscall(SYS_kcmp, pid1, pid2, type, idx1, idx2);
}
+#else
+# ifndef KCMP_FS
+# define KCMP_FS 0
+# endif
+# ifndef KCMP_VM
+# define KCMP_VM 0
+# endif
+# ifndef KCMP_FILES
+# define KCMP_FILES 0
+# endif
+static int kcmp(pid_t pid1 __attribute__((__unused__)),
+ pid_t pid2 __attribute__((__unused__)),
+ int type __attribute__((__unused__)),
+ unsigned long idx1 __attribute__((__unused__)),
+ unsigned long idx2 __attribute__((__unused__)))
+{
+ /* lsfd uses kcmp only for optimization. If the platform doesn't provide
+ * kcmp, just returning an error is acceptable. */
+ errno = ENOSYS;
+ return -1;
+}
+#endif
/* See proc(5).
* Defined in linux/include/linux/sched.h private header file. */