#define afs_hz HZ
#include "h/sched.h"
+/* in case cred.h is present but not included in sched.h */
+#if defined(HAVE_LINUX_CRED_H)
+#include "h/cred.h"
+#endif
#if defined(HAVE_LINUX_CURRENT_KERNEL_TIME)
static inline time_t osi_Time(void) {
struct timespec xtime;
#define IsAfsVnode(V) ((V)->i_sb == afs_globalVFS) /* test superblock instead */
#define SetAfsVnode(V) /* unnecessary */
+#if defined(HAVE_LINUX_UACCESS_H)
+#include <linux/uaccess.h>
+#else
#include <asm/uaccess.h>
+#endif
#define copyin(F, T, C) (copy_from_user ((char*)(T), (char*)(F), (C)) > 0 ? EFAULT : 0)
static inline long copyinstr(char *from, char *to, int count, int *length) {
#define NGROUPS NGROUPS_SMALL
#endif
+#ifdef STRUCT_GROUP_INFO_HAS_GID
+/* compat macro for Linux 4.9 */
+#define GROUP_AT(gi,x) ((gi)->gid[x])
+#endif
+
typedef struct task_struct afs_proc_t;
#ifdef HAVE_LINUX_KUID_T