202 lines
5.3 KiB
Text
202 lines
5.3 KiB
Text
|
$NetBSD: patch-ad,v 1.1.1.1 2005/12/30 23:03:05 agc Exp $
|
||
|
|
||
|
--- /dev/null 2005-12-29 13:42:11.000000000 +0000
|
||
|
+++ include/netbsd.h 2005-12-29 14:07:41.000000000 +0000
|
||
|
@@ -0,0 +1,196 @@
|
||
|
+/*
|
||
|
+ * Copyright (c) 2004 Silicon Graphics, Inc. All Rights Reserved.
|
||
|
+ *
|
||
|
+ * This program is free software; you can redistribute it and/or modify it
|
||
|
+ * under the terms of version 2 of the GNU General Public License as
|
||
|
+ * published by the Free Software Foundation.
|
||
|
+ *
|
||
|
+ * This program is distributed in the hope that it would be useful, but
|
||
|
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
||
|
+ *
|
||
|
+ * Further, this software is distributed without any warranty that it is
|
||
|
+ * free of the rightful claim of any third person regarding infringement
|
||
|
+ * or the like. Any license provided herein, whether implied or
|
||
|
+ * otherwise, applies only to this software file. Patent licenses, if
|
||
|
+ * any, provided herein do not apply to combinations of this program with
|
||
|
+ * other software, or any other product whatsoever.
|
||
|
+ *
|
||
|
+ * You should have received a copy of the GNU General Public License along
|
||
|
+ * with this program; if not, write the Free Software Foundation, Inc., 59
|
||
|
+ * Temple Place - Suite 330, Boston MA 02111-1307, USA.
|
||
|
+ *
|
||
|
+ * Contact information: Silicon Graphics, Inc., 1600 Amphitheatre Pkwy,
|
||
|
+ * Mountain View, CA 94043, or:
|
||
|
+ *
|
||
|
+ * http://www.sgi.com
|
||
|
+ *
|
||
|
+ * For further information regarding this notice, see:
|
||
|
+ *
|
||
|
+ * http://oss.sgi.com/projects/GenInfo/SGIGPLNoticeExplan/
|
||
|
+ *
|
||
|
+ */
|
||
|
+#ifndef __XFS_NetBSD_H__
|
||
|
+#define __XFS_NetBSD_H__
|
||
|
+
|
||
|
+#include <sys/stat.h>
|
||
|
+#include <sys/param.h>
|
||
|
+#include <sys/ioctl.h>
|
||
|
+#include <sys/ioccom.h>
|
||
|
+#include <sys/mount.h>
|
||
|
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
|
||
|
+# include <sys/statvfs.h>
|
||
|
+#else
|
||
|
+# include <sys/statfs.h>
|
||
|
+#endif
|
||
|
+#include <ctype.h>
|
||
|
+#include <libgen.h>
|
||
|
+#include <paths.h>
|
||
|
+#include <uuid.h>
|
||
|
+
|
||
|
+#include <sys/endian.h>
|
||
|
+
|
||
|
+#define __bswap16 htobe16
|
||
|
+#define __bswap32 htobe32
|
||
|
+#define __bswap64 htobe64
|
||
|
+
|
||
|
+/* NetBSD file API is 64-bit aware */
|
||
|
+#define fstat64 fstat
|
||
|
+#define ftruncate64 ftruncate
|
||
|
+#define lseek64 lseek
|
||
|
+#define stat64 stat
|
||
|
+#define pwrite64 pwrite
|
||
|
+#define pread64 pread
|
||
|
+#define fdatasync fsync
|
||
|
+#define memalign(a,size) valloc(size)
|
||
|
+
|
||
|
+typedef u_int8_t __u8;
|
||
|
+typedef int8_t __s8;
|
||
|
+typedef u_int16_t __u16;
|
||
|
+typedef int16_t __s16;
|
||
|
+typedef u_int32_t __u32;
|
||
|
+typedef int32_t __s32;
|
||
|
+typedef u_int64_t __u64;
|
||
|
+typedef int64_t __s64;
|
||
|
+
|
||
|
+#define constpp char * const *
|
||
|
+
|
||
|
+#define EFSCORRUPTED 990 /* Filesystem is corrupted */
|
||
|
+
|
||
|
+typedef off_t xfs_off_t;
|
||
|
+typedef off_t off64_t;
|
||
|
+typedef __uint64_t xfs_ino_t;
|
||
|
+typedef __uint32_t xfs_dev_t;
|
||
|
+typedef __int64_t xfs_daddr_t;
|
||
|
+typedef char* xfs_caddr_t;
|
||
|
+typedef off_t loff_t;
|
||
|
+
|
||
|
+#ifndef _UCHAR_T_DEFINED
|
||
|
+typedef unsigned char uchar_t;
|
||
|
+#define _UCHAR_T_DEFINED 1
|
||
|
+#endif
|
||
|
+typedef enum { B_FALSE,B_TRUE } boolean_t;
|
||
|
+
|
||
|
+#define O_LARGEFILE 0
|
||
|
+
|
||
|
+#ifndef O_DIRECT
|
||
|
+#define O_DIRECT 0
|
||
|
+#endif
|
||
|
+
|
||
|
+#define HAVE_FID 1
|
||
|
+#define HAVE_SWABMACROS 1
|
||
|
+#define INT_SWAP16(type,var) ((typeof(type))(__bswap16((__u16)(var))))
|
||
|
+#define INT_SWAP32(type,var) ((typeof(type))(__bswap32((__u32)(var))))
|
||
|
+#define INT_SWAP64(type,var) ((typeof(type))(__bswap64((__u64)(var))))
|
||
|
+
|
||
|
+static __inline__ int xfsctl(const char *path, int fd, int cmd, void *p)
|
||
|
+{
|
||
|
+ return ioctl(fd, cmd, p);
|
||
|
+}
|
||
|
+
|
||
|
+static __inline__ int platform_test_xfs_fd(int fd)
|
||
|
+{
|
||
|
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
|
||
|
+ struct statvfs buf;
|
||
|
+ if (fstatvfs(fd, &buf) < 0)
|
||
|
+ return 0;
|
||
|
+#else
|
||
|
+ struct statvfs buf;
|
||
|
+ if (fstatvfs(fd, &buf) < 0)
|
||
|
+ return 0;
|
||
|
+#endif
|
||
|
+ return strcpy(buf.f_fstypename, "xfs") == 0;
|
||
|
+}
|
||
|
+
|
||
|
+static __inline__ int platform_test_xfs_path(const char *path)
|
||
|
+{
|
||
|
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
|
||
|
+ struct statvfs buf;
|
||
|
+ if (statvfs(path, &buf) < 0)
|
||
|
+ return 0;
|
||
|
+#else
|
||
|
+ struct statvfs buf;
|
||
|
+ if (statvfs(path, &buf) < 0)
|
||
|
+ return 0;
|
||
|
+#endif
|
||
|
+ return strcpy(buf.f_fstypename, "xfs") == 0;
|
||
|
+}
|
||
|
+
|
||
|
+#if (defined(__NetBSD__) && (__NetBSD_Version__ >= 299000900))
|
||
|
+static __inline__ int platform_fstatfs(int fd, struct statvfs *buf)
|
||
|
+{
|
||
|
+ return fstatvfs(fd, buf);
|
||
|
+}
|
||
|
+#else
|
||
|
+static __inline__ int platform_fstatfs(int fd, struct statfs *buf)
|
||
|
+{
|
||
|
+ return fstatfs(fd, buf);
|
||
|
+}
|
||
|
+#endif
|
||
|
+
|
||
|
+static __inline__ void platform_getoptreset(void)
|
||
|
+{
|
||
|
+ extern int optind;
|
||
|
+ optind = 0;
|
||
|
+}
|
||
|
+
|
||
|
+/*
|
||
|
+ * Implement Linux libuuid functions in terms of DEC DCE's uuid
|
||
|
+ * functions from NetBSD libc.
|
||
|
+ */
|
||
|
+
|
||
|
+static __inline__ int gnu_uuid_compare(uuid_t a, uuid_t b)
|
||
|
+{
|
||
|
+ return uuid_compare(&a, &b, NULL);
|
||
|
+}
|
||
|
+#define uuid_compare gnu_uuid_compare
|
||
|
+
|
||
|
+static __inline__ int uuid_is_null(uuid_t uid)
|
||
|
+{
|
||
|
+ return uuid_is_nil(&uid, NULL);
|
||
|
+}
|
||
|
+
|
||
|
+static __inline__ void uuid_unparse(uuid_t uid, char *buf)
|
||
|
+{
|
||
|
+ uint32_t status;
|
||
|
+ char *str;
|
||
|
+ uuid_to_string(&uid, &str, &status);
|
||
|
+ if (status == uuid_s_ok)
|
||
|
+ strcpy(buf, str);
|
||
|
+ else *buf = '\0';
|
||
|
+ free(str);
|
||
|
+}
|
||
|
+
|
||
|
+static __inline__ int gnu_uuid_parse(const char *buf, uuid_t *uid)
|
||
|
+{
|
||
|
+ uint32_t status;
|
||
|
+ uuid_from_string(buf, uid, &status);
|
||
|
+ return (status == uuid_s_ok);
|
||
|
+}
|
||
|
+#define uuid_parse(s,u) gnu_uuid_parse((s), &(u))
|
||
|
+
|
||
|
+#define uuid_generate(uid) uuid_create(&(uid), NULL)
|
||
|
+#define uuid_clear(uid) uuid_create_nil(&(uid), NULL)
|
||
|
+#define uuid_copy(dst, src) memcpy(&(dst), &(src), sizeof(uuid_t))
|
||
|
+
|
||
|
+#endif /* __XFS_NetBSD_H__ */
|