#else
#include "sys/vfs.h"
#ifdef AFS_LINUX20_ENV
+#ifndef UIO_MAXIOV
#define UIO_MAXIOV 1 /* don't care */
+#endif
#if __GLIBC_MINOR__ == 0
#include <iovec.h>
#endif
#undef ULONG_MAX
#define _LINUX_TIME_H
#define _LINUX_FCNTL_H
+#ifdef AFS_IA64_LINUX24_ENV
+#define flock64 flock
+#endif /* AFS_IA64_LINUX24_ENV */
#ifdef AFS_S390_LINUX20_ENV
#define _S390_STATFS_H
#else
#define timer_t ktimer_t
#define timer_t_redefined
#endif
+#ifdef AFS_LINUX26_ENV
+/* For some reason, this doesn't get defined in linux/types.h
+ if __KERNEL_STRICT_NAMES is defined. But the definition of
+ struct inode uses it.
+*/
+#ifndef HAVE_SECTOR_T
+/* got it from linux/types.h */
+typedef unsigned long sector_t;
+#endif /* HAVE_SECTOR_T */
+#endif /* AFS_LINUX26_ENV */
#include <linux/version.h>
#include <linux/fs.h>
#include <osi_vfs.h>
#define MAXNAMELEN 64
typedef struct symlist {
char s_name[MAXNAMELEN];
+#ifdef AFS_LINUX_64BIT_KERNEL
+ unsigned long s_value;
+#else
int s_value;
+#endif /* AFS_LINUX_64BIT_KERNEL */
} symlist_t;
#define KSYM_ALLOC_STEP 128
exit(1);
}
}
+#ifdef AFS_LINUX_64BIT_KERNEL
+ ksyms[nksyms].s_value = (unsigned long)strtoul(line, &p, 16);
+#else
ksyms[nksyms].s_value = (int)strtoul(line, &p, 16);
+#endif /* AFS_LINUX_64BIT_KERNEL */
p++;
#ifdef AFS_LINUX26_ENV
/* Linux 2.6 /proc/kallsyms has a one-char symbol type
/* find_symbol returns 0 if not found, otherwise value for symbol */
+#ifdef AFS_LINUX_64BIT_KERNEL
+unsigned long
+#else
int
+#endif /* AFS_LINUX_64BIT_KERNEL */
find_symbol(char *name)
{
symlist_t *tmp;
findsym("afs_linux_memlist", &symoff);
kread(kmem, symoff, (char *)&memp, sizeof memp);
if (memp) {
+#ifdef AFS_LINUX_64BIT_KERNEL
+ kread(kmem, (unsigned long)memp, (char *)&next, sizeof next);
+#else
kread(kmem, (int)memp, (char *)&next, sizeof next);
+#endif /* AFS_LINUX_64BIT_KERNEL */
} else {
memset(&next, 0, sizeof next);
}