Whamcloud - gitweb
LU-2675 build: remove WinNT "support" 85/11385/2
authorJohn L. Hammond <john.hammond@intel.com>
Sat, 9 Aug 2014 19:18:40 +0000 (14:18 -0500)
committerOleg Drokin <oleg.drokin@intel.com>
Tue, 12 Aug 2014 02:37:59 +0000 (02:37 +0000)
Remove the WinNT "support" code. It's not maintained or used.

Signed-off-by: John L. Hammond <john.hammond@intel.com>
Change-Id: I361bfce148a040db60d68d3c34a399415f2dd628
Reviewed-on: http://review.whamcloud.com/11385
Tested-by: Jenkins
Tested-by: Maloo <hpdd-maloo@intel.com>
Reviewed-by: Dmitry Eremin <dmitry.eremin@intel.com>
Reviewed-by: Bob Glossman <bob.glossman@intel.com>
Reviewed-by: Oleg Drokin <oleg.drokin@intel.com>
75 files changed:
libcfs/include/libcfs/Makefile.am
libcfs/include/libcfs/libcfs.h
libcfs/include/libcfs/libcfs_debug.h
libcfs/include/libcfs/libcfs_pack.h [deleted file]
libcfs/include/libcfs/libcfs_unpack.h [deleted file]
libcfs/include/libcfs/user-prim.h
libcfs/include/libcfs/util/platform.h
libcfs/include/libcfs/winnt/kp30.h [deleted file]
libcfs/include/libcfs/winnt/libcfs.h [deleted file]
libcfs/include/libcfs/winnt/portals_compat25.h [deleted file]
libcfs/include/libcfs/winnt/portals_utils.h [deleted file]
libcfs/include/libcfs/winnt/winnt-fs.h [deleted file]
libcfs/include/libcfs/winnt/winnt-lock.h [deleted file]
libcfs/include/libcfs/winnt/winnt-mem.h [deleted file]
libcfs/include/libcfs/winnt/winnt-prim.h [deleted file]
libcfs/include/libcfs/winnt/winnt-tcpip.h [deleted file]
libcfs/include/libcfs/winnt/winnt-time.h [deleted file]
libcfs/include/libcfs/winnt/winnt-types.h [deleted file]
libcfs/libcfs/tracefile.c
libcfs/libcfs/tracefile.h
libcfs/libcfs/user-mem.c
libcfs/libcfs/user-tcpip.c
libcfs/libcfs/util/l_ioctl.c
libcfs/libcfs/winnt/winnt-curproc.c [deleted file]
libcfs/libcfs/winnt/winnt-debug.c [deleted file]
libcfs/libcfs/winnt/winnt-fs.c [deleted file]
libcfs/libcfs/winnt/winnt-lock.c [deleted file]
libcfs/libcfs/winnt/winnt-lwt.c [deleted file]
libcfs/libcfs/winnt/winnt-mem.c [deleted file]
libcfs/libcfs/winnt/winnt-module.c [deleted file]
libcfs/libcfs/winnt/winnt-native.c [deleted file]
libcfs/libcfs/winnt/winnt-prim.c [deleted file]
libcfs/libcfs/winnt/winnt-proc.c [deleted file]
libcfs/libcfs/winnt/winnt-strusup.c [deleted file]
libcfs/libcfs/winnt/winnt-sync.c [deleted file]
libcfs/libcfs/winnt/winnt-tcpip.c [deleted file]
libcfs/libcfs/winnt/winnt-tracefile.c [deleted file]
libcfs/libcfs/winnt/winnt-tracefile.h [deleted file]
libcfs/libcfs/winnt/winnt-usr.c [deleted file]
libcfs/libcfs/winnt/winnt-utils.c [deleted file]
lnet/include/Makefile.am
lnet/include/cygwin-ioctl.h [deleted file]
lnet/include/lnet/api-support.h
lnet/include/lnet/lib-lnet.h
lnet/include/lnet/lib-types.h
lnet/include/lnet/lnet.h
lnet/include/lnet/lnetst.h
lnet/include/lnet/socklnd.h
lnet/include/lnet/types.h
lnet/include/lnet/winnt/api-support.h [deleted file]
lnet/include/lnet/winnt/lib-lnet.h [deleted file]
lnet/include/lnet/winnt/lib-types.h [deleted file]
lnet/include/lnet/winnt/lnet.h [deleted file]
lnet/klnds/socklnd/socklnd.h
lnet/klnds/socklnd/socklnd_lib-winnt.c [deleted file]
lnet/klnds/socklnd/socklnd_lib-winnt.h [deleted file]
lnet/selftest/rpc.h
lnet/selftest/winnt/selftest-winnt.c [deleted file]
lnet/utils/debug.c
lustre/include/lprocfs_status.h
lustre/include/lustre/lustre_user.h
lustre/include/lustre_acl.h
lustre/include/lustre_debug.h
lustre/include/lustre_dlm.h
lustre/include/lustre_handles.h
lustre/include/lustre_lib.h
lustre/include/lustre_lite.h
lustre/include/lustre_log.h
lustre/include/lustre_net.h
lustre/include/lustre_quota.h
lustre/include/lvfs.h
lustre/include/obd.h
lustre/include/obd_class.h
lustre/include/obd_support.h
lustre/osc/osc_request.c

index 407efe1..edae41a 100644 (file)
@@ -23,12 +23,10 @@ EXTRA_DIST = \
        libcfs_heap.h \
        libcfs_ioctl.h \
        libcfs_kernelcomm.h \
-       libcfs_pack.h \
        libcfs_prim.h \
        libcfs_private.h \
        libcfs_string.h \
        libcfs_time.h \
-       libcfs_unpack.h \
        libcfs_workitem.h \
        libcfsutil.h \
        list.h \
index 450d597..e85731d 100644 (file)
 
 #include <libcfs/types.h>
 
-#if !defined(__WINNT__) && !defined(__KERNEL__)
+#if !defined(__KERNEL__)
 #include <libcfs/posix/libcfs.h>
 #elif defined(__linux__)
 #include <libcfs/linux/libcfs.h>
 #elif defined(__APPLE__)
 #include <libcfs/darwin/libcfs.h>
-#elif defined(__WINNT__)
-#include <libcfs/winnt/libcfs.h>
 #else
 #error Unsupported operating system.
 #endif
index 1ea5713..28c7c57 100644 (file)
@@ -338,13 +338,6 @@ do {                                                                       \
 } while (0)
 #endif /* BITS_PER_LONG > 32 */
 
-#elif defined(_MSC_VER)
-#define RETURN(rc)                                                      \
-do {                                                                    \
-        CDEBUG(D_TRACE, "Process leaving.\n");                          \
-        EXIT_NESTING;                                                   \
-        return (rc);                                                    \
-} while (0)
 #else
 # error "Unkown compiler"
 #endif /* __GNUC__ */
@@ -395,10 +388,6 @@ extern int cfs_trace_copyin_string(char *knl_buffer, int knl_buffer_nob,
 extern int cfs_trace_copyout_string(char *usr_buffer, int usr_buffer_nob,
                                    const char *knl_buffer, char *append);
 
-#if defined(__WINNT__)
-#define LIBCFS_DEBUG_FILE_PATH_DEFAULT "\\SystemRoot\\temp\\lustre-log"
-#else
 #define LIBCFS_DEBUG_FILE_PATH_DEFAULT "/tmp/lustre-log"
-#endif
 
 #endif /* __LIBCFS_DEBUG_H__ */
diff --git a/libcfs/include/libcfs/libcfs_pack.h b/libcfs/include/libcfs/libcfs_pack.h
deleted file mode 100644 (file)
index 74ba33c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-#if !defined(__GNUC__) && defined(_MSC_VER) 
-#pragma warning(disable:4103)
-#pragma pack(push, 1)
-#endif
-
diff --git a/libcfs/include/libcfs/libcfs_unpack.h b/libcfs/include/libcfs/libcfs_unpack.h
deleted file mode 100644 (file)
index 7ea2205..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-#if !defined(__GNUC__) && defined(_MSC_VER) 
-#pragma warning(disable:4103)
-#pragma pack(pop)
-#endif
index ceef624..d1a27ad 100644 (file)
@@ -238,41 +238,10 @@ struct group_info{ };
 #define get_random_bytes(val, size)     (*val) = 0
 
 /* utility libcfs init/fini entries */
-#ifdef __WINNT__
-extern int libcfs_arch_init(void);
-extern void libcfs_arch_cleanup(void);
-#else /* !__WINNT__ */
 static inline int libcfs_arch_init(void) {
         return 0;
 }
 static inline void libcfs_arch_cleanup(void) {
 }
-/* __WINNT__ */
-#endif
-
-/* proc interface wrappers for non-win OS */
-#ifndef __WINNT__
-#define cfs_proc_open   open
-#define cfs_proc_mknod  mknod
-#define cfs_proc_ioctl  ioctl
-#define cfs_proc_close  close
-#define cfs_proc_read   read
-#define cfs_proc_write  write
-#define cfs_proc_fopen  fopen
-#define cfs_proc_fclose fclose
-#define cfs_proc_fgets  fgets
-/* !__WINNT__ */
-#endif
-
 
-/* __LIBCFS_USER_PRIM_H__ */
-#endif
-/*
- * Local variables:
- * c-indentation-style: "K&R"
- * c-basic-offset: 8
- * tab-width: 8
- * fill-column: 80
- * scroll-step: 1
- * End:
- */
+#endif /* __LIBCFS_USER_PRIM_H__ */
index 4dbd32e..cd85563 100644 (file)
@@ -247,10 +247,8 @@ static inline void l_cond_broadcast(l_cond_t *cond)
 #include <errno.h>
 #include <string.h>
 #if HAVE_LIBPTHREAD
-#ifndef __WINNT__
 #include <sys/ipc.h>
 #include <sys/shm.h>
-#endif
 #include <pthread.h>
 
 typedef pthread_mutex_t        l_mutex_t;
diff --git a/libcfs/include/libcfs/winnt/kp30.h b/libcfs/include/libcfs/winnt/kp30.h
deleted file mode 100644 (file)
index 1f3095b..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#ifndef __LIBCFS_WINNT_KP30_H__
-#define __LIBCFS_WINNT_KP30_H__
-
-#ifdef __KERNEL__
-
-/* Module parameter support */
-#define CFS_MODULE_PARM(name, t, type, perm, desc)
-
-#define CFS_SYSFS_MODULE_PARM    0 /* no sysfs access to module parameters */
-
-
-/* winnt panic */
-void libcfs_panic(char *msg);
-#define panic(msg) libcfs_panic(msg)
-void libcfs_register_panic_notifier();
-void libcfs_unregister_panic_notifier();
-
-
-#define cfs_work_struct_t WORK_QUEUE_ITEM
-#define cfs_schedule_work(tq)
-#define cfs_get_work_data(type,field,data)   (data)
-
-/* ------------------------------------------------------------------- */
-
-#define PORTAL_SYMBOL_REGISTER(x)               cfs_symbol_register(#x, &x)
-#define PORTAL_SYMBOL_UNREGISTER(x)             cfs_symbol_unregister(#x)
-
-#define symbol_get(x)                    (cfs_symbol_get(#x))
-#define symbol_put(x)                    cfs_symbol_put(#x)
-
-#define try_module_get(THIS_MODULE)                       do{}while(0)
-#define module_put(THIS_MODULE)                     do{}while(0)
-
-#define printk                                  DbgPrint
-#define ptintf                                  DbgPrint
-#define printk_ratelimit()                      (FALSE)
-#define vprintk(f, a)                           vDbgPrintEx(DPFLTR_IHVDRIVER_ID, DPFLTR_ERROR_LEVEL, f, a)
-                                                /* vDbgPrintEx only available on xp and later OS */
-#define cfs_assert                              ASSERT
-
-#else  /* !__KERNEL__ */
-
-# include <stdio.h>
-# include <stdlib.h>
-#ifdef __CYGWIN__
-# include <cygwin-ioctl.h>
-#endif
-# include <time.h>
-#include <crtdbg.h>
-
-#define cfs_assert     _ASSERT
-
-#ifndef get_cpu
-#define get_cpu() smp_processor_id()
-#define put_cpu() do { } while (0)
-#else
-#endif
-
-#endif /* End of !__KERNEL__ */
-
-#define IOCTL_LIBCFS_TYPE long_ptr_t
-
-#ifdef __CYGWIN__
-# ifndef BITS_PER_LONG
-#  if (~0UL) == 0xffffffffUL
-#   define BITS_PER_LONG 32
-#  else
-#   define BITS_PER_LONG 64
-#  endif
-# endif
-#endif
-
-#if BITS_PER_LONG > 32
-# define LI_POISON ((int)0x5a5a5a5a5a5a5a5a)
-# define LL_POISON ((long_ptr_t)0x5a5a5a5a5a5a5a5a)
-# define LP_POISON ((char *)(long_ptr_t)0x5a5a5a5a5a5a5a5a)
-#else
-# define LI_POISON ((int)0x5a5a5a5a)
-# define LL_POISON ((long_ptr_t)0x5a5a5a5a)
-# define LP_POISON ((char *)(long_ptr_t)0x5a5a5a5a)
-#endif
-
-#define LPF64 "%I64d"
-#define LPU64 "%I64u"
-#define LPD64 "%I64d"
-#define LPX64 "%#I64x"
-#define LPO64 "%#I64o"
-
-/*
- * long_ptr_t & ulong_ptr_t, same to "long" for linux
- */
-#if _x86_
-# define LPLU "%u"
-# define LPLD "%d"
-# define LPLX "%#x"
-# define LPPID "%d"
-#else
-# define LPLU "%Ii64u"
-# define LPLD "%I64d"
-# define LPLX "%#I64x"
-# define LPPID "%d"
-#endif
-
-#endif
diff --git a/libcfs/include/libcfs/winnt/libcfs.h b/libcfs/include/libcfs/winnt/libcfs.h
deleted file mode 100644 (file)
index 062b0ff..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#ifndef __LIBCFS_WINNT_LIBCFS_H__
-#define __LIBCFS_WINNT_LIBCFS_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-/* workgroud for VC compiler */
-#if _MSC_VER <= 1300
-#define __FUNCTION__ ("generic")
-#endif
-
-#include <config.h>
-#include <libcfs/winnt/winnt-types.h>
-#include <libcfs/list.h>
-#include <libcfs/winnt/winnt-time.h>
-#include <libcfs/winnt/winnt-lock.h>
-#include <libcfs/winnt/winnt-mem.h>
-#include <libcfs/winnt/winnt-prim.h>
-#include <libcfs/winnt/winnt-fs.h>
-#include <libcfs/winnt/winnt-tcpip.h>
-#include <libcfs/winnt/kp30.h>
-
-#ifdef __KERNEL__
-
-enum {
-        /* if you change this, update darwin-util.c:cfs_stack_trace_fill() */
-        CFS_STACK_TRACE_DEPTH = 16
-};
-
-struct cfs_stack_trace {
-        void *frame[CFS_STACK_TRACE_DEPTH];
-};
-
-static inline __u32 query_stack_size()
-{
-    ULONG   LowLimit, HighLimit;
-
-    IoGetStackLimits((PULONG_PTR)&LowLimit, (PULONG_PTR)&HighLimit);
-    ASSERT(HighLimit > LowLimit);
-
-    return (__u32) (HighLimit - LowLimit);
-}
-
-/* disable watchdog */
-#undef WITH_WATCHDOG
-
-#else /* !__KERNEL__*/
-
-#include <libcfs/user-bitops.h>
-
-static inline __u32 query_stack_size()
-{
-   return PAGE_SIZE; /* using one page in default */
-}
-
-#endif /* __KERNEL__*/
-
-#ifndef THREAD_SIZE
-# define THREAD_SIZE query_stack_size()
-#endif
-
-#ifdef __KERNEL__
-#define CDEBUG_STACK() (THREAD_SIZE - (__u32)IoGetRemainingStackSize())
-#define CFS_CHECK_STACK(msgdata, mask, cdls) do {} while(0)
-#else /* !__KERNEL__ */
-#define CFS_CHECK_STACK(msgdata, mask, cdls) do {} while(0)
-#define CDEBUG_STACK() (0L)
-#endif /* __KERNEL__ */
-
-/* initial pid  */
-#define LUSTRE_LNET_PID          12345
-
-#define ENTRY_NESTING_SUPPORT (0)
-#define ENTRY_NESTING   do {} while (0)
-#define EXIT_NESTING   do {} while (0)
-#define __current_nesting_level() (0)
-
-/*
- * Portable API to access common characteristics of "current" UNIX process.
- */
-uid_t  current_uid(void);
-gid_t  current_gid(void);
-uid_t  current_euid(void);
-gid_t  current_egid(void);
-uid_t  current_fsuid(void);
-gid_t  current_fsgid(void);
-pid_t  current_pid(void);
-int    in_group_p(gid_t group);
-mode_t current_umask(void);
-char  *current_comm(void);
-
-/* check if task is running in compat mode.*/
-int current_is_32bit(void);
-
-#endif /* _WINNT_LIBCFS_H */
diff --git a/libcfs/include/libcfs/winnt/portals_compat25.h b/libcfs/include/libcfs/winnt/portals_compat25.h
deleted file mode 100644 (file)
index c563e33..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#ifndef __LIBCFS_WINNT_PORTALS_COMPAT_H__
-#define __LIBCFS_WINNT_PORTALS_COMPAT_H__
-#ifdef __KERNEL__
-/*
- * Signal
- */
-
-#define SIGNAL_MASK_LOCK(task, flags)           do {} while(0)
-#define SIGNAL_MASK_UNLOCK(task, flags)         do {} while(0)
-#define call_usermodehelper(path, argv, envp, 1)       do {} while(0)
-#define recalc_sigpending()                            do {} while(0)
-#define clear_tsk_thread_flag(current, TIF_SIGPENDING) do {} while(0)
-#endif
-
-#define LL_PROC_PROTO(name)                                            \
-       name(struct ctl_table *table, int write, struct file *filp,     \
-            void __user *buffer, size_t *lenp)
-
-#endif /* _PORTALS_COMPAT_H */
diff --git a/libcfs/include/libcfs/winnt/portals_utils.h b/libcfs/include/libcfs/winnt/portals_utils.h
deleted file mode 100644 (file)
index 39ab41f..0000000
+++ /dev/null
@@ -1,345 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/portals_utils.h
- *
- * Basic library routines.
- */
-
-#ifndef __LIBCFS_WINNT_PORTALS_UTILS_H__
-#define __LIBCFS_WINNT_PORTALS_UTILS_H__
-
-#ifndef cfs_is_flag_set
-#define cfs_is_flag_set(x,f) (((x)&(f))==(f))
-#endif
-
-#ifndef cfs_set_flag
-#define cfs_set_flag(x,f)    ((x) |= (f))
-#endif
-
-#ifndef cfs_clear_flag
-#define cfs_clear_flag(x,f)  ((x) &= ~(f))
-#endif
-
-static inline __u32 do_div64(__u64 * n, __u64 b) 
-{
-    __u64   mod;
-
-    mod = *n % b;
-    *n  = *n / b;
-    return (__u32)mod;
-} 
-
-#define do_div(n, b) do_div64(&(n), (__u64)b)
-#ifdef __KERNEL__
-
-#include <stdlib.h>
-#include <libcfs/winnt/winnt-types.h>
-
-char * strsep(char **s, const char *ct);
-char * ul2dstr(ulong_ptr_t address, char *buf, int len);
-
-#define simple_strtol(a1, a2, a3)               strtol(a1, a2, a3)
-#define simple_strtoll(a1, a2, a3)              (__s64)strtoull(a1, a2, a3)
-#define simple_strtoull(a1, a2, a3)             strtoull(a1, a2, a3)
-
-unsigned long simple_strtoul(const char *cp,char **endp, unsigned int base);
-
-static inline int set_bit(int nr, void * addr)
-{
-    (((volatile ULONG *) addr)[nr >> 5]) |= (1UL << (nr & 31));
-    return *((int *) addr);
-}
-
-static inline int test_bit(int nr, void * addr)
-{
-    return (int)(((1UL << (nr & 31)) & (((volatile ULONG *) addr)[nr >> 5])) != 0);
-}
-
-static inline int clear_bit(int nr, void * addr)
-{
-    (((volatile ULONG *) addr)[nr >> 5]) &= (~(1UL << (nr & 31)));
-    return *((int *) addr);
-}
-
-static inline int test_and_set_bit(int nr, volatile void *addr)
-{
-    int rc;
-    unsigned char  mask;
-    volatile unsigned char *ADDR = addr;
-
-    ADDR += nr >> 3;
-    mask = 1 << (nr & 0x07);
-    rc = ((mask & *ADDR) != 0);
-    *ADDR |= mask;
-
-    return rc;
-}
-
-#define ext2_set_bit(nr, addr)         (set_bit(nr, addr), 0)
-#define ext2_clear_bit(nr, addr)       (clear_bit(nr, addr), 0)
-#define ext2_test_bit(nr, addr)                test_bit(nr, addr)
-
-static inline int ffs(int x)
-{
-        int r = 1;
-
-        if (!x)
-                return 0;
-        if (!(x & 0xffff)) {
-                x >>= 16;
-                r += 16;
-        }
-        if (!(x & 0xff)) {
-                x >>= 8;
-                r += 8;
-        }
-        if (!(x & 0xf)) {
-                x >>= 4;
-                r += 4;
-        }
-        if (!(x & 3)) {
-                x >>= 2;
-                r += 2;
-        }
-        if (!(x & 1)) {
-                x >>= 1;
-                r += 1;
-        }
-        return r;
-}
-
-static inline unsigned long __cfs_ffs(unsigned long word)
-{
-        int num = 0;
-
-#if BITS_PER_LONG == 64
-        if ((word & 0xffffffff) == 0) {
-                num += 32;
-                word >>= 32;
-        }
-#endif
-        if ((word & 0xffff) == 0) {
-                num += 16;
-                word >>= 16;
-        }
-        if ((word & 0xff) == 0) {
-                num += 8;
-                word >>= 8;
-        }
-        if ((word & 0xf) == 0) {
-                num += 4;
-                word >>= 4;
-        }
-        if ((word & 0x3) == 0) {
-                num += 2;
-                word >>= 2;
-        }
-        if ((word & 0x1) == 0)
-                num += 1;
-        return num;
-}
-
-/**
- * fls - find last (most-significant) bit set
- * @x: the word to search
- *
- * This is defined the same way as ffs.
- * Note fls(0) = 0, fls(1) = 1, fls(0x80000000) = 32.
- */
-static inline
-int fls(int x)
-{
-        int r = 32;
-
-        if (!x)
-                return 0;
-        if (!(x & 0xffff0000u)) {
-                x <<= 16;
-                r -= 16;
-        }
-        if (!(x & 0xff000000u)) {
-                x <<= 8;
-                r -= 8;
-        }
-        if (!(x & 0xf0000000u)) {
-                x <<= 4;
-                r -= 4;
-        }
-        if (!(x & 0xc0000000u)) {
-                x <<= 2;
-                r -= 2;
-        }
-        if (!(x & 0x80000000u)) {
-                x <<= 1;
-                r -= 1;
-        }
-        return r;
-}
-
-static inline unsigned find_first_bit(const unsigned long *addr,
-                                          unsigned size)
-{
-        unsigned x = 0;
-
-        while (x < size) {
-                unsigned long val = *addr++;
-                if (val)
-                        return __cfs_ffs(val) + x;
-                x += (sizeof(*addr)<<3);
-        }
-        return x;
-}
-
-static inline void read_random(char *buf, int len)
-{
-    ULONG   Seed = (ULONG)(ULONG_PTR) buf;
-    Seed = RtlRandom(&Seed);
-    while (len >0) {
-        if (len > sizeof(ULONG)) {
-            memcpy(buf, &Seed, sizeof(ULONG));
-            len -= sizeof(ULONG);
-            buf += sizeof(ULONG);
-        } else {
-            memcpy(buf, &Seed, len);
-            len = 0;
-            break;
-        } 
-    }
-}
-
-#define get_random_bytes(buf, len)  read_random(buf, len)
-
-/* do NOT use function or expression as parameters ... */
-
-#ifndef min_t
-#define min_t(type,x,y) (type)(x) < (type)(y) ? (x): (y)
-#endif
-
-#ifndef max_t
-#define max_t(type,x,y) (type)(x) < (type)(y) ? (y): (x)
-#endif
-
-
-#define NIPQUAD(addr)                      \
-       ((unsigned char *)&addr)[0],    \
-       ((unsigned char *)&addr)[1],    \
-       ((unsigned char *)&addr)[2],    \
-       ((unsigned char *)&addr)[3]
-
-#define HIPQUAD(addr)                      \
-       ((unsigned char *)&addr)[3],    \
-       ((unsigned char *)&addr)[2],    \
-       ((unsigned char *)&addr)[1],    \
-       ((unsigned char *)&addr)[0]
-
-static int copy_from_user(void *to, void *from, int c)
-{
-       memcpy(to, from, c);
-       return 0;
-}
-
-static int copy_to_user(void *to, const void *from, int c)
-{
-       memcpy(to, from, c);
-       return 0;
-}
-
-static unsigned long
-clear_user(void __user *to, unsigned long n)
-{
-    memset(to, 0, n);
-       return n;
-}
-
-#define put_user(x, ptr)        \
-(                               \
-    *(ptr) = x,                 \
-    0                           \
-)
-
-
-#define get_user(x,ptr)         \
-(                               \
-    x = *(ptr),                 \
-    0                           \
-)
-
-#define totalram_pages               (64 * 1024)
-#define NUM_CACHEPAGES              totalram_pages
-
-#else
-
-#define unlink _unlink 
-#define close  _close
-#define open   _open
-#define fdopen _fdopen
-#define strdup _strdup
-#define fileno _fileno
-#define isattry _isattry
-#define stat    _stat
-
-#endif /* !__KERNEL__ */
-
-int cfs_error_code(NTSTATUS);
-
-static inline int vsnprintf(char *buf, size_t cnt,
-                            const char *fmt, va_list va)
-{
-    int rc;
-
-#ifdef TRUE /* using msvcrt from windkk 3790 */
-    rc = _vsnprintf(buf, cnt, fmt, va);
-#else
-    rc = _vsnprintf_s(buf, cnt, cnt, fmt, va);
-#endif
-    if (rc == -1)
-        return cnt;
-    return rc;
-}
-
-static inline int snprintf(char *buf, size_t cnt, 
-                           const char *fmt, ...)
-{
-    int         rc;
-    va_list     va;
-
-    va_start(va, fmt);
-    rc = vsnprintf(buf, cnt, fmt, va);
-    va_end(va);
-    return rc;
-}
-
-#endif
diff --git a/libcfs/include/libcfs/winnt/winnt-fs.h b/libcfs/include/libcfs/winnt/winnt-fs.h
deleted file mode 100644 (file)
index 492cc2e..0000000
+++ /dev/null
@@ -1,480 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-fs.h
- *
- * File operations & routines.
- */
-
-#ifndef __LIBCFS_WINNT_CFS_FS_H__
-#define __LIBCFS_WINNT_CFS_FS_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-
-#define MINORBITS      8
-#define MINORMASK      ((1U << MINORBITS) - 1)
-
-#define MAJOR(dev)     ((unsigned int) ((dev) >> MINORBITS))
-#define MINOR(dev)     ((unsigned int) ((dev) & MINORMASK))
-#define NODEV          0
-#define MKDEV(ma,mi)   (((ma) << MINORBITS) | (mi))
-
-#define PATH_MAX (260)
-
-#ifdef __KERNEL__
-
-/* linux/fs.h */
-
-#define MAY_EXEC 1
-#define MAY_WRITE 2
-#define MAY_READ 4
-#define MAY_APPEND 8
-
-#define FMODE_READ 1
-#define FMODE_WRITE 2
-
-/* Internal kernel extensions */
-#define FMODE_LSEEK    4
-#define FMODE_PREAD    8
-#define FMODE_PWRITE   FMODE_PREAD     /* These go hand in hand */
-
-/* File is being opened for execution. Primary users of this flag are
-   distributed filesystems that can use it to achieve correct ETXTBUSY
-   behavior for cross-node execution/opening_for_writing of files */
-#define FMODE_EXEC     16
-
-#define RW_MASK         1
-#define RWA_MASK        2
-#define READ 0
-#define WRITE 1
-#define READA 2         /* read-ahead  - don't block if no resources */
-#define SWRITE 3        /* for ll_rw_block() - wait for buffer lock */
-#define SPECIAL 4       /* For non-blockdevice requests in request queue */
-#define READ_SYNC       (READ | (1 << BIO_RW_SYNC))
-#define WRITE_SYNC      (WRITE | (1 << BIO_RW_SYNC))
-#define WRITE_BARRIER   ((1 << BIO_RW) | (1 << BIO_RW_BARRIER))
-
-struct file_operations
-{
-    struct module *owner;
-    loff_t (*llseek)(struct file * file, loff_t offset, int origin);
-    ssize_t (*read) (struct file * file, char * buf, size_t nbytes, loff_t *ppos);
-    ssize_t (*write)(struct file * file, const char * buffer,
-        size_t count, loff_t *ppos);
-    int (*ioctl) (struct file *, unsigned int, ulong_ptr_t);
-    int (*open) (struct inode*, struct file *);
-    int (*release) (struct inode*, struct file *);
-};
-
-struct file {
-
-    cfs_handle_t            f_handle;
-    unsigned int            f_flags;
-    mode_t                  f_mode;
-    __u32                   f_count;
-
-    size_t                  f_size;
-    loff_t                  f_pos;
-    unsigned int            f_uid, f_gid;
-    int                     f_error;
-
-    __u32                   f_version;
-
-    //struct list_head      f_list;
-    struct dentry *         f_dentry;
-
-    cfs_proc_entry_t *      proc_dentry;
-    cfs_file_operations_t * f_op;
-
-    void *                  private_data;
-    struct inode *          f_inode;
-    char                    f_name[1];
-
-};
-
-#define filp_size(f)           ((f)->f_size)
-#define filp_poff(f)           (&(f)->f_pos)
-
-struct file *filp_open(const char *name, int flags, int mode);
-int filp_close(struct file *fp, void *id);
-int filp_read(struct file *fp, void *buf, size_t nbytes, loff_t *pos);
-int filp_write(struct file *fp, void *buf, size_t nbytes, loff_t *pos);
-int filp_fsync(struct file *fp);
-int get_file(struct file *fp);
-int fput(struct file *fp);
-int file_count(struct file *fp);
-#define cfs_filp_unlink(x, y) (KdBreakPoint(), 0)
-/*
- * CFS_FLOCK routines
- */
-
-struct file_lock {
-       int     fl_type;
-       pid_t   fl_pid;
-       size_t  fl_len;
-       off_t   fl_start;
-       off_t   fl_end;
-};
-
-#define INT_LIMIT(x)                   (~((x)1 << (sizeof(x)*8 - 1)))
-#define OFFSET_MAX                     INT_LIMIT(loff_t)
-
-#define flock_type(fl)                 ((fl)->fl_type)
-#define flock_set_type(fl, type)       do { (fl)->fl_type = (type); } while (0)
-#define flock_pid(fl)                  ((fl)->fl_pid)
-#define flock_set_pid(fl, pid)         do { (fl)->fl_pid = (pid); } while (0)
-#define flock_start(fl)                        ((fl)->fl_start)
-#define flock_set_start(fl, st)                do { (fl)->fl_start = (st); } while (0)
-#define flock_end(fl)                  ((fl)->fl_end)
-#define flock_set_end(fl, end)         do { (fl)->fl_end = (end); } while (0)
-
-#define ATTR_MODE       0x0001
-#define ATTR_UID        0x0002
-#define ATTR_GID        0x0004
-#define ATTR_SIZE       0x0008
-#define ATTR_ATIME      0x0010
-#define ATTR_MTIME      0x0020
-#define ATTR_CTIME      0x0040
-#define ATTR_ATIME_SET  0x0080
-#define ATTR_MTIME_SET  0x0100
-#define ATTR_FORCE      0x0200  /* Not a change, but a change it */
-#define ATTR_ATTR_FLAG  0x0400
-#define ATTR_RAW        0x0800  /* file system, not vfs will massage attrs */
-#define ATTR_FROM_OPEN  0x1000  /* called from open path, ie O_TRUNC */
-//#define ATTR_CTIME_SET  0x2000
-
-/*
- * set ATTR_BLOCKS to a high value to avoid any risk of collision with other
- * ATTR_* attributes (see bug 13828): lustre/include/winnt/lustre_compat25.h
- */
-/* #define ATTR_BLOCKS     0x4000 */
-#define ATTR_BLOCKS    (1 << 27)
-
-#define ATTR_KILL_SUID  0
-#define ATTR_KILL_SGID  0
-
-
-
-#define in_group_p(x)  (0)
-
-
-/* VFS structures for windows */
-
-/* 
- * inode formats
- */
-
-#define S_IFMT   00170000
-#define S_IFSOCK 0140000
-#define S_IFLNK         0120000
-#define S_IFREG  0100000
-#define S_IFBLK  0060000
-#define S_IFDIR  0040000
-#define S_IFCHR  0020000
-#define S_IFIFO  0010000
-#define S_ISUID  0004000
-#define S_ISGID  0002000
-#define S_ISVTX  0001000
-
-/* Inode flags - they have nothing to superblock flags now */
-
-#define S_SYNC         1       /* Writes are synced at once */
-#define S_NOATIME      2       /* Do not update access times */
-#define S_APPEND       4       /* Append-only file */
-#define S_IMMUTABLE    8       /* Immutable file */
-#define S_DEAD         16      /* removed, but still open directory */
-#define S_NOQUOTA      32      /* Inode is not counted to quota */
-#define S_DIRSYNC      64      /* Directory modifications are synchronous */
-#define S_NOCMTIME     128     /* Do not update file c/mtime */
-#define S_SWAPFILE     256     /* Do not truncate: swapon got its bmaps */
-#define S_PRIVATE      512     /* Inode is fs-internal */
-
-
-struct inode {
-        __u32           i_mode;
-        __u64           i_size;
-        __u64           i_blocks;
-        struct timespec i_atime;
-        struct timespec i_ctime;
-        struct timespec i_mtime;
-        struct timespec i_dtime;
-        __u32           i_ino;
-        __u32           i_generation;
-        __u32           i_state;
-        __u32           i_blkbits;
-        int             i_uid;
-        int             i_gid;
-        __u32           i_flags;
-       struct mutex    i_sem;
-        void *          i_priv;
-};
-
-#define I_FREEING       0x0001
-
-struct dentry {
-       atomic_t    d_count;
-       struct {
-           int         len;
-           char *      name;
-       } d_name;
-       struct inode *  d_inode;
-       struct dentry*  d_parent;
-};
-
-extern struct dentry *dget(struct dentry *de);
-extern void dput(struct dentry *de);
-static __inline struct dentry *lookup_one_len(const char *name, struct dentry *de, int len)
-{
-    cfs_enter_debugger();
-    return NULL;
-}
-
-static inline loff_t i_size_read(const struct inode *inode)
-{
-    cfs_enter_debugger();
-    return inode->i_size;
-}
-
-static inline void i_size_write(struct inode *inode, loff_t i_size)
-{
-    cfs_enter_debugger();
-    inode->i_size = i_size;
-}
-
-struct kstatfs {
-       u64     f_type;
-       long    f_bsize;
-       u64     f_blocks;
-       u64     f_bfree;
-       u64     f_bavail;
-       u64     f_files;
-       u64     f_ffree;
-       __u32   f_fsid;
-       long    f_namelen;
-       long    f_frsize;
-       long    f_spare[5];
-};
-
-struct super_block {
-        void *  s_fs_info;
-};
-
-struct vfsmount {
-        struct dentry * pwd;
-        struct dentry * mnt_root;
-        struct super_block *mnt_sb;
-};
-
-
-/*
- * quota definitions (linux/quota.h)
- */
-
-#define MAXQUOTAS 2
-#define USRQUOTA  0            /* element used for user quotas */
-#define GRPQUOTA  1            /* element used for group quotas */
-
-
-/*
- * proc fs routines
- */
-
-typedef int (read_proc_t)(char *page, char **start, off_t off,
-                          int count, int *eof, void *data);
-
-struct file; /* forward ref */
-typedef int (write_proc_t)(struct file *file, const char *buffer,
-                           unsigned long count, void *data);
-
-void proc_destory_subtree(cfs_proc_entry_t *entry);
-
-int proc_init_fs();
-void proc_destroy_fs();
-
-/*
- *  thread affinity
- */
-
-HANDLE cfs_open_current_thread();
-void cfs_close_thread_handle(HANDLE handle);
-KAFFINITY cfs_query_thread_affinity();
-int cfs_set_thread_affinity(KAFFINITY affinity);
-int cfs_tie_thread_to_cpu(int cpu);
-typedef PVOID mm_segment_t;
-
-/*
- * thread priority
- */
-int cfs_set_thread_priority(KPRIORITY priority);
-
-#define MAKE_MM_SEG(s) ((mm_segment_t)(ulong_ptr_t)(s))
-#define KERNEL_DS       MAKE_MM_SEG(0xFFFFFFFFUL)
-#define USER_DS         MAKE_MM_SEG(PAGE_OFFSET)
-
-#define get_ds()        (KERNEL_DS)
-#define set_fs(x) do {} while(0)
-#define get_fs() (NULL)
-
-/*
- * radix tree (linux/radix_tree.h)
- */
-
-/* radix tree root structure */
-struct radix_tree_root {
-    RTL_GENERIC_TABLE   table;
-};
-
-/* #define RADIX_TREE_INIT(mask) {0}
-
-#define RADIX_TREE(name, mask) \
-       struct radix_tree_root name RADIX_TREE_INIT(mask) */
-
-VOID RadixInitTable(IN PRTL_GENERIC_TABLE Table);
-#define INIT_RADIX_TREE(root, mask)    RadixInitTable(&((root)->table))
-
-/* all radix tree routines should be protected by external locks */
-unsigned int
-radix_tree_gang_lookup(struct radix_tree_root *root, void **results,
-                       unsigned long first_index, unsigned int max_items);
-void *radix_tree_lookup(struct radix_tree_root *root, unsigned long index);
-int radix_tree_insert(struct radix_tree_root *root, unsigned long index,
-                      void *item);
-void *radix_tree_delete(struct radix_tree_root *root, unsigned long index);
-
-#else  /* !__KERNEL__ */
-
-#if !defined(_WINDOWS_)
-
-#define CREATE_NEW          1
-#define CREATE_ALWAYS       2
-#define OPEN_EXISTING       3
-#define OPEN_ALWAYS         4
-#define TRUNCATE_EXISTING   5
-
-#define SECTION_QUERY       0x0001
-#define SECTION_MAP_WRITE   0x0002
-#define SECTION_MAP_READ    0x0004
-#define SECTION_MAP_EXECUTE 0x0008
-#define SECTION_EXTEND_SIZE 0x0010
-
-#define FILE_MAP_COPY       SECTION_QUERY
-#define FILE_MAP_WRITE      SECTION_MAP_WRITE
-#define FILE_MAP_READ       SECTION_MAP_READ
-#define FILE_MAP_ALL_ACCESS SECTION_ALL_ACCESS
-
-
-NTSYSAPI
-HANDLE
-NTAPI
-CreateFileA(
-    IN LPCSTR lpFileName,
-    IN DWORD dwDesiredAccess,
-    IN DWORD dwShareMode,
-    IN PVOID lpSecurityAttributes,
-    IN DWORD dwCreationDisposition,
-    IN DWORD dwFlagsAndAttributes,
-    IN HANDLE hTemplateFile
-    );
-
-#define CreateFile  CreateFileA
-
-NTSYSAPI
-BOOL
-NTAPI
-CloseHandle(
-    IN OUT HANDLE hObject
-    );
-
-NTSYSAPI
-DWORD
-NTAPI
-GetLastError(
-   VOID
-   );
-
-NTSYSAPI
-HANDLE
-NTAPI
-CreateFileMappingA(
-    IN HANDLE hFile,
-    IN PVOID lpFileMappingAttributes,
-    IN DWORD flProtect,
-    IN DWORD dwMaximumSizeHigh,
-    IN DWORD dwMaximumSizeLow,
-    IN LPCSTR lpName
-    );
-#define CreateFileMapping  CreateFileMappingA
-
-NTSYSAPI
-DWORD
-NTAPI
-GetFileSize(
-    IN HANDLE hFile,
-    OUT DWORD * lpFileSizeHigh
-    );
-
-NTSYSAPI
-PVOID
-NTAPI
-MapViewOfFile(
-    IN HANDLE hFileMappingObject,
-    IN DWORD dwDesiredAccess,
-    IN DWORD dwFileOffsetHigh,
-    IN DWORD dwFileOffsetLow,
-    IN SIZE_T dwNumberOfBytesToMap
-    );
-
-NTSYSAPI
-BOOL
-NTAPI
-UnmapViewOfFile(
-    IN PVOID lpBaseAddress
-    );
-#endif
-
-#endif /* __KERNEL__ */
-
-struct dentry {
-       void    *d;
-};
-
-/*
- *  misc
- */
-
-#endif /* __LIBCFS_WINNT_CFS_FS_H__*/
diff --git a/libcfs/include/libcfs/winnt/winnt-lock.h b/libcfs/include/libcfs/winnt/winnt-lock.h
deleted file mode 100644 (file)
index 23f93c3..0000000
+++ /dev/null
@@ -1,766 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-lock.h
- *
- * Basic library routines.
- */
-
-#ifndef __LIBCFS_WINNT_CFS_LOCK_H__
-#define __LIBCFS_WINNT_CFS_LOCK_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-#ifdef __KERNEL__
-
-
-/*
- * IMPORTANT !!!!!!!!
- *
- * All locks' declaration are not guaranteed to be initialized,
- * Althought some of they are initialized in Linux. All locks
- * declared by CFS_DECL_* should be initialized explicitly.
- */
-
-/*
- *  spinlock & event definitions
- */
-
-typedef struct spin_lock spinlock_t;
-
-/* atomic */
-
-typedef struct { volatile int counter; } atomic_t;
-
-#define ATOMIC_INIT(i) { i }
-
-#define atomic_read(v) ((v)->counter)
-#define atomic_set(v,i)        (((v)->counter) = (i))
-
-void FASTCALL atomic_add(int i, atomic_t *v);
-void FASTCALL atomic_sub(int i, atomic_t *v);
-
-int FASTCALL atomic_sub_and_test(int i, atomic_t *v);
-
-void FASTCALL atomic_inc(atomic_t *v);
-void FASTCALL atomic_dec(atomic_t *v);
-
-int FASTCALL atomic_dec_and_test(atomic_t *v);
-int FASTCALL atomic_inc_and_test(atomic_t *v);
-
-int FASTCALL atomic_add_return(int i, atomic_t *v);
-int FASTCALL atomic_sub_return(int i, atomic_t *v);
-
-#define atomic_inc_return(v)  atomic_add_return(1, v)
-#define atomic_dec_return(v)  atomic_sub_return(1, v)
-
-int FASTCALL atomic_dec_and_lock(atomic_t *v, spinlock_t *lock);
-
-/* event */
-
-typedef KEVENT          event_t;
-
-/*
- * cfs_init_event
- *   To initialize the event object
- *
- * Arguments:
- *   event:  pointer to the event object
- *   type:   Non Zero: SynchronizationEvent
- *           Zero: NotificationEvent
- *   status: the initial stats of the event
- *           Non Zero: signaled
- *           Zero: un-signaled
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-static inline void
-cfs_init_event(event_t *event, int type, int status)
-{
-    KeInitializeEvent(
-            event,
-            (type) ? SynchronizationEvent: NotificationEvent,
-            (status) ? TRUE : FALSE
-            );
-}
-
-/*
- * cfs_wait_event_internal
- *   To wait on an event to syncrhonize the process
- *
- * Arguments:
- *   event:  pointer to the event object
- *   timeout: the timeout for waitting or 0 means infinite time.
- *
- * Return Value:
- *   Zero:   waiting timeouts
- *   Non Zero: event signaled ...
- *
- * Notes:
- *   N/A
- */
-
-static inline int64_t
-cfs_wait_event_internal(event_t * event, int64_t timeout)
-{
-    NTSTATUS        Status;
-    LARGE_INTEGER   TimeOut;
-
-    TimeOut.QuadPart = -1 * (10000000/HZ) * timeout;
-
-    Status = KeWaitForSingleObject(
-                event,
-                Executive,
-                KernelMode,
-                FALSE,
-                (timeout != 0) ? (&TimeOut) : (NULL)
-                );
-
-    if (Status == STATUS_TIMEOUT)  {
-        return 0;
-    }
-
-    return TRUE; // signaled case
-}
-
-/*
- * cfs_wake_event
- *   To signal the event object
- *
- * Arguments:
- *   event:  pointer to the event object
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline int
-cfs_wake_event(event_t * event)
-{
-    return (KeSetEvent(event, 0, FALSE) != 0);
-}
-
-/*
- * cfs_clear_event
- *   To clear/reset the status of the event object
- *
- * Arguments:
- *   event:  pointer to the event object
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void
-cfs_clear_event(event_t * event)
-{
-    KeResetEvent(event);
-}
-
-/*
- * spin lock defintions / routines
- */
-
-/*
- * Warning:
- *
- * for spinlock operations, try to grab nesting acquisition of
- * spinlock will cause dead-lock in MP system and current irql
- * overwritten for UP system. (UP system could allow nesting spin
- * acqisition, because it's not spin at all just raising the irql.)
- *
- */
-
-struct spin_lock {
-       KSPIN_LOCK      lock;
-       KIRQL           irql;
-};
-
-#define CFS_DECL_SPIN(name)            spinlock_t name;
-#define CFS_DECL_SPIN_EXTERN(name)     extern spinlock_t name;
-
-#define DEFINE_SPINLOCK {0}
-
-static inline void spin_lock_init(spinlock_t *lock)
-{
-       KeInitializeSpinLock(&(lock->lock));
-}
-
-static inline void spin_lock(spinlock_t *lock)
-{
-       KeAcquireSpinLock(&(lock->lock), &(lock->irql));
-}
-
-static inline void spin_lock_nested(spinlock_t *lock, unsigned subclass)
-{
-       KeAcquireSpinLock(&(lock->lock), &(lock->irql));
-}
-
-static inline void spin_unlock(spinlock_t *lock)
-{
-       KIRQL   irql = lock->irql;
-       KeReleaseSpinLock(&(lock->lock), irql);
-}
-
-
-#define spin_lock_irqsave(lock, flags)  \
-       do { (flags) = 0; spin_lock(lock); } while (0)
-
-#define spin_unlock_irqrestore(lock, flags) \
-       do { spin_unlock(lock); } while (0)
-
-
-/* There's no  corresponding routine in windows kernel.
-   We must realize a light one of our own.  But there's
-   no way to identify the system is MP build or UP build
-   on the runtime. We just uses a workaround for it. */
-
-extern int libcfs_mp_system;
-
-static int spin_trylock(spinlock_t *lock)
-{
-       KIRQL   Irql;
-       int     rc = 0;
-
-       ASSERT(lock != NULL);
-
-       KeRaiseIrql(DISPATCH_LEVEL, &Irql);
-
-       if (libcfs_mp_system) {
-               if (0 == (ulong_ptr_t)lock->lock) {
-#if _X86_
-                       __asm {
-                               mov  edx, dword ptr [ebp + 8]
-                               lock bts dword ptr[edx], 0
-                               jb   lock_failed
-                               mov  rc, TRUE
-                               lock_failed:
-                       }
-#else
-                       KdBreakPoint();
-#endif
-
-               }
-       } else {
-               rc = TRUE;
-       }
-
-       if (rc) {
-               lock->irql = Irql;
-       } else {
-               KeLowerIrql(Irql);
-       }
-
-       return rc;
-}
-
-static int assert_spin_locked(spinlock_t *lock)
-{
-#if _WIN32_WINNT >= 0x502
-       /* KeTestSpinLock only avalilable on 2k3 server or later */
-       return !KeTestSpinLock(&lock->lock);
-#else
-       return (int) (lock->lock);
-#endif
-}
-
-/* synchronization between cpus: it will disable all DPCs
-   kernel task scheduler on the CPU */
-#define spin_lock_bh(x)                spin_lock(x)
-#define spin_unlock_bh(x)      spin_unlock(x)
-#define spin_lock_bh_init(x)   spin_lock_init(x)
-
-/*
- * rw_semaphore (using ERESOURCE)
- */
-
-
-struct rw_semaphore {
-       ERESOURCE       rwsem;
-};
-
-
-#define DECLARE_RWSEM(name) struct rw_semaphore name
-#define CFS_DECLARE_RWSEM_EXTERN(name) extern struct rw_semaphore name
-
-/*
- * init_rwsem
- *   To initialize the the rw_semaphore structure
- *
- * Arguments:
- *   rwsem:  pointer to the rw_semaphore structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void init_rwsem(struct rw_semaphore *s)
-{
-       ExInitializeResourceLite(&s->rwsem);
-}
-#define rwsem_init init_rwsem
-
-/*
- * fini_rwsem
- *   To finilize/destroy the the rw_semaphore structure
- *
- * Arguments:
- *   rwsem:  pointer to the rw_semaphore structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   For winnt system, we need this routine to delete the ERESOURCE.
- *   Just define it NULL for other systems.
- */
-
-static inline void fini_rwsem(struct rw_semaphore *s)
-{
-       ExDeleteResourceLite(&s->rwsem);
-}
-
-/*
- * down_read
- *   To acquire read-lock of the rw_semaphore
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void down_read(struct rw_semaphore *s)
-{
-       ExAcquireResourceSharedLite(&s->rwsem, TRUE);
-}
-#define down_read_nested down_read
-
-
-/*
- * down_read_trylock
- *   To acquire read-lock of the rw_semaphore without blocking
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   Zero: failed to acquire the read lock
- *   Non-Zero: succeeded to acquire the read lock
- *
- * Notes:
- *   This routine will return immediately without waiting.
- */
-
-static inline int down_read_trylock(struct rw_semaphore *s)
-{
-       return ExAcquireResourceSharedLite(&s->rwsem, FALSE);
-}
-
-
-/*
- * down_write
- *   To acquire write-lock of the struct rw_semaphore
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void down_write(struct rw_semaphore *s)
-{
-       ExAcquireResourceExclusiveLite(&(s->rwsem), TRUE);
-}
-#define down_write_nested down_write
-
-/*
- * down_write_trylock
- *   To acquire write-lock of the rw_semaphore without blocking
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   Zero: failed to acquire the write lock
- *   Non-Zero: succeeded to acquire the read lock
- *
- * Notes:
- *   This routine will return immediately without waiting.
- */
-
-static inline int down_write_trylock(struct rw_semaphore *s)
-{
-       return ExAcquireResourceExclusiveLite(&(s->rwsem), FALSE);
-}
-
-
-/*
- * up_read
- *   To release read-lock of the rw_semaphore
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void up_read(struct rw_semaphore *s)
-{
-       ExReleaseResourceForThreadLite(&(s->rwsem),
-                                      ExGetCurrentResourceThread());
-}
-
-
-/*
- * up_write
- *   To release write-lock of the rw_semaphore
- *
- * Arguments:
- *   rwsem:  pointer to the struct rw_semaphore
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void up_write(struct rw_semaphore *s)
-{
-       ExReleaseResourceForThreadLite(&(s->rwsem),
-                                      ExGetCurrentResourceThread());
-}
-
-/*
- * rwlock_t (using sempahore)
- *
- * - rwlock_init(x)
- * - read_lock(x)
- * - read_unlock(x)
- * - write_lock(x)
- * - write_unlock(x)
- */
-
-typedef struct {
-       spinlock_t      guard;
-       int             count;
-} rwlock_t;
-
-void rwlock_init(rwlock_t *rwlock);
-void cfs_rwlock_fini(rwlock_t *rwlock);
-
-void read_lock(rwlock_t *rwlock);
-void read_unlock(rwlock_t *rwlock);
-void write_lock(rwlock_t *rwlock);
-void write_unlock(rwlock_t *rwlock);
-
-#define write_lock_irqsave(l, f)       do { f = 0; write_lock(l); } while (0)
-#define write_unlock_irqrestore(l, f)  do { write_unlock(l); } while (0)
-#define read_lock_irqsave(l, f)                do { f = 0; read_lock(l); } while (0)
-#define read_unlock_irqrestore(l, f)   do { read_unlock(l); } while (0)
-
-#define write_lock_bh          write_lock
-#define write_unlock_bh        write_unlock
-
-struct lock_class_key {
-       int foo;
-};
-
-#define lockdep_set_class(lock, class) do {} while (0)
-
-static inline void lockdep_off(void)
-{
-}
-
-static inline void lockdep_on(void)
-{
-}
-
-/*
- * Semaphore
- *
- * - sema_init(x, v)
- * - __down(x)
- * - __up(x)
- */
-
-struct semaphore {
-       KSEMAPHORE sem;
-};
-
-static inline void sema_init(struct semaphore *s, int val)
-{
-       KeInitializeSemaphore(&s->sem, val, val);
-}
-
-static inline void __down(struct semaphore *s)
-{
-       KeWaitForSingleObject(&(s->sem), Executive, KernelMode, FALSE, NULL);
-
-}
-static inline void __up(struct semaphore *s)
-{
-       KeReleaseSemaphore(&s->sem, 0, 1, FALSE);
-}
-
-static inline int down_trylock(struct semaphore *s)
-{
-       LARGE_INTEGER  timeout = {0};
-       NTSTATUS status = KeWaitForSingleObject(&(s->sem), Executive,
-                                               KernelMode, FALSE, &timeout);
-
-       if (status == STATUS_SUCCESS)
-               return 0;
-
-       return 1;
-}
-
-/*
- * mutex_t:
- *
- * - init_mutex(x)
- * - init_mutex_locked(x)
- * - mutex_unlock(x)
- * - mutex_lock(x)
- */
-
-#define mutex semaphore
-
-#define CFS_DECLARE_MUTEX(x) struct mutex x
-
-/*
- * init_mutex
- *   To initialize a mutex_t structure
- *
- * Arguments:
- *   mutex:  pointer to the mutex_t structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-#define mutex_init cfs_init_mutex
-static inline void cfs_init_mutex(struct mutex *mutex)
-{
-       sema_init(mutex, 1);
-}
-
-/*
- * mutex_down
- *   To acquire the mutex lock
- *
- * Arguments:
- *   mutex:  pointer to the mutex_t structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void cfs_mutex_down(struct mutex *mutex)
-{
-       __down(mutex);
-}
-
-static inline int cfs_mutex_down_interruptible(struct mutex *mutex)
-{
-       __down(mutex);
-       return 0;
-}
-
-#define mutex_lock(m)          cfs_mutex_down(m)
-#define mutex_trylock(s)       down_trylock(s)
-#define mutex_lock_nested(m)   cfs_mutex_down(m)
-#define down(m)                        cfs_mutex_down(m)
-#define down_interruptible(m)  cfs_mutex_down_interruptible(m)
-
-/*
- * mutex_up
- *   To release the mutex lock (acquired already)
- *
- * Arguments:
- *   mutex:  pointer to the mutex_t structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void cfs_mutex_up(struct mutex *mutex)
-{
-       __up(mutex);
-}
-
-#define mutex_unlock(m)                cfs_mutex_up(m)
-#define up(m)                  cfs_mutex_up(m)
-
-/*
- * init_mutex_locked
- *   To initialize the mutex as acquired state
- *
- * Arguments:
- *   mutex:  pointer to the mutex_t structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void cfs_init_mutex_locked(struct mutex *mutex)
-{
-       cfs_init_mutex(mutex);
-       cfs_mutex_down(mutex);
-}
-
-static inline void mutex_destroy(struct mutex *mutex)
-{
-}
-
-/*
- * completion
- *
- * - init_complition(c)
- * - complete(c)
- * - wait_for_completion(c)
- */
-
-struct completion{
-       event_t  event;
-};
-
-
-/*
- * init_completion
- *   To initialize the completion object
- *
- * Arguments:
- *   c:  pointer to the completion structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void init_completion(struct completion *c)
-{
-       cfs_init_event(&(c->event), 1, FALSE);
-}
-
-
-/*
- * complete
- *   To complete/signal the completion object
- *
- * Arguments:
- *   c:  pointer to the completion structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void complete(struct completion *c)
-{
-       cfs_wake_event(&(c->event));
-}
-
-/*
- * wait_for_completion
- *   To wait on the completion object. If the event is signaled,
- *   this function will return to the call with the event un-singled.
- *
- * Arguments:
- *   c:  pointer to the completion structure
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-static inline void wait_for_completion(struct completion *c)
-{
-       cfs_wait_event_internal(&(c->event), 0);
-}
-
-static inline int wait_for_completion_interruptible(struct completion *c)
-{
-       cfs_wait_event_internal(&(c->event), 0);
-       return 0;
-}
-
-#endif /* !__KERNEL__ */
-#endif
diff --git a/libcfs/include/libcfs/winnt/winnt-mem.h b/libcfs/include/libcfs/winnt/winnt-mem.h
deleted file mode 100644 (file)
index cf923f9..0000000
+++ /dev/null
@@ -1,307 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-mem.h
- *
- * Basic library routines of memory manipulation routines.
- */
-
-#ifndef __LIBCFS_WINNT_CFS_MEM_H__
-#define __LIBCFS_WINNT_CFS_MEM_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-#include <libcfs/winnt/portals_utils.h>
-
-#ifdef __KERNEL__
-
-/*
- * page definitions
- */
-
-#define PAGE_CACHE_SIZE                   PAGE_SIZE
-#define PAGE_CACHE_SHIFT                  PAGE_SHIFT
-#define CFS_PAGE_MASK                   (~(PAGE_SIZE - 1))
-
-#define memory_pressure_get() (0)
-#define memory_pressure_set() do {} while (0)
-#define memory_pressure_clr() do {} while (0)
-
-struct page {
-    void *          addr;
-    atomic_t    count;
-    void *          private;
-    void *          mapping;
-    __u32           index;
-    __u32           flags;
-};
-
-#define page cfs_page
-
-#ifndef page_private
-#define page_private(page) ((page)->private)
-#define set_page_private(page, v) ((page)->private = (v))
-#endif
-
-#define page_count(page) (0)
-
-#define PG_locked               0      /* Page is locked. Don't touch. */
-#define PG_error                1
-#define PG_referenced           2
-#define PG_uptodate             3
-
-#define PG_dirty                4
-#define PG_lru                  5
-#define PG_active               6
-#define PG_slab                         7      /* slab debug (Suparna wants this) */
-
-#define PG_owner_priv_1                 8      /* Owner use. If pagecache, fs may use*/
-#define PG_arch_1               9
-#define PG_reserved            10
-#define PG_private             11      /* If pagecache, has fs-private data */
-
-#define PG_writeback           12      /* Page is under writeback */
-#define PG_compound            14      /* Part of a compound page */
-#define PG_swapcache           15      /* Swap page: swp_entry_t in private */
-
-#define PG_mappedtodisk                16      /* Has blocks allocated on-disk */
-#define PG_reclaim             17      /* To be reclaimed asap */
-#define PG_buddy               19      /* Page is free, on buddy lists */
-
-#define PG_virt         31  /* addr is not */
-
-#ifndef arch_set_page_uptodate
-#define arch_set_page_uptodate(page)
-#endif
-
-/* Make it prettier to test the above... */
-#define UnlockPage(page)        unlock_page(page)
-#define Page_Uptodate(page)     test_bit(PG_uptodate, &(page)->flags)
-#define SetPageUptodate(page)                                          \
-       do {                                                            \
-               arch_set_page_uptodate(page);                           \
-               set_bit(PG_uptodate, &(page)->flags);                   \
-       } while (0)
-#define ClearPageUptodate(page) clear_bit(PG_uptodate, &(page)->flags)
-#define PageDirty(page)        test_bit(PG_dirty, &(page)->flags)
-#define SetPageDirty(page)     set_bit(PG_dirty, &(page)->flags)
-#define ClearPageDirty(page)   clear_bit(PG_dirty, &(page)->flags)
-#define PageLocked(page)       test_bit(PG_locked, &(page)->flags)
-#define LockPage(page)         set_bit(PG_locked, &(page)->flags)
-#define TryLockPage(page)      test_and_set_bit(PG_locked, &(page)->flags)
-#define PageChecked(page)      test_bit(PG_checked, &(page)->flags)
-#define SetPageChecked(page)   set_bit(PG_checked, &(page)->flags)
-#define ClearPageChecked(page) clear_bit(PG_checked, &(page)->flags)
-#define PageLaunder(page)      test_bit(PG_launder, &(page)->flags)
-#define SetPageLaunder(page)   set_bit(PG_launder, &(page)->flags)
-#define ClearPageLaunder(page) clear_bit(PG_launder, &(page)->flags)
-#define ClearPageArch1(page)   clear_bit(PG_arch_1, &(page)->flags)
-
-#define PageError(page)        test_bit(PG_error, &(page)->flags)
-#define SetPageError(page)     set_bit(PG_error, &(page)->flags)
-#define ClearPageError(page)   clear_bit(PG_error, &(page)->flags)
-#define PageReferenced(page)   test_bit(PG_referenced, &(page)->flags)
-#define SetPageReferenced(page) set_bit(PG_referenced, &(page)->flags)
-#define ClearPageReferenced(page) clear_bit(PG_referenced, &(page)->flags)
-
-#define PageActive(page)        test_bit(PG_active, &(page)->flags)
-#define SetPageActive(page)     set_bit(PG_active, &(page)->flags)
-#define ClearPageActive(page)   clear_bit(PG_active, &(page)->flags)
-
-#define PageWriteback(page)    test_bit(PG_writeback, &(page)->flags)
-#define TestSetPageWriteback(page) test_and_set_bit(PG_writeback,      \
-                                                       &(page)->flags)
-#define TestClearPageWriteback(page) test_and_clear_bit(PG_writeback,  \
-                                                       &(page)->flags)
-
-/*
- * Universal memory allocator API
- */
-enum cfs_alloc_flags {
-       /* allocation is not allowed to block */
-       GFP_ATOMIC = 0x1,
-       /* allocation is allowed to block */
-       __GFP_WAIT   = 0x2,
-       /* allocation should return zeroed memory */
-       __GFP_ZERO   = 0x4,
-       /* allocation is allowed to call file-system code to free/clean
-        * memory */
-       __GFP_FS     = 0x8,
-       /* allocation is allowed to do io to free/clean memory */
-       __GFP_IO     = 0x10,
-       /* don't report allocation failure to the console */
-       __GFP_NOWARN = 0x20,
-       /* standard allocator flag combination */
-       GFP_IOFS    = __GFP_FS | __GFP_IO,
-       GFP_USER   = __GFP_WAIT | __GFP_FS | __GFP_IO,
-       GFP_NOFS   = __GFP_WAIT | __GFP_IO,
-       GFP_KERNEL = __GFP_WAIT | __GFP_IO | __GFP_FS,
-};
-
-/* flags for cfs_page_alloc() in addition to enum cfs_alloc_flags */
-enum cfs_alloc_page_flags {
-       /* allow to return page beyond KVM. It has to be mapped into KVM by
-        * kmap() and unmapped with kunmap(). */
-       __GFP_HIGHMEM  = 0x40,
-       GFP_HIGHUSER = __GFP_WAIT | __GFP_FS | __GFP_IO |
-                            __GFP_HIGHMEM,
-};
-
-struct page *alloc_page(int flags);
-void __free_page(struct page *pg);
-void cfs_release_page(struct page *pg);
-struct page *virt_to_page(void *addr);
-
-#define page_cache_get(a) do {} while (0)
-#define page_cache_release(a) do {} while (0)
-
-static inline void *page_address(struct page *page)
-{
-    return page->addr;
-}
-
-static inline void *kmap(struct page *page)
-{
-    return page->addr;
-}
-
-static inline void kunmap(struct page *page)
-{
-    return;
-}
-
-static inline void get_page(struct page *page)
-{
-    atomic_inc(&page->count);
-}
-
-static inline void cfs_put_page(struct page *page)
-{
-    atomic_dec(&page->count);
-}
-
-static inline int page_count(struct page *page)
-{
-    return atomic_read(&page->count);
-}
-
-#define page_index(p)       ((p)->index)
-
-/*
- * Memory allocator
- */
-
-#define ALLOC_ATOMIC_TRY       (0)
-extern void *kmalloc(size_t nr_bytes, u_int32_t flags);
-extern void  kfree(void *addr);
-extern void *vmalloc(size_t nr_bytes);
-extern void  vfree(void *addr);
-
-/*
- * SLAB allocator
- */
-
-#define SLAB_HWCACHE_ALIGN             0
-
-/* The cache name is limited to 20 chars */
-
-struct kmem_cache {
-    char                    name[20];
-    ulong_ptr_t             flags;
-    NPAGED_LOOKASIDE_LIST   npll;
-};
-
-
-extern struct kmem_cache *kmem_cache_create(const char *, size_t, size_t,
-                                           unsigned long, void *);
-extern kmem_cache_destroy(struct kmem_cache *);
-extern void *kmem_cache_alloc(struct kmem_cache *, int);
-extern void kmem_cache_free(struct kmem_cache *, void *);
-
-/*
- * shrinker
- */
-typedef int (*shrink_callback)(int nr_to_scan, gfp_t gfp_mask);
-struct shrinker {
-       shrink_callback cb;
-       int seeks;      /* seeks to recreate an obj */
-
-       /* These are for internal use */
-       struct list_head list;
-       long nr;        /* objs pending delete */
-};
-
-struct shrinker *set_shrinker(int seeks, shrink_callback cb);
-void remove_shrinker(struct shrinker *s);
-
-int start_shrinker_timer();
-void stop_shrinker_timer();
-
-/*
- * Page allocator slabs
- */
-
-extern struct kmem_cache *cfs_page_t_slab;
-extern struct kmem_cache *cfs_page_p_slab;
-
-
-#define DECL_MMSPACE
-#define MMSPACE_OPEN    do {} while (0)
-#define MMSPACE_CLOSE   do {} while (0)
-
-
-#define smp_mb()     do {} while(0)
-#define rmb()        smp_mb()
-#define wmb()        smp_mb()
-
-/*
- * MM defintions from (linux/mm.h)
- */
-
-#define DEFAULT_SEEKS 2 /* shrink seek */
-
-#else  /* !__KERNEL__ */
-
-#include "../user-mem.h"
-
-/* page alignmed buffer allocation */
-void* pgalloc(size_t factor);
-void  pgfree(void * page);
-
-#endif /* __KERNEL__ */
-
-#endif /* __WINNT_CFS_MEM_H__ */
diff --git a/libcfs/include/libcfs/winnt/winnt-prim.h b/libcfs/include/libcfs/winnt/winnt-prim.h
deleted file mode 100644 (file)
index 7d8147f..0000000
+++ /dev/null
@@ -1,1280 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-prim.h
- *
- * Basic library routines.
- */
-
-#ifndef __LIBCFS_WINNT_CFS_PRIM_H__
-#define __LIBCFS_WINNT_CFS_PRIM_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-#ifndef EXPORT_SYMBOL
-# define EXPORT_SYMBOL(s)
-#endif
-
-/*
- * libcfs proc device object
- */
-
-
-#define LUSTRE_PROC_DEVICE  L"\\Device\\LNetProcFS"      /* proc fs emulator device object */
-#define LUSTRE_PROC_SYMLNK  L"\\DosDevices\\LNetProcFS"  /* proc fs user-visible device */
-
-
-/*
- * Device IO Control Code Definitions
- */
-
-#define FILE_DEVICE_LIBCFS      ('LC')
-
-#define FUNC_LIBCFS_VERSION     0x101  // get version of current libcfs
-#define FUNC_LIBCFS_IOCTL       0x102  // Device i/o control to proc fs
-
-
-#define IOCTL_LIBCFS_VERSION \
-     CTL_CODE (FILE_DEVICE_LIBCFS, FUNC_LIBCFS_VERSION, METHOD_BUFFERED, FILE_ANY_ACCESS)
-#define IOCTL_LIBCFS_ENTRY   \
-     CTL_CODE(FILE_DEVICE_LIBCFS, FUNC_LIBCFS_IOCTL,   METHOD_BUFFERED, FILE_ANY_ACCESS)
-
-#pragma pack(4)
-typedef struct _CFS_PROC_IOCTL {
-
-    ULONG           cmd;    // ioctl command identifier
-    ULONG           len;    // length of data
-    int             rc;     // return code
-    ULONG           usused; // unused 
-
-    // UCHAR        data[]; // content of the real ioctl
-
-} CFS_PROC_IOCTL, *PCFS_PROC_IOCTL;
-#pragma pack()
-
-#ifdef __KERNEL__
-
-void cfs_enter_debugger(void);
-#define __builtin_return_address(x) (0)
-
-/*
- * Symbol functions for libcfs
- *
- * OSX has no facility for use to register symbol.
- * So we have to implement it.
- */
-#define CFS_SYMBOL_LEN     64
-
-struct  cfs_symbol {
-       char             name[CFS_SYMBOL_LEN];
-       void            *value;
-       int              ref;
-       struct list_head sym_list;
-};
-
-extern int      cfs_symbol_register(const char *, const void *);
-extern void     cfs_symbol_unregister(const char *);
-extern void *   cfs_symbol_get(const char *);
-extern void     cfs_symbol_put(const char *);
-extern void     cfs_symbol_clean();
-
-typedef struct file_operations cfs_file_operations_t;
-
-/*
- * Pseudo device register
- */
-
-typedef struct miscdevice{
-    int                     minor;
-    const char *            name;
-    cfs_file_operations_t * fops;
-};
-
-int misc_register(struct miscdevice *psdev);
-int misc_deregister(struct miscdevice *psdev);
-
-
-/*
- * Proc emulator file system APIs
- */
-
-typedef int read_proc_t(char *page, char **start, off_t off,
-                            int count, int *eof, void *data);
-typedef int write_proc_t(struct file *file, const char *buffer,
-                             unsigned long count, void *data);
-
-#define CFS_PROC_ENTRY_MAGIC 'CPEM'
-
-#define CFS_PROC_FLAG_DIRECTORY    0x00000001 // directory node
-#define CFS_PROC_FLAG_ATTACHED     0x00000002 // node is attached to proc
-#define CFS_PROC_FLAG_MISCDEV      0x00000004 // miscellaneous device
-
-typedef struct cfs_proc_entry
-{
-    ULONG                   magic;      // Magic
-    ULONG                   flags;      // Flags
-
-    struct _dir_entry {                 // proc directory entry
-        PRTL_SPLAY_LINKS    root;
-    };
-
-    struct cfs_proc_entry  *parent;
-
-    struct _file_entry {                // proc file / leaf entry
-           read_proc_t  *  read_proc;
-           write_proc_t *  write_proc;
-    };
-
-    mode_t                  mode;
-    unsigned short          nlink;
-    BOOLEAN                 deleted;
-
-       
-    struct file_operations *proc_fops;
-    void                   *data;
-
-    // proc_dir_entry ended.
-
-    RTL_SPLAY_LINKS         s_link;       // splay link
-
-    //
-    // Maximum length of proc entry name is 0x20
-    //
-
-    char                    name[0x20];
-
-} cfs_proc_entry_t, cfs_proc_dir_entry_t;
-
-typedef cfs_proc_entry_t cfs_proc_dir_entry_t;
-#define proc_dir_entry cfs_proc_entry
-
-#define PROC_BLOCK_SIZE    PAGE_SIZE
-
-struct proc_dir_entry *PDE(const struct inode *inode);
-
-
-/*
- * Sysctl register
- */
-typedef int ctl_handler(struct ctl_table *table,
-                       int *name,  int nlen,
-                       void *oldval, size_t *oldlenp,
-                       void *newval, size_t newlen,
-                       void **context);
-
-typedef int proc_handler (struct ctl_table *ctl,
-                         int write, struct file *filp,
-                         void *buffer, size_t *lenp);
-
-
-int proc_dointvec(struct ctl_table *table, int write, struct file *filp,
-                    void *buffer, size_t *lenp);
-
-int proc_dostring(struct ctl_table *table, int write, struct file *filp,
-                 void *buffer, size_t *lenp);
-
-int sysctl_string(struct ctl_table *table, int *name, int nlen,
-                 void *oldval, size_t *oldlenp,
-                 void *newval, size_t newlen, void **context);
-
-/*
- *  System io control definitions
- */
-
-#define CTL_MAXNAME 10
-
-#define CTL_ANY     -1  /* Matches any name */
-#define CTL_NONE    0
-
-enum
-{
-    CTL_KERN=1,     /* General kernel info and control */
-    CTL_VM=2,       /* VM management */
-    CTL_NET=3,      /* Networking */
-    CTL_PROC=4,     /* Process info */
-    CTL_FS=5,       /* Filesystems */
-    CTL_DEBUG=6,        /* Debugging */
-    CTL_DEV=7,      /* Devices */
-    CTL_BUS=8,      /* Busses */
-    CTL_ABI=9,      /* Binary emulation */
-    CTL_CPU=10      /* CPU stuff (speed scaling, etc) */
-};
-
-/* sysctl table definitons */
-struct ctl_table 
-{
-       int ctl_name;
-       char *procname;
-       void *data;
-       int maxlen;
-       mode_t mode;
-       struct ctl_table *child;
-       proc_handler *proc_handler;     /* text formatting callback */
-       ctl_handler *strategy;          /* read / write callback functions */
-       cfs_proc_entry_t *de;   /* proc entry block */
-       void *extra1;
-       void *extra2;
-};
-
-
-/* the mantaner of the cfs_sysctl_table trees */
-struct ctl_table_header
-{
-       struct ctl_table *ctl_table;
-       struct list_head ctl_entry;
-};
-
-/* proc root entries, support routines */
-extern cfs_proc_entry_t *  cfs_proc_root;   /* / */
-extern cfs_proc_entry_t *  cfs_proc_proc;   /* /proc */
-extern cfs_proc_entry_t *  cfs_proc_fs;     /* /proc/fs */
-extern cfs_proc_entry_t *  cfs_proc_sys;    /* /proc/sys */
-extern cfs_proc_entry_t *  cfs_proc_dev;    /* /dev */
-
-cfs_proc_entry_t * create_proc_entry(const char *name, mode_t mod,
-                                         cfs_proc_entry_t *parent);
-void proc_free_entry(cfs_proc_entry_t *de);
-void remove_proc_entry(const char *name, cfs_proc_entry_t *entry);
-cfs_proc_entry_t * search_proc_entry(const char * name,
-                        cfs_proc_entry_t *  root );
-cfs_proc_entry_t *proc_symlink(const char *name,
-                                      cfs_proc_entry_t *parent,
-                               const char *dest);
-cfs_proc_entry_t *proc_mkdir(const char *name,
-                                    cfs_proc_entry_t *parent);
-
-#define cfs_create_proc_entry create_proc_entry
-#define cfs_free_proc_entry   proc_free_entry
-#define cfs_remove_proc_entry remove_proc_entry
-
-struct ctl_table_header *register_sysctl_table(struct ctl_table *table);
-void unregister_sysctl_table(struct ctl_table_header *header);
-
-/*
- * seq device (linux/seq_file.h)
- */
-
-
-/*
- * seq file definitions
- */
-
-struct dentry;
-struct vfsmount;
-
-struct path {
-        struct vfsmount *mnt;
-        struct dentry *dentry;
-};
-
-struct seq_operations;
-struct file;
-struct inode;
-
-struct seq_file {
-       char *buf;
-       size_t size;
-       size_t from;
-       size_t count;
-       loff_t index;
-       u32    version;
-       struct mutex            lock;
-       const struct seq_operations *op;
-       void *private;
-};
-
-struct seq_operations {
-       void * (*start) (struct seq_file *m, loff_t *pos);
-       void (*stop) (struct seq_file *m, void *v);
-       void * (*next) (struct seq_file *m, void *v, loff_t *pos);
-       int (*show) (struct seq_file *m, void *v);
-};
-
-int seq_open(struct file *, const struct seq_operations *);
-ssize_t seq_read(struct file *, char __user *, size_t, loff_t *);
-loff_t seq_lseek(struct file *, loff_t, int);
-int seq_release(struct inode *, struct file *);
-int seq_escape(struct seq_file *, const char *, const char *);
-int seq_putc(struct seq_file *m, char c);
-int seq_puts(struct seq_file *m, const char *s);
-
-int seq_path(struct seq_file *, struct path *, char *);
-
-int single_open(struct file *, int (*)(struct seq_file *, void *), void *);
-int single_release(struct inode *, struct file *);
-void *__seq_open_private(struct file *, const struct seq_operations *, int);
-int seq_open_private(struct file *, const struct seq_operations *, int);
-int seq_release_private(struct inode *, struct file *);
-
-#define SEQ_START_TOKEN ((void *)1)
-
-/*
- * Helpers for iteration over list_head-s in seq_files
- */
-
-extern struct list_head *seq_list_start(struct list_head *head, loff_t pos);
-extern struct list_head *seq_list_start_head(struct list_head *head, loff_t pos);
-extern struct list_head *seq_list_next(void *v, struct list_head *head, loff_t *ppos);
-
-/*
- *  declaration of proc kernel process routines
- */
-
-struct file *lustre_open_file(char *filename);
-
-int lustre_close_file(struct file *fh);
-
-int lustre_do_ioctl(struct file *fh, unsigned long cmd, ulong_ptr_t arg);
-
-int lustre_ioctl_file(struct file *fh, PCFS_PROC_IOCTL devctl);
-
-size_t lustre_read_file(struct file *fh, loff_t offl, size_t size, char *buf);
-
-size_t lustre_write_file(struct file *fh, loff_t off, size_t size, char *buf);
-
-/*
- * Wait Queue
- */
-
-
-#define TASK_INTERRUPTIBLE      0x00000001
-#define TASK_UNINTERRUPTIBLE            0x00000002
-#define TASK_RUNNING         0x00000003
-#define CFS_TASK_UNINTERRUPTIBLE TASK_UNINTERRUPTIBLE
-
-#define CFS_WAITQ_MAGIC     'CWQM'
-#define CFS_WAITLINK_MAGIC  'CWLM'
-
-typedef struct cfs_waitq {
-       unsigned int            magic;
-       unsigned int            flags;
-
-       spinlock_t              guard;
-       struct list_head        waiters;
-} wait_queue_head_t;
-
-
-typedef struct cfs_waitlink wait_queue_t;
-
-#define CFS_WAITQ_CHANNELS     (2)
-
-#define CFS_WAITQ_CHAN_NORMAL  (0)
-#define CFS_WAITQ_CHAN_FORWARD (1)
-
-typedef struct cfs_waitlink_channel {
-       struct list_head        link;
-       wait_queue_head_t       *waitq;
-       wait_queue_t            *waitl;
-} cfs_waitlink_channel_t;
-
-struct cfs_waitlink {
-
-    unsigned int            magic;
-    int                     flags;
-    event_t  *              event;
-    atomic_t *          hits;
-
-    cfs_waitlink_channel_t  waitq[CFS_WAITQ_CHANNELS];
-};
-
-enum {
-       CFS_WAITQ_EXCLUSIVE = 1
-};
-
-#define CFS_DECL_WAITQ(name) wait_queue_head_t name
-
-/* Kernel thread */
-
-typedef int (*cfs_thread_t) (void *arg);
-
-typedef struct _cfs_thread_context {
-    cfs_thread_t        func;
-    void *              arg;
-} cfs_thread_context_t;
-
-/*
- * thread creation flags from Linux, not used in winnt
- */
-#define CSIGNAL         0x000000ff      /* signal mask to be sent at exit */
-#define CLONE_VM        0x00000100      /* set if VM shared between processes */
-#define CLONE_FS        0x00000200      /* set if fs info shared between processes */
-#define CLONE_FILES     0x00000400      /* set if open files shared between processes */
-#define CLONE_SIGHAND   0x00000800      /* set if signal handlers and blocked signals shared */
-#define CLONE_PID       0x00001000      /* set if pid shared */
-#define CLONE_PTRACE    0x00002000      /* set if we want to let tracing continue on the child too */
-#define CLONE_VFORK     0x00004000      /* set if the parent wants the child to wake it up on mm_release */
-#define CLONE_PARENT    0x00008000      /* set if we want to have the same parent as the cloner */
-#define CLONE_THREAD    0x00010000      /* Same thread group? */
-#define CLONE_NEWNS     0x00020000      /* New namespace group? */
-
-#define CLONE_SIGNAL    (CLONE_SIGHAND | CLONE_THREAD)
-
-/*
- * group_info: linux/sched.h
- */
-#define NGROUPS_SMALL           32
-#define NGROUPS_PER_BLOCK       ((int)(PAGE_SIZE / sizeof(gid_t)))
-struct group_info {
-       int ngroups;
-       atomic_t usage;
-       gid_t small_block[NGROUPS_SMALL];
-       int nblocks;
-       gid_t *blocks[0];
-};
-
-#define get_group_info(group_info) do { \
-       atomic_inc(&(group_info)->usage); \
-} while (0)
-
-#define put_group_info(group_info) do { \
-       if (atomic_dec_and_test(&(group_info)->usage)) \
-               groups_free(group_info); \
-} while (0)
-
-static __inline struct group_info *groups_alloc(int gidsetsize)
-{
-    struct group_info * groupinfo;
-    KdPrint(("%s(%d): %s NOT implemented.\n", __FILE__, __LINE__, __FUNCTION__));
-    groupinfo = kmalloc(sizeof(struct group_info), 0);
-
-    if (groupinfo) {
-       memset(groupinfo, 0, sizeof(struct group_info));
-    }
-    return groupinfo;
-}
-
-static __inline void groups_free(struct group_info *group_info)
-{
-       KdPrint(("%s(%d): %s NOT implemented.\n", __FILE__, __LINE__,
-               __FUNCTION__));
-       kfree(group_info);
-}
-
-static __inline int
-set_current_groups(struct group_info *group_info)
-{
-    KdPrint(("%s(%d): %s NOT implemented.\n", __FILE__, __LINE__,
-             __FUNCTION__));
-    return 0;
-}
-
-static __inline int groups_search(struct group_info *group_info,
-                                  gid_t grp) {
-    KdPrint(("%s(%d): %s NOT implemented.\n", __FILE__, __LINE__,
-            __FUNCTION__));
-    return 0;
-}
-
-/*
- *   capability issue (linux/capability.h)
- */
-
-/* Override resource limits. Set resource limits. */
-/* Override quota limits. */
-/* Override reserved space on ext2 filesystem */
-/* Modify data journaling mode on ext3 filesystem (uses journaling
-   resources) */
-/* NOTE: ext2 honors fsuid when checking for resource overrides, so
-   you can override using fsuid too */
-/* Override size restrictions on IPC message queues */
-/* Allow more than 64hz interrupts from the real-time clock */
-/* Override max number of consoles on console allocation */
-/* Override max number of keymaps */
-
-#define CAP_SYS_RESOURCE     24
-
-/*
- *  capabilities support 
- */
-
-typedef __u32 kernel_cap_t;
-
-#define cap_raise(c, flag)  do {} while(0)
-#define cap_lower(c, flag)  do {} while(0)
-#define cap_raised(c, flag) do {} while(0)
-
-
-/*
- * Task struct
- */
-
-#define MAX_SCHEDULE_TIMEOUT     ((long_ptr_t)(~0UL>>12))
-#define schedule_timeout(t)      schedule_timeout_and_set_state(0, t)
-
-struct vfsmount;
-
-#define NGROUPS 1
-#define CFS_CURPROC_COMM_MAX (16)
-struct task_struct{
-    mode_t                umask;
-    sigset_t              blocked;
-
-    pid_t                 pid;
-    pid_t                 pgrp;
-
-    uid_t                 uid,euid,suid,fsuid;
-    gid_t                 gid,egid,sgid,fsgid;
-
-    int                   ngroups;
-    int                   cgroups;
-    gid_t                 groups[NGROUPS];
-    struct group_info     *group_info;
-    kernel_cap_t      cap_effective,
-                          cap_inheritable,
-                          cap_permitted;
-
-    char                  comm[CFS_CURPROC_COMM_MAX];
-    void                 *journal_info;
-    struct vfsmount      *fs;
-};
-
-static inline void task_lock(struct task_struct *t)
-{
-}
-
-static inline void task_unlock(struct task_struct *t)
-{
-}
-
-/*
- *  linux task struct emulator ...
- */
-
-#define TASKMAN_MAGIC  'TMAN'   /* Task Manager */
-#define TASKSLT_MAGIC  'TSLT'   /* Task Slot */
-
-typedef struct _TASK_MAN {
-       ULONG           Magic;          /* Magic and Flags */
-       ULONG           Flags;
-
-       spinlock_t      Lock;           /* Protection lock */
-
-       struct kmem_cache       *slab;          /* Memory slab for task slot */
-
-       ULONG           NumOfTasks;     /* Total tasks (threads) */
-       LIST_ENTRY      TaskList;       /* List of task slots */
-} TASK_MAN, *PTASK_MAN;
-
-typedef struct _TASK_SLOT {
-
-    ULONG           Magic;      /* Magic and Flags */
-    ULONG           Flags;
-
-    LIST_ENTRY      Link;       /* To be linked to TaskMan */
-
-    event_t         Event;      /* Schedule event */
-
-    HANDLE          Pid;        /* Process id */
-    HANDLE          Tid;        /* Thread id */
-    PETHREAD        Tet;        /* Pointer to ethread */
-
-    atomic_t    count;      /* refer count */
-    atomic_t    hits;       /* times of waken event singaled */
-
-    KIRQL           irql;       /* irql for rwlock ... */
-
-    struct task_struct      task;       /* linux task part */
-
-} TASK_SLOT, *PTASK_SLOT;
-
-
-#define set_current_state(s)     do {;} while (0)
-
-#define wait_event(wq, condition)                           \
-do {                                                            \
-       wait_queue_t __wait;                                    \
-                                                               \
-       init_waitqueue_entry_current(&__wait);                  \
-       while (TRUE) {                                          \
-           add_wait_queue(&wq, &__wait);                        \
-           if (condition) {                                    \
-               break;                                          \
-           }                                                   \
-           waitq_wait(&__wait, TASK_INTERRUPTIBLE);            \
-           remove_wait_queue(&wq, &__wait);                    \
-       }                                                       \
-       remove_wait_queue(&wq, &__wait);                        \
-} while(0)
-
-#define wait_event_interruptible(wq, condition)                 \
-{                                                               \
-       wait_queue_t __wait;                                    \
-                                                               \
-       __ret = 0;                                              \
-       init_waitqueue_entry_current(&__wait);                             \
-       while (TRUE) {                                          \
-               add_wait_queue(&wq, &__wait);                   \
-               if (condition) {                                \
-                       break;                                  \
-               }                                               \
-               waitq_wait(&__wait, TASK_INTERRUPTIBLE);\
-               remove_wait_queue(&wq, &__wait);                        \
-       }                                                       \
-       remove_wait_queue(&wq, &__wait);                            \
-       __ret;                                                  \
-}
-
-# define wait_event_interruptible_exclusive(wq, condition)  \
-        wait_event_interruptible(wq, condition)
-
-/*
-   retval == 0; condition met; we're good.
-   retval < 0; interrupted by signal.
-   retval > 0; timed out.
-*/
-
-#define wait_event_interruptible_timeout(wq, condition, timeout)\
-do {                                                            \
-       wait_queue_t __wait;                                    \
-                                                               \
-       init_waitqueue_entry_current(&__wait);                  \
-       while (TRUE) {                                          \
-           add_wait_queue(&wq, &__wait);                       \
-           if (condition) {                                    \
-               break;                                          \
-           }                                                   \
-           if (waitq_timedwait(&__wait,                        \
-               TASK_INTERRUPTIBLE, timeout) == 0) {            \
-               break;                                          \
-           }                                                   \
-           remove_wait_queue(&wq, &__wait);                    \
-       }                                                       \
-       remove_wait_queue(&wq, &__wait);                        \
-} while(0)
-
-int     init_task_manager();
-void    cleanup_task_manager();
-struct task_struct * current;
-int     wake_up_process(struct task_struct * task);
-void sleep_on(wait_queue_head_t *waitq);
-#define might_sleep() do {} while(0)
-#define DECL_JOURNAL_DATA
-#define PUSH_JOURNAL       do {;} while(0)
-#define POP_JOURNAL                do {;} while(0)
-
-
-/* module related definitions */
-
-#ifndef __exit
-#define __exit
-#endif
-#ifndef __init
-#define __init
-#endif
-
-struct module{
-    const char *name;
-};
-
-extern struct module libcfs_global_module;
-#define THIS_MODULE  &libcfs_global_module
-
-#define request_module(x, y) (0)
-#define MODULE_AUTHOR(s)
-#define MODULE_DESCRIPTION(s)
-#define MODULE_LICENSE(s)
-#define MODULE_PARM(a, b)
-#define MODULE_PARM_DESC(a, b)
-
-#define module_init(X) int  __init module_##X() {return X();}
-#define module_exit(X) void __exit module_##X() {X();}
-
-#define DECLARE_INIT(X) extern int  __init  module_##X(void)
-#define DECLARE_EXIT(X) extern void __exit  module_##X(void)
-
-#define MODULE_INIT(X) do { int rc = module_##X(); \
-                            if (rc) goto errorout; \
-                          } while(0)
-
-#define MODULE_EXIT(X) do { module_##X(); } while(0)
-
-
-/* Module interfaces */
-#define cfs_module(name, version, init, fini) \
-        module_init(init);                    \
-        module_exit(fini)
-#define module_refcount(x) (1)
-
-/*
- * typecheck
- */
-
-#define typecheck(a, b) do {} while(0)
-
-/*
- * linux/crypto.h
- */
-
-#define CRYPTO_MAX_ALG_NAME            64
-
-#define CRYPTO_TFM_MODE_ECB            0x00000001
-#define CRYPTO_TFM_MODE_CBC            0x00000002
-#define CRYPTO_TFM_MODE_CFB            0x00000004
-#define CRYPTO_TFM_MODE_CTR            0x00000008
-#define CRYPTO_TFM_MODE_EME            0x00000010
-
-/*
- * hash
- */
-/* 2^31 + 2^29 - 2^25 + 2^22 - 2^19 - 2^16 + 1 */
-#define GOLDEN_RATIO_PRIME_32 0x9e370001UL
-
-#if 0 /* defined in libcfs/libcfs_hash.h */
-static inline u32 hash_long(u32 val, unsigned int bits)
-{
-       /* On some cpus multiply is faster, on others gcc will do shifts */
-       u32 hash = val * GOLDEN_RATIO_PRIME_32;
-
-       /* High bits are more random, so use them. */
-       return hash >> (32 - bits);
-}
-#endif
-
-/*
- * Timer
- */
-
-#define CFS_TIMER_FLAG_INITED   0x00000001  // Initialized already
-#define CFS_TIMER_FLAG_TIMERED  0x00000002  // KeSetTimer is called
-
-struct timer_list {
-
-    KSPIN_LOCK      Lock;
-
-    ULONG           Flags;
-
-    KDPC            Dpc;
-    KTIMER          Timer;
-
-    cfs_time_t      deadline;
-
-    void (*proc)(ulong_ptr_t);
-    void *          arg;
-
-};
-
-/*
- *  libcfs globals initialization/cleanup
- */
-
-int
-libcfs_arch_init(void);
-
-void
-libcfs_arch_cleanup(void);
-
-/*
- *  cache alignment size
- */
-
-#define L1_CACHE_ALIGN(x) (x)
-
-#define __cacheline_aligned
-
-/*
- * SMP ...
- */
-
-
-#define SMP_CACHE_BYTES             128
-#define NR_CPUS                 (32)
-#define smp_num_cpus                ((CCHAR)KeNumberProcessors)
-#define num_possible_cpus()     smp_num_cpus
-#define num_online_cpus()       smp_num_cpus
-#define smp_processor_id()         ((USHORT)KeGetCurrentProcessorNumber())
-#define smp_call_function(f, a, n, w)          do {} while(0)
-#define smp_rmb()                   do {} while(0)
-
-/*
- *  Irp related
- */
-
-#define NR_IRQS                 512
-#define in_interrupt()          (0)
-
-/*
- *  printk flags
- */
-
-#define KERN_EMERG      "<0>"   /* system is unusable                   */
-#define KERN_ALERT      "<1>"   /* action must be taken immediately     */
-#define KERN_CRIT       "<2>"   /* critical conditions                  */
-#define KERN_ERR        "<3>"   /* error conditions                     */
-#define KERN_WARNING    "<4>"   /* warning conditions                   */
-#define KERN_NOTICE     "<5>"   /* normal but significant condition     */
-#define KERN_INFO       "<6>"   /* informational                        */
-#define KERN_DEBUG      "<7>"   /* debug-level messages                 */
-
-/*
- * Misc
- */
-
-#define inter_module_get(n)                    cfs_symbol_get(n)
-#define inter_module_put(n)                    cfs_symbol_put(n)
-
-#ifndef likely
-#define likely(exp) (exp)
-#endif
-#ifndef unlikely
-#define unlikely(exp) (exp)
-#endif
-
-#define local_irq_save(x)
-#define local_irq_restore(x)
-
-#define va_copy(_d, _s)                 (_d = _s)
-
-char *strnchr(const char *s, size_t count, int c);
-
-#define adler32(a,b,l) zlib_adler32(a,b,l)
-ULONG zlib_adler32(ULONG adler, const BYTE *buf, UINT len);
-
-typedef ssize_t (*read_actor_t)();
-
-#if DBG
-/*
- *  winnt debug routines
- */
-
-VOID
-KsPrintf(
-    LONG  DebugPrintLevel,
-    PCHAR DebugMessage,
-    ...
-    );
-
-PUCHAR
-KsNtStatusToString (IN NTSTATUS Status);
-#endif
-
-#else   /* !__KERNEL__ */
-
-void cfs_enter_debugger();
-
-/*
- *  PAGE_SIZE ...
- */
-
-#ifndef PAGE_SIZE
-#define PAGE_SIZE       (4096)
-#endif
-
-#define getpagesize()   (4096)
-
-#define PAGE_CACHE_SIZE PAGE_SIZE
-#define PAGE_CACHE_MASK PAGE_MASK
-
-#define PTHREAD_MUTEX_INITIALIZER ((pthread_mutex_t) -1)
-#define PTHREAD_RECURSIVE_MUTEX_INITIALIZER ((pthread_mutex_t) -2)
-#define PTHREAD_ERRORCHECK_MUTEX_INITIALIZER ((pthread_mutex_t) -3)
-
-struct file {
-       int foo;
-};
-
-#include "../user-prim.h"
-#include "../user-lock.h"
-#include <sys/stat.h>
-#include <sys/types.h>
-
-#define strcasecmp  strcmp
-#define strncasecmp strncmp
-#define getpid()   (0)
-
-#define getuid()    (0)
-#define getgrgid(x) (NULL)
-
-struct passwd {
-        uid_t pw_uid;
-        char  pw_name[64];
-};
-struct passwd * getpwuid(uid_t uid);
-
-int cfs_proc_mknod(const char *path, mode_t mode, dev_t dev);
-
-int gethostname(char * name, int namelen);
-
-#define setlinebuf(x) do {} while(0)
-
-
-/* Maximum EA Information Length */
-#define EA_MAX_LENGTH  (sizeof(FILE_FULL_EA_INFORMATION) + 15)
-
-/*
- *  proc user mode routines
- */
-
-int cfs_proc_open (char * filename, int oflag);
-int cfs_proc_close(int fd);
-int cfs_proc_read(int fd, void *buffer, unsigned int count);
-int cfs_proc_write(int fd, void *buffer, unsigned int count);
-int cfs_proc_ioctl(int fd, int cmd, void *buffer);
-FILE *cfs_proc_fopen(char *path, char * mode);
-char *cfs_proc_fgets(char * buf, int len, FILE *fp);
-int cfs_proc_fclose(FILE *fp);
-
-/* Bits set in the FLAGS argument to `glob'.  */
-#define        GLOB_ERR        (1 << 0)/* Return on read errors.  */
-#define        GLOB_MARK       (1 << 1)/* Append a slash to each name.  */
-#define        GLOB_NOSORT     (1 << 2)/* Don't sort the names.  */
-#define        GLOB_DOOFFS     (1 << 3)/* Insert PGLOB->gl_offs NULLs.  */
-#define        GLOB_NOCHECK    (1 << 4)/* If nothing matches, return the pattern.  */
-#define        GLOB_APPEND     (1 << 5)/* Append to results of a previous call.  */
-#define        GLOB_NOESCAPE   (1 << 6)/* Backslashes don't quote metacharacters.  */
-#define        GLOB_PERIOD     (1 << 7)/* Leading `.' can be matched by metachars.  */
-
-#if !defined __USE_POSIX2 || defined __USE_BSD || defined __USE_GNU
-# define GLOB_MAGCHAR   (1 << 8)/* Set in gl_flags if any metachars seen.  */
-# define GLOB_ALTDIRFUNC (1 << 9)/* Use gl_opendir et al functions.  */
-# define GLOB_BRACE     (1 << 10)/* Expand "{a,b}" to "a" "b".  */
-# define GLOB_NOMAGIC   (1 << 11)/* If no magic chars, return the pattern.  */
-# define GLOB_TILDE     (1 << 12)/* Expand ~user and ~ to home directories. */
-# define GLOB_ONLYDIR   (1 << 13)/* Match only directories.  */
-# define GLOB_TILDE_CHECK (1 << 14)/* Like GLOB_TILDE but return an error
-                                     if the user name is not available.  */
-# define __GLOB_FLAGS  (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
-                        GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
-                        GLOB_PERIOD|GLOB_ALTDIRFUNC|GLOB_BRACE|     \
-                        GLOB_NOMAGIC|GLOB_TILDE|GLOB_ONLYDIR|GLOB_TILDE_CHECK)
-#else
-# define __GLOB_FLAGS  (GLOB_ERR|GLOB_MARK|GLOB_NOSORT|GLOB_DOOFFS| \
-                        GLOB_NOESCAPE|GLOB_NOCHECK|GLOB_APPEND|     \
-                        GLOB_PERIOD)
-#endif
-
-/* Error returns from `glob'.  */
-#define        GLOB_NOSPACE    1       /* Ran out of memory.  */
-#define        GLOB_ABORTED    2       /* Read error.  */
-#define        GLOB_NOMATCH    3       /* No matches found.  */
-#define GLOB_NOSYS     4       /* Not implemented.  */
-#ifdef __USE_GNU
-/* Previous versions of this file defined GLOB_ABEND instead of
-   GLOB_ABORTED.  Provide a compatibility definition here.  */
-# define GLOB_ABEND GLOB_ABORTED
-#endif
-
-/* Structure describing a globbing run.  */
-#ifdef __USE_GNU
-struct stat;
-#endif
-typedef struct
-  {
-    size_t gl_pathc;           /* Count of paths matched by the pattern.  */
-    char **gl_pathv;           /* List of matched pathnames.  */
-    size_t gl_offs;            /* Slots to reserve in `gl_pathv'.  */
-    int gl_flags;              /* Set to FLAGS, maybe | GLOB_MAGCHAR.  */
-
-    /* If the GLOB_ALTDIRFUNC flag is set, the following functions
-       are used instead of the normal file access functions.  */
-    void (*gl_closedir) (void *);
-#ifdef __USE_GNU
-    struct dirent *(*gl_readdir) (void *);
-#else
-    void *(*gl_readdir) (void *);
-#endif
-    void *(*gl_opendir) (const char *);
-#ifdef __USE_GNU
-    int (*gl_lstat) (const char *__restrict, struct stat *__restrict);
-    int (*gl_stat) (const char *__restrict, struct stat *__restrict);
-#else
-    int (*gl_lstat) (const char *__restrict, void *__restrict);
-    int (*gl_stat) (const char *__restrict, void *__restrict);
-#endif
-  } glob_t;
-
-#ifdef __USE_LARGEFILE64
-# ifdef __USE_GNU
-struct stat64;
-# endif
-typedef struct
-  {
-    __size_t gl_pathc;
-    char **gl_pathv;
-    __size_t gl_offs;
-    int gl_flags;
-
-    /* If the GLOB_ALTDIRFUNC flag is set, the following functions
-       are used instead of the normal file access functions.  */
-    void (*gl_closedir) (void *);
-# ifdef __USE_GNU
-    struct dirent64 *(*gl_readdir) (void *);
-# else
-    void *(*gl_readdir) (void *);
-# endif
-    void *(*gl_opendir) (__const char *);
-# ifdef __USE_GNU
-    int (*gl_lstat) (__const char *__restrict, struct stat64 *__restrict);
-    int (*gl_stat) (__const char *__restrict, struct stat64 *__restrict);
-# else
-    int (*gl_lstat) (__const char *__restrict, void *__restrict);
-    int (*gl_stat) (__const char *__restrict, void *__restrict);
-# endif
-  } glob64_t;
-#endif
-
-int glob (const char * __pattern, int __flags,
-                int (*__errfunc) (const char *, int),
-                glob_t * __pglob);
-void globfree(glob_t *__pglog);
-
-#endif /* !__KERNEL__ */
-
-/*
- *  module routines
- */
-
-static inline void __module_get(struct module *module)
-{
-}
-
-static inline int try_module_get(struct module *module)
-{
-       return 1;
-}
-
-static inline void module_put(struct module *module)
-{
-}
-
-/*
- *  sigset_t routines 
- */
-
-#define sigaddset(what,sig) (*(what) |= (1<<(sig)), 0)
-#define sigdelset(what,sig) (*(what) &= ~(1<<(sig)), 0)
-#define sigemptyset(what)   (*(what) = 0, 0)
-#define sigfillset(what)    (*(what) = ~(0), 0)
-#define sigismember(what,sig) (((*(what)) & (1<<(sig))) != 0)
-
-static __inline int
-sigprocmask(int sig, sigset_t *w1, sigset_t *w2) {
-    return 0;
-}
-static __inline int
-sigpending(sigset_t *what) {
-    return 0;
-}
-
-/*
- * common inode flags (user & kernel)
- */
-
-#define S_ISLNK(m)     (((m) & S_IFMT) == S_IFLNK)
-#define S_ISREG(m)     (((m) & S_IFMT) == S_IFREG)
-#define S_ISDIR(m)     (((m) & S_IFMT) == S_IFDIR)
-#define S_ISCHR(m)     (((m) & S_IFMT) == S_IFCHR)
-#define S_ISBLK(m)     (((m) & S_IFMT) == S_IFBLK)
-#define S_ISFIFO(m)    (((m) & S_IFMT) == S_IFIFO)
-#define S_ISSOCK(m)    (((m) & S_IFMT) == S_IFSOCK)
-
-#define S_IRWXU 00700
-#define S_IRUSR 00400
-#define S_IWUSR 00200
-#define S_IXUSR 00100
-
-#define S_IRWXG 00070
-#define S_IRGRP 00040
-#define S_IWGRP 00020
-#define S_IXGRP 00010
-
-#define S_IRWXO 00007
-#define S_IROTH 00004
-#define S_IWOTH 00002
-#define S_IXOTH 00001
-
-#define S_IRWXUGO   (S_IRWXU|S_IRWXG|S_IRWXO)
-#define S_IALLUGO   (S_ISUID|S_ISGID|S_ISVTX|S_IRWXUGO)
-#define S_IRUGO     (S_IRUSR|S_IRGRP|S_IROTH)
-#define S_IWUGO     (S_IWUSR|S_IWGRP|S_IWOTH)
-#define S_IXUGO     (S_IXUSR|S_IXGRP|S_IXOTH)
-
-
-/*
- *  linux ioctl coding definitions
- */
-#define _IOC_NRBITS 8
-#define _IOC_TYPEBITS   8
-#define _IOC_SIZEBITS   14
-#define _IOC_DIRBITS    2
-
-#define _IOC_NRMASK     ((1 << _IOC_NRBITS)-1)
-#define _IOC_TYPEMASK   ((1 << _IOC_TYPEBITS)-1)
-#define _IOC_SIZEMASK   ((1 << _IOC_SIZEBITS)-1)
-#define _IOC_DIRMASK    ((1 << _IOC_DIRBITS)-1)
-
-#define _IOC_NRSHIFT    0
-#define _IOC_TYPESHIFT  (_IOC_NRSHIFT+_IOC_NRBITS)
-#define _IOC_SIZESHIFT  (_IOC_TYPESHIFT+_IOC_TYPEBITS)
-#define _IOC_DIRSHIFT   (_IOC_SIZESHIFT+_IOC_SIZEBITS)
-
-/*
- * Direction bits.
- */
-#define _IOC_NONE   0U
-#define _IOC_WRITE  1U
-#define _IOC_READ   2U
-
-#define _IOC(dir,type,nr,size) \
-    (((dir)  << _IOC_DIRSHIFT) | \
-     ((type) << _IOC_TYPESHIFT) | \
-     ((nr)   << _IOC_NRSHIFT) | \
-     ((size) << _IOC_SIZESHIFT))
-
-/* used to create numbers */
-#define _IO(type,nr)      _IOC(_IOC_NONE,(type),(nr),0)
-#define _IOR(type,nr,size)    _IOC(_IOC_READ,(type),(nr),sizeof(size))
-#define _IOW(type,nr,size)    _IOC(_IOC_WRITE,(type),(nr),sizeof(size))
-#define _IOWR(type,nr,size) _IOC(_IOC_READ|_IOC_WRITE,(type),(nr),sizeof(size))
-
-/* used to decode ioctl numbers.. */
-#define _IOC_DIR(nr)        (((nr) >> _IOC_DIRSHIFT) & _IOC_DIRMASK)
-#define _IOC_TYPE(nr)       (((nr) >> _IOC_TYPESHIFT) & _IOC_TYPEMASK)
-#define _IOC_NR(nr)         (((nr) >> _IOC_NRSHIFT) & _IOC_NRMASK)
-#define _IOC_SIZE(nr)       (((nr) >> _IOC_SIZESHIFT) & _IOC_SIZEMASK)
-
-/* i/o vector sgructure ... */
-struct iovec {
-    void *iov_base;
-    size_t iov_len;
-};
-
-/* idr support routines */
-struct idr_context *cfs_idr_init();
-int cfs_idr_remove(struct idr_context *idp, int id);
-int cfs_idr_get_new(struct idr_context *idp, void *ptr);
-int cfs_idr_get_new_above(struct idr_context *idp, void *ptr, int starting_id);
-void *cfs_idr_find(struct idr_context *idp, int id);
-void cfs_idr_exit(struct idr_context *idp);
-
-/* runtime time routines for both kenrel and user mode */
-extern int cfs_isalpha(int);
-extern int cfs_isspace(int);
-extern int cfs_isupper(int);
-extern int cfs_isdigit(int);
-extern int cfs_isxdigit(int);
-
-#define ULONG_LONG_MAX ((__u64)(0xFFFFFFFFFFFFFFFF))
-/*
- * Convert a string to an unsigned long long integer.
- *
- * Ignores `locale' stuff.  Assumes that the upper and lower case
- * alphabets and digits are each contiguous.
- */
-__u64 strtoull(char *nptr, char **endptr,int base);
-
-/*
- *  getopt routines
- */
-
-/* For communication from `getopt' to the caller.
-   When `getopt' finds an option that takes an argument,
-   the argument value is returned here.
-   Also, when `ordering' is RETURN_IN_ORDER,
-   each non-option ARGV-element is returned here.  */
-
-extern char *optarg;
-
-/* Index in ARGV of the next element to be scanned.
-   This is used for communication to and from the caller
-   and for communication between successive calls to `getopt'.
-
-   On entry to `getopt', zero means this is the first call; initialize.
-
-   When `getopt' returns -1, this is the index of the first of the
-   non-option elements that the caller should itself scan.
-
-   Otherwise, `optind' communicates from one call to the next
-   how much of ARGV has been scanned so far.  */
-
-extern int optind;
-
-/* Callers store zero here to inhibit the error message `getopt' prints
-   for unrecognized options.  */
-
-extern int opterr;
-
-/* Set to an option character which was unrecognized.  */
-
-extern int optopt;
-
-
-struct option
-{
-  const char *name;
-  /* has_arg can't be an enum because some compilers complain about
-     type mismatches in all the code that assumes it is an int.  */
-  int has_arg;
-  int *flag;
-  int val;
-};
-
-/* Names for the values of the `has_arg' field of `struct option'.  */
-# define no_argument           0
-# define required_argument     1
-# define optional_argument     2
-
-extern int getopt(int ___argc, char *const *___argv, const char *__shortopts);
-extern int getopt_long (int ___argc, char *const *___argv,
-                       const char *__shortopts,
-                       const struct option *__longopts, int *__longind);
-extern int getopt_long_only (int ___argc, char *const *___argv,
-                            const char *__shortopts,
-                            const struct option *__longopts, int *__longind);
-
-extern char *strcasestr (const char *phaystack, const char *pneedle);
-
-/*
- * global environment runtime routine
- */
-
-static __inline char * __cdecl cfs_getenv(const char *ENV) {return NULL;}
-static __inline void   __cdecl set_getenv(const char *ENV, const char *value, int overwrite) {}
-
-int setenv(const char *envname, const char *envval, int overwrite);
-
-typedef struct utsname {
-         char sysname[64];
-         char nodename[64];
-         char release[128];
-         char version[128];
-         char machine[64];
-};
-
-int uname(struct utsname *uts);
-
-#endif
diff --git a/libcfs/include/libcfs/winnt/winnt-tcpip.h b/libcfs/include/libcfs/winnt/winnt-tcpip.h
deleted file mode 100644 (file)
index 16953de..0000000
+++ /dev/null
@@ -1,737 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#ifndef __LIBCFS_WINNT_TCPIP_H__
-#define __LIBCFS_WINNT_TCPIP_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-
-#ifdef __KERNEL__
-
-//
-//  ks definitions
-//
-
-// iovec is defined in libcfs: winnt_prim.h
-// lnetkiov_t is defined in lnet/types.h
-
-typedef struct socket ks_tconn_t, cfs_socket_t;
-
-// completion notification callback routine
-
-typedef VOID (*ks_schedule_cb)(struct socket*, int);
-
-#define SOCK_TEST_NOSPACE(s)   (1)
-
-//
-// tdinal definitions
-//
-
-
-#if DBG
-#define KsPrint(X)     KsPrintf X
-#else
-#define KsPrint(X)
-#endif
-
-
-//
-// Socket Addresses Related ...
-//
-
-#define     INADDR_ANY          (ULONG)0x00000000
-#define     INADDR_LOOPBACK     (ULONG)0x7f000001
-#define     INADDR_BROADCAST    (ULONG)0xffffffff
-#define     INADDR_NONE         (ULONG)0xffffffff
-
-/*
- *  TCP / IP options
- */
-
-#define     SOL_TCP             6
-#define     SOL_UD              17
-
-
-#define TL_INSTANCE             0
-
-#define TCP_SOCKET_NODELAY      1 //  disabling "Nagle"
-#define TCP_SOCKET_KEEPALIVE    2
-#define TCP_SOCKET_OOBINLINE    3
-#define TCP_SOCKET_BSDURGENT    4
-#define TCP_SOCKET_ATMARK       5
-#define TCP_SOCKET_WINDOW       6
-
-
-/* Flags we can use with send/ and recv.
-   Added those for 1003.1g not all are supported yet
- */
-
-#define MSG_OOB         1
-#define MSG_PEEK        2
-#define MSG_DONTROUTE   4
-#define MSG_TRYHARD     4       /* Synonym for MSG_DONTROUTE for DECnet */
-#define MSG_CTRUNC      8
-#define MSG_PROBE       0x10   /* Do not send. Only probe path f.e. for MTU */
-#define MSG_TRUNC       0x20
-#define MSG_DONTWAIT    0x40   /* Nonblocking io                */
-#define MSG_EOR         0x80   /* End of record */
-#define MSG_WAITALL     0x100  /* Wait for a full request */
-#define MSG_FIN         0x200
-#define MSG_SYN                0x400
-#define MSG_CONFIRM     0x800  /* Confirm path validity */
-#define MSG_RST         0x1000
-#define MSG_ERRQUEUE    0x2000 /* Fetch message from error queue */
-#define MSG_NOSIGNAL    0x4000 /* Do not generate SIGPIPE */
-#define MSG_MORE        0x8000 /* Sender will send more */
-
-#define MSG_EOF         MSG_FIN
-
-
-//
-// Maximum TRANSPORT_ADDRESS Length
-//
-// it must >= FIELD_OFFSET(TRANSPORT_ADDRESS, Address->Address)
-//            + TDI_ADDRESS_LENGTH_IP
-//
-// I define it a little large and 16 bytes aligned to avoid possible overflow.
-//
-
-#define MAX_ADDRESS_LENGTH              (0x30)
-
-
-//
-// Maximum Listers Children Sockets
-//
-
-#define MAX_CHILD_LISTENERS             (4)
-
-//
-// Maximum EA Information Length
-//
-
-#define EA_MAX_LENGTH                   ( sizeof(FILE_FULL_EA_INFORMATION) - 1 + \
-                                          TDI_TRANSPORT_ADDRESS_LENGTH + 1 + \
-                                          MAX_ADDRESS_LENGTH )
-
-
-#define UDP_DEVICE_NAME L"\\Device\\Udp"
-#define TCP_DEVICE_NAME L"\\Device\\Tcp"
-
-
-/*
- * TSDU definitions
- */
-
-#define TDINAL_TSDU_DEFAULT_SIZE  (0x10000)
-
-#define KS_TSDU_MAGIC       'KSTD'
-
-#define KS_TSDU_ATTACHED    0x00000001  // Attached to the socket receive tsdu list
-
-typedef struct _KS_TSDU {
-
-    ULONG              Magic;          /* magic */
-    ULONG              Flags;          /* flags */
-
-    struct list_head   Link;           /* link list */
-
-    ULONG              TotalLength;    /* total size of KS_TSDU */
-    ULONG              StartOffset;    /* offset of the first Tsdu unit */
-    ULONG              LastOffset;     /* end offset of the last Tsdu unit */
-
-/*
-    union {
-        KS_TSDU_DAT[];
-        KS_TSDU_BUF[];
-        KS_TSDU_MDL[];
-    }
-*/
-
-} KS_TSDU, *PKS_TSDU;
-
-#define TSDU_TYPE_BUF   ((USHORT)0x5401)
-#define TSDU_TYPE_DAT   ((USHORT)0x5402)
-#define TSDU_TYPE_MDL   ((USHORT)0x5403)
-
-#define KS_TSDU_COMM_PARTIAL         0x0001
-
-typedef struct _KS_TSDU_BUF {
-
-    USHORT              TsduType;
-    USHORT              TsduFlags;
-
-    ULONG               DataLength;
-    ULONG               StartOffset;
-
-    PVOID               UserBuffer;
-    PMDL                Mdl;         /* mdl */
-} KS_TSDU_BUF, *PKS_TSDU_BUF;
-
-typedef struct _KS_TSDU_DAT {
-
-    USHORT              TsduType;
-    USHORT              TsduFlags;
-
-    ULONG               DataLength;
-    ULONG               StartOffset;
-
-    ULONG               TotalLength;
-    PMDL                Mdl;        /* mdl */
-
-    UCHAR               Data[0];
-
-} KS_TSDU_DAT, *PKS_TSDU_DAT;
-
-#define KS_QWORD_ALIGN(x)      (((x) + 0x07) & 0xFFFFFFF8)
-#define KS_TSDU_STRU_SIZE(Len) (KS_QWORD_ALIGN((Len) + FIELD_OFFSET(KS_TSDU_DAT, Data[0])))
-
-typedef struct _KS_TSDU_MDL {
-    USHORT              TsduType;      /* TSDU_TYPE_MDL */
-    USHORT              TsduFlags;     /* */
-
-    ULONG               DataLength;    /* total valid data length */
-    ULONG               BaseOffset;    /* payload offset in Tsdu */
-    ULONG               StartOffset;   /* offset in payload */
-
-    PVOID               Descriptor;    /* tdi descriptor for receiving */
-    PMDL                Mdl;
-} KS_TSDU_MDL, *PKS_TSDU_MDL;
-
-typedef struct ks_engine_mgr {
-       spinlock_t       lock;
-       int              stop;
-       event_t          exit;
-       event_t          start;
-       struct list_head list;
-} ks_engine_mgr_t;
-
-typedef struct ks_engine_slot {
-    ks_tconn_t         *tconn;
-    void               *tsdumgr;
-    struct list_head   link;
-    int                        queued;
-    ks_engine_mgr_t    *emgr;
-} ks_engine_slot_t;
-
-typedef struct _KS_TSDUMGR {
-       struct list_head        TsduList;
-       ULONG                   NumOfTsdu;
-       ULONG                   TotalBytes;
-       KEVENT                  Event;
-       spinlock_t              Lock;
-       ks_engine_slot_t        Slot;
-       ULONG                   Payload;
-       int                     Busy:1;
-       int                     OOB:1;
-} KS_TSDUMGR, *PKS_TSDUMGR;
-
-#define ks_lock_tsdumgr(mgr)   spin_lock(&((mgr)->Lock))
-#define ks_unlock_tsdumgr(mgr) spin_unlock(&((mgr)->Lock))
-
-typedef struct _KS_CHAIN {
-    KS_TSDUMGR          Normal;      /* normal queue */
-    KS_TSDUMGR          Expedited;   /* OOB/expedited queue */
-} KS_CHAIN, *PKS_CHAIN;
-
-
-#define KS_CAN_SCHED(TM) ((TM)->TotalBytes >= ((TM)->Payload >> 2))
-
-//
-// Handler Settings Indictor 
-//
-
-#define TDI_EVENT_MAXIMUM_HANDLER (TDI_EVENT_ERROR_EX + 1)
-
-
-typedef struct _KS_EVENT_HANDLERS {
-    BOOLEAN     IsActive[TDI_EVENT_MAXIMUM_HANDLER];
-    PVOID       Handler [TDI_EVENT_MAXIMUM_HANDLER];
-} KS_EVENT_HANDLERS, *PKS_EVENT_HANDLERS;
-
-#define SetEventHandler(ha, ht, hr) do {        \
-            ha.IsActive[ht] = TRUE;             \
-            ha.Handler[ht] = (PVOID) (hr);      \
-        } while(0)
-
-//
-// KSock Internal Structures
-//
-
-typedef struct _KS_ADDRESS {
-
-    union {
-        TRANSPORT_ADDRESS   Tdi;
-        UCHAR               Pading[MAX_ADDRESS_LENGTH];
-    };
-
-    HANDLE                  Handle;
-    PFILE_OBJECT            FileObject;
-
-} KS_ADDRESS, *PKS_ADDRESS;
-
-//
-// Structures for Disconnect Workitem
-//
-
-typedef struct _KS_DISCONNECT_WORKITEM {
-
-    WORK_QUEUE_ITEM         WorkItem;       // Workitem to perform disconnection
-    ks_tconn_t *            tconn;          // tdi connecton
-    ULONG                   Flags;          // connection broken/discnnection flags
-    KEVENT                  Event;          // sync event
-
-} KS_DISCONNECT_WORKITEM, *PKS_DISCONNECT_WORKITEM;
-
-
-typedef struct _KS_CONNECTION {
-
-    HANDLE                      Handle;     // Handle of the tdi connection
-    PFILE_OBJECT                FileObject; // FileObject if the conn object
-
-    PTRANSPORT_ADDRESS          Remote;     // the ConnectionInfo of this connection
-    PTDI_CONNECTION_INFORMATION ConnectionInfo;
-
-    ULONG                       nagle;      // Tcp options 
-
-} KS_CONNECTION, *PKS_CONNECTION;
-
-
-//
-// type definitions
-//
-
-typedef MDL                         ks_mdl_t;
-typedef UNICODE_STRING              ks_unicode_name_t;
-typedef WORK_QUEUE_ITEM             ks_workitem_t;
-
-
-typedef KS_CHAIN                    ks_chain_t;
-typedef KS_ADDRESS                  ks_tdi_addr_t;
-typedef KS_CONNECTION               ks_tconn_info_t;
-typedef KS_DISCONNECT_WORKITEM      ks_disconnect_t;
-
-
-//
-// Structures for transmission done Workitem
-//
-
-typedef struct ks_backlogs {
-       struct list_head        list;   /* list to link the backlog connections */
-       int                     num;    /* number of backlogs in the list */
-} ks_backlogs_t;
-
-
-typedef struct ks_daemon {
-    ks_tconn_t         *tconn;         /* the listener connection object */
-    unsigned short     nbacklogs;      /* number of listening backlog conns */
-    unsigned short     port;           /* listening port number */
-    int                        shutdown;       /* daemon threads is to exit */
-    struct list_head   list;           /* to be attached into ks_nal_data_t */
-
-} ks_daemon_t;
-
-typedef enum {
-
-    kstt_sender = 0,    // normal sending connection type, it's active connection, while
-                        // child tconn is for passive connection.
-
-    kstt_listener,      // listener daemon type, it just acts as a daemon, and it does
-                        // not have real connection. It manages children tcons to accept
-                        // or refuse the connecting request from remote peers.
-
-    kstt_child,         // accepted child connection type, it's parent must be Listener
-
-    kstt_lasttype
-
-} ks_tconn_type_t;
-
-typedef enum {
-
-    ksts_uninited = 0, // tconn is just allocated (zero values), not initialized yet
-
-    ksts_inited,        // tconn structure initialized: so it now can be identified as
-                        // a sender, listener or a child
-
-    ksts_bind,          // tconn is bound: the local address object (ip/port) is created.
-                        // after being bound, we must call ksocknal_put_tconn to release
-                        // the tconn objects, it's not safe just to free the memory of tconn.
-
-    ksts_associated,    // the connection object is created and associated with the address
-                        // object. so it's ready for connection. only for child and sender.
-
-    ksts_connecting,    // only used by child tconn: in the ConnectEvent handler routine,
-                        // it indicts the child tconn is busy to be connected to the peer.
-
-    ksts_connected,     // the connection is built already: for sender and child
-
-    ksts_listening,     // listener daemon is working, only for listener tconn
-
-    ksts_disconnected,  // disconnected by user
-    ksts_aborted,       // un-exptected broken status
-
-    ksts_last           // total number of tconn statuses
-
-} ks_tconn_state_t;
-
-#define KS_TCONN_MAGIC              'KSTM'
-
-#define KS_TCONN_HANDLERS_SET       0x00000001  // Conection handlers are set.
-#define KS_TCONN_DISCONNECT_BUSY    0x00010000  // Disconnect Workitem is queued ...
-#define KS_TCONN_DESTROY_BUSY       0x00020000  // Destory Workitem is queued ...
-
-#define KS_TCONN_DAEMON_STARTED     0x00100000  // indict the daemon is started,
-                                                // only valid for listener
-struct socket {
-
-        ulong                       kstc_magic;      /* Magic & Flags */
-        ulong                       kstc_flags;
-
-       spinlock_t                  kstc_lock;       /* serialise lock*/
-        void *                      kstc_conn;       /* ks_conn_t */
-
-        ks_tconn_type_t             kstc_type;          /* tdi connection Type */
-        ks_tconn_state_t            kstc_state;      /* tdi connection state flag */
-
-       ks_unicode_name_t           kstc_dev;        /* tcp transport device name */
-
-       ks_tdi_addr_t               kstc_addr;       /* local address handlers / Objects */
-
-       atomic_t                    kstc_refcount;   /* reference count of ks_tconn_t */
-
-       struct list_head        kstc_list;      /* linked to global ksocknal_data */
-
-        union {
-
-            struct {
-                int                 nbacklog;         /* total number of backlog tdi connections */
-                ks_backlogs_t       kstc_listening;   /* listeing backlog child connections */
-                ks_backlogs_t       kstc_accepted;    /* connected backlog child connections */
-                event_t             kstc_accept_event;   /* Signaled by AcceptedHander, 
-                                                            ksocknal_wait_accpeted_conns waits on */
-                event_t             kstc_destroy_event;  /* Signaled when accepted child is released */
-            } listener; 
-
-            struct  {
-                ks_tconn_info_t       kstc_info;      /* Connection Info if Connected */
-                ks_chain_t            kstc_recv;      /* tsdu engine for data receiving */
-                ks_chain_t            kstc_send;      /* tsdu engine for data sending */
-
-                int                   kstc_queued;    /* Attached to Parent->ChildList ... */
-                int                   kstc_queueno;   /* 0: Attached to Listening list 
-                                                       1: Attached to Accepted list */
-
-                int                   kstc_busy;      /* referred by ConnectEventCallback ? */
-                int                   kstc_accepted;  /* the connection is built ready ? */
-
-               struct list_head        kstc_link;      /* linked to parent tdi connection */
-               ks_tconn_t              *kstc_parent;   /* pointers to it's listener parent */
-           } child;
-
-            struct {
-                ks_tconn_info_t     kstc_info;      /* Connection Info if Connected */
-                ks_chain_t          kstc_recv;      /* tsdu engine for data receiving */
-                ks_chain_t          kstc_send;      /* tsdu engine for data sending */
-            } sender; 
-        };
-
-        ulong                       kstc_snd_wnd;   /* Sending window size */
-        ulong                       kstc_rcv_wnd;   /* Recving window size */
-
-        ks_workitem_t               kstc_destroy;    /* tconn destruction workitem */
-        ks_disconnect_t             kstc_disconnect; /* connection disconnect workitem */
-
-        ks_schedule_cb              kstc_sched_cb;   /* notification callback routine of completion */
-};
-
-static inline int
-libcfs_sock_error(struct socket *sock)
-{
-        return (sock->kstc_state >= ksts_disconnected) ? ECONNRESET : 0;
-}
-
-
-static inline int
-libcfs_sock_wmem_queued(struct socket *sock)
-{
-        return 0;
-}
-
-#define TDINAL_WINDOW_DEFAULT_SIZE  (0x100000)
-#define TDINAL_MAX_TSDU_QUEUE_SIZE  (0x200000)
-
-struct _KS_UDP_COMPLETION_CONTEXT;
-struct _KS_TCP_COMPLETION_CONTEXT;
-
-
-typedef
-NTSTATUS
-(*PKS_UDP_COMPLETION_ROUTINE) (
-    IN PIRP     Irp,
-    IN struct _KS_UDP_COMPLETION_CONTEXT
-                *UdpContext
-    );
-
-
-typedef
-NTSTATUS
-(*PKS_TCP_COMPLETION_ROUTINE) (
-    IN PIRP     Irp,
-    IN struct _KS_TCP_COMPLETION_CONTEXT
-                *TcpContext
-    );
-
-//
-// Udp Irp Completion Context
-//
-
-typedef struct _KS_UDP_COMPLETION_CONTEXT {
-
-    PKEVENT                             Event;
-    union {
-        PFILE_OBJECT                    AddressObject;
-        ks_tconn_t *                    tconn;
-    };
-
-    PKS_UDP_COMPLETION_ROUTINE          CompletionRoutine;
-    PVOID                               CompletionContext;
-
-} KS_UDP_COMPLETION_CONTEXT, *PKS_UDP_COMPLETION_CONTEXT;
-
-
-//
-// Tcp Irp Completion Context (used by tcp data recv/send)
-//
-
-#define KS_TCP_CONTEXT_MAGIC 'CCTK'
-
-typedef struct _KS_TCP_COMPLETION_CONTEXT {
-    PKEVENT                             Event;      // Event to be waited on by Irp caller ...
-    ks_tconn_t *                        tconn;      // the tdi connection
-    PKS_TCP_COMPLETION_ROUTINE          CompletionRoutine;
-    PVOID                               CompletionContext;
-    PKS_TSDUMGR                         TsduMgr;    // Tsdu buffer manager
-    ULONG                               Length;     // Payload length in KsTsdu queue
-    PCHAR                               Buffer;     // User allocated buffer
-    ULONG                               Magic;      // Magic key
-} KS_TCP_COMPLETION_CONTEXT, *PKS_TCP_COMPLETION_CONTEXT;
-
-typedef KS_TCP_COMPLETION_CONTEXT  ks_tdi_tx_t, ks_tdi_rx_t;
-
-
-/*
- * tdi extensions
- */
-
-#define IOCTL_TCP_QUERY_INFORMATION_EX        \
-                        CTL_CODE(FILE_DEVICE_NETWORK, 0, METHOD_NEITHER, FILE_ANY_ACCESS)
-#define IOCTL_TCP_SET_INFORMATION_EX        \
-                        CTL_CODE(FILE_DEVICE_NETWORK, 1, METHOD_BUFFERED, FILE_WRITE_ACCESS)
-
-
-#define TcpBuildSetInformationEx(Irp, DevObj, FileObj, CompRoutine, Contxt, Buffer, BufferLen)\
-    {                                                                        \
-        PIO_STACK_LOCATION _IRPSP;                                           \
-        if ( CompRoutine != NULL) {                                          \
-            IoSetCompletionRoutine( Irp, CompRoutine, Contxt, TRUE, TRUE, TRUE);\
-        } else {                                                             \
-            IoSetCompletionRoutine( Irp, NULL, NULL, FALSE, FALSE, FALSE);   \
-        }                                                                    \
-        _IRPSP = IoGetNextIrpStackLocation (Irp);                            \
-        _IRPSP->MajorFunction = IRP_MJ_DEVICE_CONTROL;                       \
-        _IRPSP->DeviceObject = DevObj;                                       \
-        _IRPSP->FileObject = FileObj;                                        \
-        _IRPSP->Parameters.DeviceIoControl.OutputBufferLength = 0;           \
-        _IRPSP->Parameters.DeviceIoControl.InputBufferLength = BufferLen;    \
-        _IRPSP->Parameters.DeviceIoControl.IoControlCode = IOCTL_TCP_SET_INFORMATION_EX;  \
-        Irp->AssociatedIrp.SystemBuffer = Buffer;                            \
-    }
-
-
-#define TcpBuildQueryInformationEx(Irp, DevObj, FileObj, CompRoutine, Contxt, InBuffer, InLength, OutBuffer, OutLength)\
-    {                                                                        \
-        PIO_STACK_LOCATION _IRPSP;                                           \
-        if ( CompRoutine != NULL) {                                          \
-            IoSetCompletionRoutine( Irp, CompRoutine, Contxt, TRUE, TRUE, TRUE);\
-        } else {                                                             \
-            IoSetCompletionRoutine( Irp, NULL, NULL, FALSE, FALSE, FALSE);   \
-        }                                                                    \
-        _IRPSP = IoGetNextIrpStackLocation (Irp);                            \
-        _IRPSP->MajorFunction = IRP_MJ_DEVICE_CONTROL;                       \
-        _IRPSP->DeviceObject = DevObj;                                       \
-        _IRPSP->FileObject = FileObj;                                        \
-        _IRPSP->Parameters.DeviceIoControl.OutputBufferLength = OutLength;           \
-        _IRPSP->Parameters.DeviceIoControl.InputBufferLength = InLength;    \
-        _IRPSP->Parameters.DeviceIoControl.IoControlCode = IOCTL_TCP_QUERY_INFORMATION_EX;  \
-        _IRPSP->Parameters.DeviceIoControl.Type3InputBuffer = InBuffer;    \
-        Irp->UserBuffer = OutBuffer;                            \
-    }
-
-typedef struct ks_addr_slot {
-    LIST_ENTRY      link;
-    int             up;
-    char            iface[40];
-    __u32           ip_addr;
-    __u32           netmask;
-    UNICODE_STRING  devname;
-    WCHAR           buffer[1];
-} ks_addr_slot_t;
-
-typedef struct {
-       /*
-        * Tdi client information
-        */
-
-       UNICODE_STRING  ksnd_client_name;       /* tdi client module name */
-       HANDLE          ksnd_pnp_handle;        /* the handle for pnp changes */
-
-       spinlock_t      ksnd_addrs_lock;        /* serialize ip address list */
-       LIST_ENTRY      ksnd_addrs_list;        /* list of the ip addresses */
-       int             ksnd_naddrs;            /* number of the ip addresses */
-
-       /*
-        *  Tdilnd internal defintions
-        */
-       int             ksnd_init;              /* initialisation state */
-
-       TDI_PROVIDER_INFO ksnd_provider;        /* tdi tcp/ip provider's information */
-
-       spinlock_t      ksnd_tconn_lock;        /* tdi connections access lock*/
-
-       int             ksnd_ntconns;           /* number of tconns in list */
-       struct list_head ksnd_tconns;   /* tdi connections list */
-       struct kmem_cache *ksnd_tconn_slab;     /* ks_tconn_t allocation slabs*/
-       event_t         ksnd_tconn_exit;        /* event signal by last tconn */
-
-       spinlock_t      ksnd_tsdu_lock;         /* tsdu access serialise */
-
-       int             ksnd_ntsdus;            /* number of tsdu buffers allocated */
-       ulong           ksnd_tsdu_size;         /* the size of a signel tsdu buffer */
-       struct kmem_cache *ksnd_tsdu_slab;      /* slab cache for tsdu buffer allocation */
-
-       int              ksnd_nfreetsdus;       /* number of tsdu buffers in the freed list */
-       struct list_head ksnd_freetsdus;        /* List of the freed Tsdu buffer. */
-
-       int             ksnd_engine_nums;       /* number of tcp sending engine threads */
-       ks_engine_mgr_t *ksnd_engine_mgr;       /* tcp sending engine structure */
-} ks_tdi_data_t;
-
-int
-ks_init_tdi_data();
-
-void
-ks_fini_tdi_data();
-
-
-int
-ks_query_local_ipaddr(
-    ks_tconn_t *     tconn
-    );
-
-void
-ks_get_tconn(
-    ks_tconn_t * tconn
-    );
-
-void
-ks_put_tconn(
-    ks_tconn_t * tconn
-    );
-
-void
-ks_abort_tconn(
-  ks_tconn_t *     tconn
-    );
-int
-ks_disconnect_tconn(
-    ks_tconn_t *    tconn,
-    ulong           flags
-    );
-
-void
-ks_destroy_tconn(
-    ks_tconn_t *     tconn
-    );
-
-NTSTATUS
-KsLockUserBuffer (
-    IN PVOID            UserBuffer,
-    IN BOOLEAN          bPaged,
-    IN ULONG            Length,
-    IN LOCK_OPERATION   Operation,
-    OUT PMDL *          pMdl
-    );
-
-VOID
-KsReleaseMdl (IN PMDL   Mdl,
-              IN int    Paged );
-
-void
-KsQueueTdiEngine(ks_tconn_t * tconn, PKS_TSDUMGR);
-
-void
-KsRemoveTdiEngine(PKS_TSDUMGR);
-
-NTSTATUS
-ks_set_tcp_option (
-    ks_tconn_t *    tconn,
-    ULONG           ID,
-    PVOID           OptionValue,
-    ULONG           Length
-    );
-
-int
-ks_get_tcp_option (
-    ks_tconn_t *        tconn,
-    ULONG               ID,
-    PVOID               OptionValue,
-    PULONG              Length
-    );
-
-#endif /* __KERNEL__ */
-#endif /* __LIBCFS_WINNT_TCPIP_H__ */
-
-/*
- * Local variables:
- * c-indentation-style: "K&R"
- * c-basic-offset: 8
- * tab-width: 8
- * fill-column: 80
- * scroll-step: 1
- * End:
- */
diff --git a/libcfs/include/libcfs/winnt/winnt-time.h b/libcfs/include/libcfs/winnt/winnt-time.h
deleted file mode 100644 (file)
index da9773f..0000000
+++ /dev/null
@@ -1,292 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-time.h
- *
- * Implementation of portable time API for Winnt (kernel and user-level).
- */
-
-#ifndef __LIBCFS_WINNT_LINUX_TIME_H__
-#define __LIBCFS_WINNT_LINUX_TIME_H__
-
-#ifndef __LIBCFS_LIBCFS_H__
-#error Do not #include this file directly. #include <libcfs/libcfs.h> instead
-#endif
-
-/* Portable time API */
-
-/*
- * Platform provides three opaque data-types:
- *
- *  cfs_time_t        represents point in time. This is internal kernel
- *                    time rather than "wall clock". This time bears no
- *                    relation to gettimeofday().
- *
- *  cfs_duration_t    represents time interval with resolution of internal
- *                    platform clock
- *
- *  cfs_fs_time_t     represents instance in world-visible time. This is
- *                    used in file-system time-stamps
- *
- *  cfs_time_t     cfs_time_current(void);
- *  cfs_time_t     cfs_time_add    (cfs_time_t, cfs_duration_t);
- *  cfs_duration_t cfs_time_sub    (cfs_time_t, cfs_time_t);
- *  int            cfs_time_before (cfs_time_t, cfs_time_t);
- *  int            cfs_time_beforeq(cfs_time_t, cfs_time_t);
- *
- *  cfs_duration_t cfs_duration_build(int64_t);
- *
- *  time_t         cfs_duration_sec (cfs_duration_t);
- *  void           cfs_duration_usec(cfs_duration_t, struct timeval *);
- *  void           cfs_duration_nsec(cfs_duration_t, struct timespec *);
- *
- *  void           cfs_fs_time_current(cfs_fs_time_t *);
- *  time_t         cfs_fs_time_sec    (cfs_fs_time_t *);
- *  void           cfs_fs_time_usec   (cfs_fs_time_t *, struct timeval *);
- *  void           cfs_fs_time_nsec   (cfs_fs_time_t *, struct timespec *);
- *  int            cfs_fs_time_before (cfs_fs_time_t *, cfs_fs_time_t *);
- *  int            cfs_fs_time_beforeq(cfs_fs_time_t *, cfs_fs_time_t *);
- *
- *  CFS_TIME_FORMAT
- *  CFS_DURATION_FORMAT
- *
- */
-
-struct timeval {
-    time_t      tv_sec;   /* seconds */
-    suseconds_t tv_usec;  /* microseconds */
-};
-
-typedef time_t cfs_time_t;
-typedef time_t cfs_duration_t;
-
-#ifdef __KERNEL__
-
-#include <libcfs/winnt/portals_compat25.h>
-
-#define HZ (100)
-
-struct timespec {
-    __u32   tv_sec;
-    __u32   tv_nsec;
-};
-typedef struct timeval cfs_fs_time_t;
-
-
-#define ONE_BILLION ((u_int64_t)1000000000)
-#define ONE_MILLION ((u_int64_t)   1000000)
-
-/*
- * Generic kernel stuff
- */
-
-#define jiffies     (ULONG_PTR)JIFFIES()
-#define cfs_jiffies (ULONG_PTR)JIFFIES()
-
-static inline void do_gettimeofday(struct timeval *tv)
-{
-    LARGE_INTEGER Time;
-
-    KeQuerySystemTime(&Time);
-
-    tv->tv_sec  = (time_t) (Time.QuadPart / 10000000);
-    tv->tv_usec = (suseconds_t) (Time.QuadPart % 10000000) / 10;
-}
-
-static inline LONGLONG JIFFIES()
-{
-    LARGE_INTEGER Tick;
-    LARGE_INTEGER Elapse;
-
-    KeQueryTickCount(&Tick);
-
-    Elapse.QuadPart  = Tick.QuadPart * KeQueryTimeIncrement();
-    Elapse.QuadPart /= (10000000 / HZ);
-
-    return Elapse.QuadPart;
-}
-
-static inline cfs_time_t cfs_time_current(void)
-{
-    return (cfs_time_t)JIFFIES();
-}
-
-static inline time_t cfs_time_current_sec(void)
-{
-    return (time_t)(JIFFIES() / HZ);
-}
-
-#define cfs_time_before(t1, t2) (((signed)(t1) - (signed)(t2)) < 0)
-#define cfs_time_beforeq(t1, t2) (((signed)(t1) - (signed)(t2)) <= 0)
-
-static inline void cfs_fs_time_current(cfs_fs_time_t *t)
-{
-    ULONG         Linux;
-    LARGE_INTEGER Sys;
-
-    KeQuerySystemTime(&Sys);
-
-    RtlTimeToSecondsSince1970(&Sys, &Linux);
-
-    t->tv_sec  = Linux;
-    t->tv_usec = (Sys.LowPart % 10000000) / 10;
-}
-
-static inline unsigned long get_seconds(void)
-{
-    cfs_fs_time_t t;
-    cfs_fs_time_current(&t);
-    return (unsigned long) t.tv_sec;
-}
-
-static inline cfs_time_t cfs_fs_time_sec(cfs_fs_time_t *t)
-{
-    return (cfs_time_t)t->tv_sec;
-}
-
-static inline unsigned long __cfs_fs_time_flat(cfs_fs_time_t *t)
-{
-    return (unsigned long)(t->tv_sec) * ONE_MILLION + t->tv_usec;
-}
-
-static inline int cfs_fs_time_before(cfs_fs_time_t *t1, cfs_fs_time_t *t2)
-{
-    return (__cfs_fs_time_flat(t1) < __cfs_fs_time_flat(t2));
-}
-
-static inline int cfs_fs_time_beforeq(cfs_fs_time_t *t1, cfs_fs_time_t *t2)
-{
-    return (__cfs_fs_time_flat(t1) <= __cfs_fs_time_flat(t2));
-}
-
-static inline cfs_duration_t cfs_time_seconds(cfs_duration_t seconds)
-{
-    return  (cfs_duration_t)(seconds * HZ);
-}
-
-static inline time_t cfs_duration_sec(cfs_duration_t d)
-{
-    return (time_t)(d / HZ);
-}
-
-static inline void cfs_duration_usec(cfs_duration_t d, struct timeval *s)
-{
-    s->tv_sec = (__u32)(d / HZ);
-    s->tv_usec = (__u32)((d - (cfs_duration_t)s->tv_sec * HZ) *
-                             ONE_MILLION / HZ);
-}
-
-static inline void cfs_duration_nsec(cfs_duration_t d, struct timespec *s)
-{
-    s->tv_sec = (__u32) (d / HZ);
-    s->tv_nsec = (__u32)((d - (cfs_duration_t)s->tv_sec * HZ) *
-                          ONE_BILLION / HZ);
-}
-
-static inline void cfs_fs_time_usec(cfs_fs_time_t *t, struct timeval *v)
-{
-    *v = *t;
-}
-
-static inline void cfs_fs_time_nsec(cfs_fs_time_t *t, struct timespec *s)
-{
-    s->tv_sec  = (__u32) t->tv_sec;
-    s->tv_nsec = (__u32) t->tv_usec * 1000;
-}
-
-
-#define cfs_time_current_64 JIFFIES
-
-static inline __u64 cfs_time_add_64(__u64 t, __u64 d)
-{
-    return t + d;
-}
-
-static inline __u64 cfs_time_shift_64(cfs_duration_t seconds)
-{
-    return cfs_time_add_64(cfs_time_current_64(),
-                           cfs_time_seconds(seconds));
-}
-
-static inline int cfs_time_before_64(__u64 t1, __u64 t2)
-{
-    return (__s64)t2 - (__s64)t1 > 0;
-}
-
-static inline int cfs_time_beforeq_64(__u64 t1, __u64 t2)
-{
-    return (__s64)t2 - (__s64)t1 >= 0;
-}
-
-/*
- * One jiffy
- */
-#define CFS_TICK                (1)
-#define LTIME_S(t)                     *((__u64 *)&(t))
-
-#define CFS_TIME_T              "%u"
-#define CFS_DURATION_T          "%d"
-
-#else   /* !__KERNEL__ */
-
-#include <time.h>
-#ifdef HAVE_LIBPTHREAD
-#include <pthread.h>
-#else
-struct timespec {
-    unsigned long tv_sec;
-    unsigned long tv_nsec;
-};
-#endif /* HAVE_LIBPTHREAD */
-
-#include "../user-time.h"
-
-/* liblustre. time(2) based implementation. */
-int nanosleep(const struct timespec *rqtp, struct timespec *rmtp);
-void sleep(int time);
-void do_gettimeofday(struct timeval *tv);
-int gettimeofday(struct timeval *tv, void * tz);
-
-#endif /* !__KERNEL__ */
-
-/* __LIBCFS_LINUX_LINUX_TIME_H__ */
-#endif
-/*
- * Local variables:
- * c-indentation-style: "K&R"
- * c-basic-offset: 8
- * tab-width: 8
- * fill-column: 80
- * scroll-step: 1
- * End:
- */
diff --git a/libcfs/include/libcfs/winnt/winnt-types.h b/libcfs/include/libcfs/winnt/winnt-types.h
deleted file mode 100644 (file)
index d83f025..0000000
+++ /dev/null
@@ -1,673 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/include/libcfs/winnt/winnt-types.h
- *
- * Basic types definitions
- */
-
-#ifndef _WINNT_TYPE_H
-#define _WINNT_TYPE_H
-
-#ifdef __KERNEL__
-
-#include <ntifs.h>
-#include <basetsd.h>
-#include <windef.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <stdarg.h>
-#include <tdi.h>
-#include <tdikrnl.h>
-#include <tdiinfo.h>
-
-#else
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <ntddk.h>
-#include <stdarg.h>
-#include <io.h>
-#include <time.h>
-#include <string.h>
-#include <assert.h>
-#endif
-
-
-#define __LITTLE_ENDIAN
-#define __user
-
-#define inline     __inline
-#define __inline__ __inline
-
-typedef unsigned __int8         __u8;
-typedef signed   __int8         __s8;
-
-typedef        signed   __int16        __s16;
-typedef        unsigned __int16        __u16;
-
-typedef        signed   __int32        __s32;
-typedef        unsigned __int32        __u32;
-
-typedef        signed   __int64        __s64;
-typedef        unsigned __int64        __u64;
-
-typedef unsigned long           ULONG;
-
-/* bsd */
-typedef unsigned char          u_char;
-typedef unsigned short         u_short;
-typedef unsigned int           u_int;
-typedef unsigned long          u_long;
-
-/* sysv */
-typedef unsigned char          unchar;
-typedef unsigned short         ushort;
-typedef unsigned int           uint;
-typedef unsigned long          ulong;
-
-#ifndef __BIT_TYPES_DEFINED__
-#define __BIT_TYPES_DEFINED__
-
-typedef                __u8            u_int8_t;
-typedef                __s8            int8_t;
-typedef                __u16           u_int16_t;
-typedef                __s16           int16_t;
-typedef                __u32           u_int32_t;
-typedef                __s32           int32_t;
-
-#define    u8           __u8
-#define    u16          __u16
-#define    u32          __u32
-#define    u64          __u64
-
-#endif /* !(__BIT_TYPES_DEFINED__) */
-
-typedef                __u8            uint8_t;
-typedef                __u16           uint16_t;
-typedef                __u32           uint32_t;
-
-typedef                __u64           uint64_t;
-typedef                __u64           u_int64_t;
-typedef                __s64           int64_t;
-
-typedef     long        ssize_t;
-
-typedef     __u32       suseconds_t;
-
-typedef     __u16       uid_t, gid_t;
-
-typedef     __u16       mode_t;
-typedef     __u16       umode_t;
-
-typedef     __u32       sigset_t;
-
-typedef int64_t         loff_t;
-typedef void *          cfs_handle_t;
-typedef uint64_t        cfs_cycles_t;
-
-#ifndef INVALID_HANDLE_VALUE
-#define INVALID_HANDLE_VALUE ((HANDLE)-1)
-#endif
-
-# define BITS_PER_LONG   (32)
-
-#if defined(_WIN64)
-typedef  __int64  long_ptr_t;
-typedef  unsigned __int64 ulong_ptr_t;
-#else
-typedef long long_ptr_t;
-typedef unsigned long ulong_ptr_t;
-#endif
-
-#ifdef __KERNEL__ /* kernel */
-
-typedef __u32           off_t;
-
-typedef __u32           pid_t;
-typedef __u32           tid_t;
-
-typedef __u32           ino_t;
-
-#define dma_addr_t      PVOID
-#define gfp_t           __u32
-
-/*
- *  Bytes order 
- */
-
-//
-// Byte order swapping routines
-//
-
-#if 0 && NTDDI_VERSION < 0x06000000
-
-USHORT
-FASTCALL
-RtlUshortByteSwap(
-    IN USHORT Source
-    );
-
-ULONG
-FASTCALL
-RtlUlongByteSwap(
-    IN ULONG Source
-    );
-
-ULONGLONG
-FASTCALL
-RtlUlonglongByteSwap(
-    IN ULONGLONG Source
-    );
-#endif
-
-#else  /* !__KERNEL__ */
-
-typedef int             BOOL;
-
-#ifndef _WINDOWS_
-typedef __u8            BYTE;
-typedef __u16           WORD;
-typedef __u32           DWORD;
-#endif
-
-#define __WORDSIZE 32
-typedef long            off_t;
-
-#endif /* __KERNEL__ */
-
-/*
- * Conastants suffix
- */
-
-#define ULL i64
-#define ull i64
-
-#define ___swab16(x) RtlUshortByteSwap(x)
-#define ___swab32(x) RtlUlongByteSwap(x)
-#define ___swab64(x) RtlUlonglongByteSwap(x)
-
-#define ___constant_swab16(x) \
-       ((__u16)( \
-               (((__u16)(x) & (__u16)0x00ffU) << 8) | \
-               (((__u16)(x) & (__u16)0xff00U) >> 8) ))
-
-#define ___constant_swab32(x) \
-       ((__u32)( \
-               (((__u32)(x) & (__u32)0x000000ffUL) << 24) | \
-               (((__u32)(x) & (__u32)0x0000ff00UL) <<  8) | \
-               (((__u32)(x) & (__u32)0x00ff0000UL) >>  8) | \
-               (((__u32)(x) & (__u32)0xff000000UL) >> 24) ))
-
-#define ___constant_swab64(x) \
-       ((__u64)( \
-               (__u64)(((__u64)(x) & (__u64)0x00000000000000ffUi64) << 56) | \
-               (__u64)(((__u64)(x) & (__u64)0x000000000000ff00Ui64) << 40) | \
-               (__u64)(((__u64)(x) & (__u64)0x0000000000ff0000Ui64) << 24) | \
-               (__u64)(((__u64)(x) & (__u64)0x00000000ff000000Ui64) <<  8) | \
-               (__u64)(((__u64)(x) & (__u64)0x000000ff00000000Ui64) >>  8) | \
-               (__u64)(((__u64)(x) & (__u64)0x0000ff0000000000Ui64) >> 24) | \
-               (__u64)(((__u64)(x) & (__u64)0x00ff000000000000Ui64) >> 40) | \
-               (__u64)(((__u64)(x) & (__u64)0xff00000000000000Ui64) >> 56) ))
-
-
-#define __swab16(x)  ___constant_swab16(x)
-#define __swab32(x)  ___constant_swab32(x)
-#define __swab64(x)  ___constant_swab64(x)
-
-#define __swab16s(x) do { *(x) = __swab16((USHORT)(*(x)));} while(0)
-#define __swab32s(x) do { *(x) = __swab32((ULONG)(*(x)));} while(0)
-#define __swab64s(x) do { *(x) = __swab64((ULONGLONG)(*(x)));} while(0)
-
-#define __constant_htonl(x) ___constant_swab32((x))
-#define __constant_ntohl(x) ___constant_swab32((x))
-#define __constant_htons(x) ___constant_swab16((x))
-#define __constant_ntohs(x) ___constant_swab16((x))
-#define __constant_cpu_to_le64(x) ((__u64)(x))
-#define __constant_le64_to_cpu(x) ((__u64)(x))
-#define __constant_cpu_to_le32(x) ((__u32)(x))
-#define __constant_le32_to_cpu(x) ((__u32)(x))
-#define __constant_cpu_to_le16(x) ((__u16)(x))
-#define __constant_le16_to_cpu(x) ((__u16)(x))
-#define __constant_cpu_to_be64(x) ___constant_swab64((x))
-#define __constant_be64_to_cpu(x) ___constant_swab64((x))
-#define __constant_cpu_to_be32(x) ___constant_swab32((x))
-#define __constant_be32_to_cpu(x) ___constant_swab32((x))
-#define __constant_cpu_to_be16(x) ___constant_swab16((x))
-#define __constant_be16_to_cpu(x) ___constant_swab16((x))
-#define __cpu_to_le64(x) ((__u64)(x))
-#define __le64_to_cpu(x) ((__u64)(x))
-#define __cpu_to_le32(x) ((__u32)(x))
-#define __le32_to_cpu(x) ((__u32)(x))
-#define __cpu_to_le16(x) ((__u16)(x))
-#define __le16_to_cpu(x) ((__u16)(x))
-#define __cpu_to_be64(x) __swab64((x))
-#define __be64_to_cpu(x) __swab64((x))
-#define __cpu_to_be32(x) __swab32((x))
-#define __be32_to_cpu(x) __swab32((x))
-#define __cpu_to_be16(x) __swab16((x))
-#define __be16_to_cpu(x) __swab16((x))
-#define __cpu_to_le64p(x) (*(__u64*)(x))
-#define __le64_to_cpup(x) (*(__u64*)(x))
-#define __cpu_to_le32p(x) (*(__u32*)(x))
-#define __le32_to_cpup(x) (*(__u32*)(x))
-#define __cpu_to_le16p(x) (*(__u16*)(x))
-#define __le16_to_cpup(x) (*(__u16*)(x))
-#define __cpu_to_be64p(x) __swab64p((x))
-#define __be64_to_cpup(x) __swab64p((x))
-#define __cpu_to_be32p(x) __swab32p((x))
-#define __be32_to_cpup(x) __swab32p((x))
-#define __cpu_to_be16p(x) __swab16p((x))
-#define __be16_to_cpup(x) __swab16p((x))
-#define __cpu_to_le64s(x) do {} while (0)
-#define __le64_to_cpus(x) do {} while (0)
-#define __cpu_to_le32s(x) do {} while (0)
-#define __le32_to_cpus(x) do {} while (0)
-#define __cpu_to_le16s(x) do {} while (0)
-#define __le16_to_cpus(x) do {} while (0)
-#define __cpu_to_be64s(x) __swab64s((x))
-#define __be64_to_cpus(x) __swab64s((x))
-#define __cpu_to_be32s(x) __swab32s((x))
-#define __be32_to_cpus(x) __swab32s((x))
-#define __cpu_to_be16s(x) __swab16s((x))
-#define __be16_to_cpus(x) __swab16s((x))
-
-#ifndef cpu_to_le64
-#define cpu_to_le64 __cpu_to_le64
-#define le64_to_cpu __le64_to_cpu
-#define cpu_to_le32 __cpu_to_le32
-#define le32_to_cpu __le32_to_cpu
-#define cpu_to_le16 __cpu_to_le16
-#define le16_to_cpu __le16_to_cpu
-#endif
-
-#define cpu_to_be64 __cpu_to_be64
-#define be64_to_cpu __be64_to_cpu
-#define cpu_to_be32 __cpu_to_be32
-#define be32_to_cpu __be32_to_cpu
-#define cpu_to_be16 __cpu_to_be16
-#define be16_to_cpu __be16_to_cpu
-#define cpu_to_le64p __cpu_to_le64p
-#define le64_to_cpup __le64_to_cpup
-#define cpu_to_le32p __cpu_to_le32p
-#define le32_to_cpup __le32_to_cpup
-#define cpu_to_le16p __cpu_to_le16p
-#define le16_to_cpup __le16_to_cpup
-#define cpu_to_be64p __cpu_to_be64p
-#define be64_to_cpup __be64_to_cpup
-#define cpu_to_be32p __cpu_to_be32p
-#define be32_to_cpup __be32_to_cpup
-#define cpu_to_be16p __cpu_to_be16p
-#define be16_to_cpup __be16_to_cpup
-#define cpu_to_le64s __cpu_to_le64s
-#define le64_to_cpus __le64_to_cpus
-#define cpu_to_le32s __cpu_to_le32s
-#define le32_to_cpus __le32_to_cpus
-#define cpu_to_le16s __cpu_to_le16s
-#define le16_to_cpus __le16_to_cpus
-#define cpu_to_be64s __cpu_to_be64s
-#define be64_to_cpus __be64_to_cpus
-#define cpu_to_be32s __cpu_to_be32s
-#define be32_to_cpus __be32_to_cpus
-#define cpu_to_be16s __cpu_to_be16s
-#define be16_to_cpus __be16_to_cpus
-
-
-//
-// Network to host byte swap functions
-//
-
-#define ntohl(x)           ( ( ( ( x ) & 0x000000ff ) << 24 ) | \
-                             ( ( ( x ) & 0x0000ff00 ) << 8 ) | \
-                             ( ( ( x ) & 0x00ff0000 ) >> 8 ) | \
-                             ( ( ( x ) & 0xff000000 ) >> 24 )   )
-
-#define ntohs(x)           ( ( ( ( x ) & 0xff00 ) >> 8 ) | \
-                             ( ( ( x ) & 0x00ff ) << 8 ) )
-
-
-#define htonl(x)           ntohl(x)
-#define htons(x)           ntohs(x)
-
-
-/*
- *  array must be used for array not pointer
- */
-#define ARRAY_SIZE(arr) (sizeof(arr) / sizeof((arr)[0]))
-
-#endif /* _WINNT_TYPES_H */
-
-#ifndef _I386_ERRNO_H
-#define _I386_ERRNO_H
-
-#include <errno.h>
-
-#define        EPERM            1      /* Operation not permitted */
-#define        ENOENT           2      /* No such file or directory */
-#define        ESRCH            3      /* No such process */
-#define        EINTR            4      /* Interrupted system call */
-#define        EIO                      5      /* I/O error */
-#define        ENXIO            6      /* No such device or address */
-#define        E2BIG            7      /* Arg list too long */
-#define        ENOEXEC          8      /* Exec format error */
-#define        EBADF            9      /* Bad file number */
-#define        ECHILD          10      /* No child processes */
-#define        EAGAIN          11      /* Try again */
-#define        ENOMEM          12      /* Out of memory */
-#define        EACCES          13      /* Permission denied */
-#define        EFAULT          14      /* Bad address */
-#define        ENOTBLK         15      /* Block device required */
-#define        EBUSY           16      /* Device or resource busy */
-#define        EEXIST          17      /* File exists */
-#define        EXDEV           18      /* Cross-device link */
-#define        ENODEV          19      /* No such device */
-#define        ENOTDIR         20      /* Not a directory */
-#define        EISDIR          21      /* Is a directory */
-#define        EINVAL          22      /* Invalid argument */
-#define        ENFILE          23      /* File table overflow */
-#define        EMFILE          24      /* Too many open files */
-#define        ENOTTY          25      /* Not a typewriter */
-#define        ETXTBSY         26      /* Text file busy */
-#define        EFBIG           27      /* File too large */
-#define        ENOSPC          28      /* No space left on device */
-#define        ESPIPE          29      /* Illegal seek */
-#define        EROFS           30      /* Read-only file system */
-#define        EMLINK          31      /* Too many links */
-#define        EPIPE           32      /* Broken pipe */
-#define        EDOM            33      /* Math argument out of domain of func */
-#define        ERANGE          34      /* Math result not representable */
-#define        ELOOP           40      /* Too many symbolic links encountered */
-#define        EWOULDBLOCK     EAGAIN  /* Operation would block */
-#define        ENOMSG          42      /* No message of desired type */
-#define        EIDRM           43      /* Identifier removed */
-#define        ECHRNG          44      /* Channel number out of range */
-#define        EL2NSYNC        45      /* Level 2 not synchronized */
-#define        EL3HLT          46      /* Level 3 halted */
-#define        EL3RST          47      /* Level 3 reset */
-#define        ELNRNG          48      /* Link number out of range */
-#define        EUNATCH         49      /* Protocol driver not attached */
-#define        ENOCSI          50      /* No CSI structure available */
-#define        EL2HLT          51      /* Level 2 halted */
-#define        EBADE           52      /* Invalid exchange */
-#define        EBADR           53      /* Invalid request descriptor */
-#define        EXFULL          54      /* Exchange full */
-#define        ENOANO          55      /* No anode */
-#define        EBADRQC         56      /* Invalid request code */
-#define        EBADSLT         57      /* Invalid slot */
-
-#define        EDEADLOCK       EDEADLK
-
-#define        EBFONT          59      /* Bad font file format */
-#define        ENOSTR          60      /* Device not a stream */
-#define        ENODATA         61      /* No data available */
-#define        ETIME           62      /* Timer expired */
-#define        ENOSR           63      /* Out of streams resources */
-#define        ENONET          64      /* Machine is not on the network */
-#define        ENOPKG          65      /* Package not installed */
-#define        EREMOTE         66      /* Object is remote */
-#define        ENOLINK         67      /* Link has been severed */
-#define        EADV            68      /* Advertise error */
-#define        ESRMNT          69      /* Srmount error */
-#define        ECOMM           70      /* Communication error on send */
-#define        EPROTO          71      /* Protocol error */
-#define        EMULTIHOP       72      /* Multihop attempted */
-#define        EDOTDOT         73      /* RFS specific error */
-#define        EBADMSG         74      /* Not a data message */
-#define        EOVERFLOW       75      /* Value too large for defined data type */
-#define        ENOTUNIQ        76      /* Name not unique on network */
-#define        EBADFD          77      /* File descriptor in bad state */
-#define        EREMCHG         78      /* Remote address changed */
-#define        ELIBACC         79      /* Can not access a needed shared library */
-#define        ELIBBAD         80      /* Accessing a corrupted shared library */
-#define        ELIBSCN         81      /* .lib section in a.out corrupted */
-#define        ELIBMAX         82      /* Attempting to link in too many shared libraries */
-#define        ELIBEXEC        83      /* Cannot exec a shared library directly */
-#define        ERESTART        85      /* Interrupted system call should be restarted */
-#define        ESTRPIPE        86      /* Streams pipe error */
-#define        EUSERS          87      /* Too many users */
-#define        ENOTSOCK        88      /* Socket operation on non-socket */
-#define        EDESTADDRREQ    89      /* Destination address required */
-#define        EMSGSIZE        90      /* Message too long */
-#define        EPROTOTYPE      91      /* Protocol wrong type for socket */
-#define        ENOPROTOOPT     92      /* Protocol not available */
-#define        EPROTONOSUPPORT 93      /* Protocol not supported */
-#define        ESOCKTNOSUPPORT 94      /* Socket type not supported */
-#define        EOPNOTSUPP      95      /* Operation not supported on transport endpoint */
-#define        EPFNOSUPPORT    96      /* Protocol family not supported */
-#define        EAFNOSUPPORT    97      /* Address family not supported by protocol */
-#define        EADDRINUSE      98      /* Address already in use */
-#define        EADDRNOTAVAIL   99      /* Cannot assign requested address */
-#define        ENETDOWN        100     /* Network is down */
-#define        ENETUNREACH     101     /* Network is unreachable */
-#define        ENETRESET       102     /* Network dropped connection because of reset */
-#define        ECONNABORTED    103     /* Software caused connection abort */
-#define        ECONNRESET      104     /* Connection reset by peer */
-#define        ENOBUFS         105     /* No buffer space available */
-#define        EISCONN         106     /* Transport endpoint is already connected */
-#define        ENOTCONN        107     /* Transport endpoint is not connected */
-#define        ESHUTDOWN       108     /* Cannot send after transport endpoint shutdown */
-#define        ETOOMANYREFS    109     /* Too many references: cannot splice */
-#define        ETIMEDOUT       110     /* Connection timed out */
-#define        ECONNREFUSED    111     /* Connection refused */
-#define        EHOSTDOWN       112     /* Host is down */
-#define        EHOSTUNREACH    113     /* No route to host */
-#define        EALREADY        114     /* Operation already in progress */
-#define        EINPROGRESS     115     /* Operation now in progress */
-#define        ESTALE          116     /* Stale NFS file handle */
-#define        EUCLEAN         117     /* Structure needs cleaning */
-#define        ENOTNAM         118     /* Not a XENIX named type file */
-#define        ENAVAIL         119     /* No XENIX semaphores available */
-#define        EISNAM          120     /* Is a named type file */
-#define        EREMOTEIO       121     /* Remote I/O error */
-#define        EDQUOT          122     /* Quota exceeded */
-
-#define        ENOMEDIUM       123     /* No medium found */
-#define        EMEDIUMTYPE     124     /* Wrong medium type */
-
-/* Should never be seen by user programs */
-#define ERESTARTSYS    512
-#define ERESTARTNOINTR 513
-#define ERESTARTNOHAND 514     /* restart if no handler.. */
-#define ENOIOCTLCMD    515     /* No ioctl command */
-
-/* Defined for the NFSv3 protocol */
-#define EBADHANDLE     521     /* Illegal NFS file handle */
-#define ENOTSYNC       522     /* Update synchronization mismatch */
-#define EBADCOOKIE     523     /* Cookie is stale */
-#define ENOTSUPP       524     /* Operation is not supported */
-#define ETOOSMALL      525     /* Buffer or request is too small */
-#define ESERVERFAULT   526     /* An untranslatable error occurred */
-#define EBADTYPE       527     /* Type not supported by server */
-#define EJUKEBOX       528     /* Request initiated, but will not complete before timeout */
-
-/* open/fcntl - O_SYNC is only implemented on blocks devices and on files
-   located on an ext2 file system */
-#define O_ACCMODE         0003
-#define O_RDONLY            00
-#define O_WRONLY            01
-#define O_RDWR              02
-#define O_CREAT                   0100 /* not fcntl */
-#define O_EXCL            0200 /* not fcntl */
-#define O_NOCTTY          0400 /* not fcntl */
-#define O_TRUNC                  01000 /* not fcntl */
-#define O_APPEND         02000
-#define O_NONBLOCK       04000
-#define O_NDELAY       O_NONBLOCK
-#define O_SYNC          010000
-#define FASYNC          020000 /* fcntl, for BSD compatibility */
-#define O_DIRECT        040000 /* direct disk access hint */
-#define O_LARGEFILE    0100000
-#define O_DIRECTORY    0200000 /* must be a directory */
-#define O_NOFOLLOW     0400000 /* don't follow links */
-
-#define F_DUPFD                0       /* dup */
-#define F_GETFD                1       /* get close_on_exec */
-#define F_SETFD                2       /* set/clear close_on_exec */
-#define F_GETFL                3       /* get file->f_flags */
-#define F_SETFL                4       /* set file->f_flags */
-#define F_GETLK                5
-#define F_SETLK                6
-#define F_SETLKW       7
-
-#define F_SETOWN       8       /*  for sockets. */
-#define F_GETOWN       9       /*  for sockets. */
-#define F_SETSIG       10      /*  for sockets. */
-#define F_GETSIG       11      /*  for sockets. */
-
-#define F_GETLK64      12      /*  using 'struct flock64' */
-#define F_SETLK64      13
-#define F_SETLKW64     14
-
-/* for F_[GET|SET]FL */
-#define FD_CLOEXEC     1       /* actually anything with low bit set goes */
-
-/* for posix fcntl() and lockf() */
-#define F_RDLCK                0
-#define F_WRLCK                1
-#define F_UNLCK                2
-
-/* for old implementation of bsd flock () */
-#define F_EXLCK                4       /* or 3 */
-#define F_SHLCK                8       /* or 4 */
-
-/* for leases */
-#define F_INPROGRESS   16
-
-/* operations for bsd flock(), also used by the kernel implementation */
-#define LOCK_SH                1       /* shared lock */
-#define LOCK_EX                2       /* exclusive lock */
-#define LOCK_NB                4       /* or'd with one of the above to prevent
-                                  blocking */
-#define LOCK_UN                8       /* remove lock */
-
-#define LOCK_MAND      32      /* This is a mandatory flock */
-#define LOCK_READ      64      /* ... Which allows concurrent read operations */
-#define LOCK_WRITE     128     /* ... Which allows concurrent write operations */
-#define LOCK_RW                192     /* ... Which allows concurrent read & write ops */
-
-#endif
-
-
-#ifndef LIBCFS_SIGNAL_H
-#define LIBCFS_SIGNAL_H
-
-/*
- *  signal values ...
- */
-
-#ifdef __KERNEL__
-#define SIGHUP          1
-#define SIGINT          2
-#define SIGQUIT                 3
-#define SIGILL          4
-#define SIGTRAP                 5
-#define SIGABRT                 6
-#define SIGIOT          6
-#define SIGBUS          7
-#define SIGFPE          8
-#define SIGKILL                 9
-#define SIGUSR1                10
-#define SIGSEGV                11
-#define SIGUSR2                12
-#define SIGPIPE                13
-#define SIGALRM                14
-#define SIGTERM                15
-#define SIGSTKFLT      16
-#define SIGCHLD                17
-#define SIGCONT                18
-#define SIGSTOP                19
-#define SIGTSTP                20
-#define SIGTTIN                21
-#define SIGTTOU                22
-#define SIGURG         23
-#define SIGXCPU                24
-#define SIGXFSZ                25
-#define SIGVTALRM      26
-#define SIGPROF                27
-#define SIGWINCH       28
-#define SIGIO          29
-#define SIGPOLL                SIGIO
-/*
-#define SIGLOST                29
-*/
-#define SIGPWR         30
-#define SIGSYS         31
-#define        SIGUNUSED       31
-
-/* These should not be considered constants from userland.  */
-#define SIGRTMIN       32
-#define SIGRTMAX       (_NSIG-1)
-
-#endif
-
-/*
- * SA_FLAGS values:
- *
- * SA_ONSTACK indicates that a registered stack_t will be used.
- * SA_INTERRUPT is a no-op, but left due to historical reasons. Use the
- * SA_RESTART flag to get restarting signals (which were the default long ago)
- * SA_NOCLDSTOP flag to turn off SIGCHLD when children stop.
- * SA_RESETHAND clears the handler when the signal is delivered.
- * SA_NOCLDWAIT flag on SIGCHLD to inhibit zombies.
- * SA_NODEFER prevents the current signal from being masked in the handler.
- *
- * SA_ONESHOT and SA_NOMASK are the historical Linux names for the Single
- * Unix names RESETHAND and NODEFER respectively.
- */
-#define SA_NOCLDSTOP   0x00000001
-#define SA_NOCLDWAIT   0x00000002 /* not supported yet */
-#define SA_SIGINFO     0x00000004
-#define SA_ONSTACK     0x08000000
-#define SA_RESTART     0x10000000
-#define SA_NODEFER     0x40000000
-#define SA_RESETHAND   0x80000000
-
-#define SA_NOMASK      SA_NODEFER
-#define SA_ONESHOT     SA_RESETHAND
-#define SA_INTERRUPT   0x20000000 /* dummy -- ignored */
-
-#define SA_RESTORER    0x04000000
-
-/* 
- * sigaltstack controls
- */
-#define SS_ONSTACK     1
-#define SS_DISABLE     2
-
-#define MINSIGSTKSZ    2048
-#define SIGSTKSZ       8192
-
-
-#define sigmask(sig)   ((__u32)1 << ((sig) - 1))
-
-#endif // LIBCFS_SIGNAL_H
index 90a4a96..1478a3a 100644 (file)
@@ -824,12 +824,10 @@ int cfs_trace_dump_debug_buffer_usrstr(void *usr_str, int usr_str_nob)
         if (rc != 0)
                 goto out;
 
-#if !defined(__WINNT__)
         if (str[0] != '/') {
                 rc = -EINVAL;
                 goto out;
         }
-#endif
         rc = cfs_tracefile_dump_all_pages(str);
 out:
         cfs_trace_free_string_buffer(str, usr_str_nob + 1);
@@ -857,10 +855,8 @@ int cfs_trace_daemon_command(char *str)
 
         } else if (strlen(str) >= sizeof(cfs_tracefile)) {
                 rc = -ENAMETOOLONG;
-#ifndef __WINNT__
         } else if (str[0] != '/') {
                 rc = -EINVAL;
-#endif
         } else {
                strcpy(cfs_tracefile, str);
 
index 3aa8989..d4fe104 100644 (file)
@@ -42,8 +42,6 @@
 #ifdef __KERNEL__
 #if defined(__linux__)
 #include "linux/linux-tracefile.h"
-#elif defined(__WINNT__)
-#include "winnt/winnt-tracefile.h"
 #else
 #error Unsupported operating system.
 #endif
index af1d09c..e3c0084 100644 (file)
@@ -58,8 +58,6 @@ struct page *alloc_page(unsigned int flags)
 
 #if defined (__DARWIN__)
        pg->addr = valloc(PAGE_CACHE_SIZE);
-#elif defined (__WINNT__)
-        pg->addr = pgalloc(0);
 #else
        rc = posix_memalign(&pg->addr, PAGE_CACHE_SIZE, PAGE_CACHE_SIZE);
 #endif
@@ -72,11 +70,7 @@ struct page *alloc_page(unsigned int flags)
 
 void __free_page(struct page *pg)
 {
-#if defined (__WINNT__)
-        pgfree(pg->addr);
-#else
         free(pg->addr);
-#endif
 
         free(pg);
 }
index 4b7fdaa..e779eb6 100644 (file)
@@ -53,9 +53,7 @@
 #if defined(__sun__) || defined(__sun)
 #include <sys/sockio.h>
 #endif
-#ifndef __CYGWIN__
 #include <sys/syscall.h>
-#endif
 
 /*
  * Functions to get network interfaces info
index 9570253..dfdd8ab 100644 (file)
@@ -74,15 +74,14 @@ open_ioc_dev(int dev_id)
         }
 
         if (ioc_dev_list[dev_id].dev_fd < 0) {
-                int fd = cfs_proc_open((char *)dev_name, O_RDWR);
-
-                /* Make the /dev/ node if we need to */
-                if (fd < 0 && errno == ENOENT) {
-                        if (cfs_proc_mknod(dev_name, 
-                                  S_IFCHR|S_IWUSR|S_IRUSR,
-                                  MKDEV(ioc_dev_list[dev_id].dev_major,
-                                        ioc_dev_list[dev_id].dev_minor)) == 0)
-                                fd = cfs_proc_open((char *)dev_name, O_RDWR);
+               int fd = open(dev_name, O_RDWR);
+
+               /* Make the /dev/ node if we need to */
+               if (fd < 0 && errno == ENOENT) {
+                       if (mknod(dev_name, S_IFCHR|S_IWUSR|S_IRUSR,
+                                 MKDEV(ioc_dev_list[dev_id].dev_major,
+                                       ioc_dev_list[dev_id].dev_minor)) == 0)
+                               fd = open(dev_name, O_RDWR);
                         else
                                 fprintf(stderr, "mknod %s failed: %s\n",
                                         dev_name, strerror(errno));
@@ -110,9 +109,9 @@ do_ioctl(int dev_id, unsigned int opc, void *buf)
         if (fd < 0) 
                 return fd;
 
-        rc = cfs_proc_ioctl(fd, opc, buf);
-        return rc;
-        
+       rc = ioctl(fd, opc, buf);
+
+       return rc;
 }
 
 static FILE *
@@ -188,16 +187,16 @@ register_ioc_dev(int dev_id, const char * dev_name, int major, int minor)
 void
 unregister_ioc_dev(int dev_id) 
 {
+       if (dev_id < 0 ||
+           dev_id >= sizeof(ioc_dev_list) / sizeof(ioc_dev_list[0]))
+               return;
 
-        if (dev_id < 0 || 
-            dev_id >= sizeof(ioc_dev_list) / sizeof(ioc_dev_list[0]))
-                return;
-        if (ioc_dev_list[dev_id].dev_name != NULL &&
-            ioc_dev_list[dev_id].dev_fd >= 0) 
-                cfs_proc_close(ioc_dev_list[dev_id].dev_fd);
+       if (ioc_dev_list[dev_id].dev_name != NULL &&
+           ioc_dev_list[dev_id].dev_fd >= 0)
+               close(ioc_dev_list[dev_id].dev_fd);
 
-        ioc_dev_list[dev_id].dev_name = NULL;
-        ioc_dev_list[dev_id].dev_fd = -1;
+       ioc_dev_list[dev_id].dev_name = NULL;
+       ioc_dev_list[dev_id].dev_fd = -1;
 }
 
 /* If this file is set, then all ioctl buffers will be 
@@ -235,49 +234,6 @@ parse_dump(char * dump_file, ioc_handler_t ioc_func)
 {
         int line =0;
         char *start, *buf, *end;
-
-#if defined(__CYGWIN__) || defined(__WINNT__)
-
-        HANDLE fd, hmap;
-        DWORD size;
-
-        fd = CreateFile(dump_file, GENERIC_READ, FILE_SHARE_READ, NULL,
-                        OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
-        if (fd == INVALID_HANDLE_VALUE) {
-                fprintf(stderr, "couldn't open %s (error code: %u)\n",
-                                dump_file, GetLastError());
-                exit(1);
-        }
-        size = GetFileSize(fd, NULL);
-        if (size < 1 || size == 0xFFFFFFFF) {
-                fprintf(stderr, "KML is empty\n");
-                CloseHandle(fd);
-                exit(1);
-        }
-
-        hmap = CreateFileMapping(fd, NULL, PAGE_READONLY, 0,0, NULL);
-        if (hmap == NULL) {
-                fprintf(stderr, "can't create file mapping\n");
-                CloseHandle(fd);
-                exit(1);
-        }
-        start = buf = MapViewOfFile(hmap, FILE_MAP_READ, 0, 0, 0);
-        if (start == NULL) {
-                fprintf(stderr, "can't map file content\n");
-                CloseHandle(hmap);
-                CloseHandle(fd);
-                exit(1);
-        }
-        end = buf + size;
-        CloseHandle(fd);
-        if (start == NULL) {
-                fprintf(stderr, "can't create file mapping\n");
-                UnmapViewOfFile(start);
-                CloseHandle(hmap);
-                exit(1);
-        }
-#else
-
         struct stat st;
         int fd;
 
@@ -305,7 +261,6 @@ parse_dump(char * dump_file, ioc_handler_t ioc_func)
                 fprintf(stderr, "can't create file mapping\n");
                 exit(1);
         }
-#endif
 
         while (buf < end) {
                 struct dump_hdr *dump_hdr = (struct dump_hdr *) buf;
@@ -340,14 +295,9 @@ parse_dump(char * dump_file, ioc_handler_t ioc_func)
                 buf += data->ioc_len + sizeof(*dump_hdr);
         }
 
-#if defined(__CYGWIN__) || defined(__WINNT__)
-        UnmapViewOfFile(start);
-        CloseHandle(hmap);
-#else
-        munmap(start, end - start);
-#endif
+       munmap(start, end - start);
 
-        return 0;
+       return 0;
 }
 
 int 
diff --git a/libcfs/libcfs/winnt/winnt-curproc.c b/libcfs/libcfs/winnt/winnt-curproc.c
deleted file mode 100644 (file)
index 6347827..0000000
+++ /dev/null
@@ -1,483 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- *
- * libcfs/libcfs/winnt/winnt-curproc.c
- *
- * Impletion of winnt curproc routines.
- */
-
-#define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-/*
- * Implementation of cfs_curproc API (see portals/include/libcfs/curproc.h)
- * for Linux kernel.
- */
-
-struct task_struct this_task =
-    { /* umask */ 0,/* blocked*/0, /* pid */ 0, /* pgrp */ 0,
-      /* uid,euid,suid,fsuid */  0, 0, 0, 0,
-      /* gid_t gid,egid,sgid,fsgid */ 0, 0, 0, 0,
-      /* ngroups*/ 1, /*cgroups*/ 0, /*groups*/ 0,
-      /* group_info */ NULL,
-      /* cap_effective, cap_inheritable, cap_permitted */  0, 0, 0,
-      /* comm */"sysetm\0",
-      /* journal_info */ NULL
-    };
-
-struct user_namespace init_user_ns __read_mostly;
-EXPORT_SYMBOL(init_user_ns);
-
-uid_t  current_uid(void)
-{
-    return this_task.uid;
-}
-
-gid_t  current_gid(void)
-{
-    return this_task.gid;
-}
-
-uid_t  current_fsuid(void)
-{
-    return this_task.fsuid;
-}
-
-gid_t current_fsgid(void)
-{
-    return this_task.fsgid;
-}
-
-pid_t current_pid(void)
-{
-    return current->pid;
-}
-
-mode_t current_umask(void)
-{
-    return this_task.umask;
-}
-
-char  *current_comm(void)
-{
-    return this_task.comm;
-}
-
-void cfs_cap_raise(cfs_cap_t cap)
-{
-        this_task.cap_effective |= (1 << cap);
-}
-
-void cfs_cap_lower(cfs_cap_t cap)
-{
-        this_task.cap_effective &= ~(1 << cap);
-}
-
-int cfs_cap_raised(cfs_cap_t cap)
-{
-        return this_task.cap_effective & (1 << cap);
-}
-
-cfs_cap_t cfs_curproc_cap_pack(void) {
-        return this_task.cap_effective;
-}
-
-void cfs_curproc_cap_unpack(cfs_cap_t cap) {
-        this_task.cap_effective = cap;
-}
-
-int cfs_capable(cfs_cap_t cap)
-{
-        return TRUE;
-}
-
-/*
- * Implementation of linux task management routines
- */
-
-
-/* global of the task manager structure */
-
-TASK_MAN cfs_win_task_manger;
-
-/* global idr context */
-struct idr_context * cfs_win_task_slot_idp = NULL;
-
-/*
- *  task slot routiens
- */
-
-PTASK_SLOT alloc_task_slot()
-{
-       if (cfs_win_task_manger.slab)
-               return kmem_cache_alloc(cfs_win_task_manger.slab, 0);
-       else
-               return kmalloc(sizeof(TASK_SLOT), 0);
-}
-
-void
-init_task_slot(PTASK_SLOT task)
-{
-    memset(task, 0, sizeof(TASK_SLOT));
-    task->Magic = TASKSLT_MAGIC;
-    task->task  = this_task;
-    cfs_init_event(&task->Event, TRUE, FALSE);
-}
-
-void cleanup_task_slot(PTASK_SLOT task)
-{
-       if (task->task.pid)
-               cfs_idr_remove(cfs_win_task_slot_idp, task->task.pid);
-
-       if (cfs_win_task_manger.slab)
-               kmem_cache_free(cfs_win_task_manger.slab, task);
-       else
-               kfree(task);
-}
-
-/*
- *  task manager related routines
- */
-
-VOID
-task_manager_notify(
-    IN HANDLE   ProcessId,
-    IN HANDLE   ThreadId,
-    IN BOOLEAN  Create
-    )
-{
-    PLIST_ENTRY ListEntry = NULL;
-    PTASK_SLOT  TaskSlot  = NULL;
-
-       spin_lock(&(cfs_win_task_manger.Lock));
-
-    ListEntry = cfs_win_task_manger.TaskList.Flink;
-    while (ListEntry != (&(cfs_win_task_manger.TaskList))) {
-
-        TaskSlot = CONTAINING_RECORD(ListEntry, TASK_SLOT, Link);
-
-        if (TaskSlot->Pid == ProcessId && TaskSlot->Tid == ThreadId) {
-
-            if (!Create) {
-                /* remove the taskslot */
-                RemoveEntryList(&(TaskSlot->Link));
-                cfs_win_task_manger.NumOfTasks--;
-
-                /* now free the task slot */
-                cleanup_task_slot(TaskSlot);
-            }
-        }
-
-        ListEntry = ListEntry->Flink;
-    }
-
-       spin_unlock(&(cfs_win_task_manger.Lock));
-}
-
-int
-init_task_manager()
-{
-    NTSTATUS    status;
-
-    /* initialize the content and magic */
-    memset(&cfs_win_task_manger, 0, sizeof(TASK_MAN));
-    cfs_win_task_manger.Magic = TASKMAN_MAGIC;
-
-    /* initialize the spinlock protection */
-       spin_lock_init(&cfs_win_task_manger.Lock);
-
-       /* create slab memory cache */
-       cfs_win_task_manger.slab = kmem_cache_create("TSLT", sizeof(TASK_SLOT),
-                                                    0, 0, NULL);
-
-    /* intialize the list header */
-    InitializeListHead(&(cfs_win_task_manger.TaskList));
-
-    cfs_win_task_slot_idp = cfs_idr_init();
-    if (!cfs_win_task_slot_idp) {
-        return -ENOMEM;
-    }
-
-    /* set the thread creation/destruction notify routine */
-    status = PsSetCreateThreadNotifyRoutine(task_manager_notify);
-
-    if (!NT_SUCCESS(status)) {
-        cfs_enter_debugger();
-        /* remove idr context */
-        if (cfs_win_task_slot_idp) {
-            cfs_idr_exit(cfs_win_task_slot_idp);
-            cfs_win_task_slot_idp = NULL;
-        }
-        return cfs_error_code(status);
-    }
-
-    return 0;
-}
-
-void
-cleanup_task_manager()
-{
-    PLIST_ENTRY ListEntry = NULL;
-    PTASK_SLOT  TaskSlot  = NULL;
-
-    /* remove ThreadNotifyRoutine: task_manager_notify */
-    PsRemoveCreateThreadNotifyRoutine(task_manager_notify);
-
-    /* remove idr context */
-    if (cfs_win_task_slot_idp) {
-        cfs_idr_exit(cfs_win_task_slot_idp);
-        cfs_win_task_slot_idp = NULL;
-    }
-
-    /* cleanup all the taskslots attached to the list */
-       spin_lock(&(cfs_win_task_manger.Lock));
-
-    while (!IsListEmpty(&(cfs_win_task_manger.TaskList))) {
-
-        ListEntry = cfs_win_task_manger.TaskList.Flink;
-        TaskSlot = CONTAINING_RECORD(ListEntry, TASK_SLOT, Link);
-
-        RemoveEntryList(ListEntry);
-        cleanup_task_slot(TaskSlot);
-    }
-
-       spin_unlock(&cfs_win_task_manger.Lock);
-
-       /* destroy the taskslot cache slab */
-       kmem_cache_destroy(cfs_win_task_manger.slab);
-       memset(&cfs_win_task_manger, 0, sizeof(TASK_MAN));
-}
-
-
-/*
- * schedule routines (task slot list)
- */
-
-
-struct task_struct *
-current
-{
-    HANDLE      Pid = PsGetCurrentProcessId();
-    HANDLE      Tid = PsGetCurrentThreadId();
-    PETHREAD    Tet = PsGetCurrentThread();
-
-    PLIST_ENTRY ListEntry = NULL;
-    PTASK_SLOT  TaskSlot  = NULL;
-
-       spin_lock(&(cfs_win_task_manger.Lock));
-
-    ListEntry = cfs_win_task_manger.TaskList.Flink;
-    while (ListEntry != (&(cfs_win_task_manger.TaskList))) {
-
-        TaskSlot = CONTAINING_RECORD(ListEntry, TASK_SLOT, Link);
-        if (TaskSlot->Pid == Pid && TaskSlot->Tid == Tid) {
-            if (TaskSlot->Tet != Tet) {
-
-                //
-                // The old thread was already exit. This must be a
-                // new thread which get the same Tid to the previous.
-                //
-
-                TaskSlot->Tet = Tet;
-            }
-            break;
-
-        } else {
-
-            if (TaskSlot->Pid > Pid) {
-                TaskSlot = NULL;
-                break;
-            } else if (TaskSlot->Pid == Pid) {
-                if (TaskSlot->Tid > Tid) {
-                    TaskSlot = NULL;
-                    break;
-                }
-            }
-            TaskSlot =  NULL;
-        }
-
-        ListEntry = ListEntry->Flink;
-    }
-
-    if (!TaskSlot) {
-
-        /* allocate new task slot */
-        TaskSlot = alloc_task_slot();
-        if (!TaskSlot) {
-            cfs_enter_debugger();
-            goto errorout;
-        }
-
-        /* set task slot IDs */
-        init_task_slot(TaskSlot);
-        TaskSlot->Pid = Pid;
-        TaskSlot->Tid = Tid;
-        TaskSlot->Tet = Tet;
-        TaskSlot->task.pid = (pid_t)cfs_idr_get_new(cfs_win_task_slot_idp, Tet);
-
-        if (ListEntry == (&(cfs_win_task_manger.TaskList))) {
-            //
-            // Empty case or the biggest case, put it to the tail.
-            //
-            InsertTailList(&(cfs_win_task_manger.TaskList), &(TaskSlot->Link));
-        } else {
-            //
-            // Get a slot and smaller than it's tid, put it just before.
-            //
-            InsertHeadList(ListEntry->Blink, &(TaskSlot->Link));
-        }
-
-        cfs_win_task_manger.NumOfTasks++;
-    }
-
-    //
-    // To Check whether he task structures are arranged in the expected order ?
-    //
-
-    {
-        PTASK_SLOT  Prev = NULL, Curr = NULL;
-
-        ListEntry = cfs_win_task_manger.TaskList.Flink;
-
-        while (ListEntry != (&(cfs_win_task_manger.TaskList))) {
-
-            Curr = CONTAINING_RECORD(ListEntry, TASK_SLOT, Link);
-            ListEntry = ListEntry->Flink;
-
-            if (Prev) {
-                if (Prev->Pid > Curr->Pid) {
-                    cfs_enter_debugger();
-                } else if (Prev->Pid == Curr->Pid) {
-                    if (Prev->Tid > Curr->Tid) {
-                        cfs_enter_debugger();
-                    }
-                }
-            }
-
-            Prev = Curr;
-        }
-    }
-
-errorout:
-
-       spin_unlock(&(cfs_win_task_manger.Lock));
-
-    if (!TaskSlot) {
-        cfs_enter_debugger();
-        return NULL;
-    }
-
-    return (&(TaskSlot->task));
-}
-
-/* deschedule for a bit... */
-void
-cfs_pause(cfs_duration_t ticks)
-{
-    schedule_timeout_and_set_state(CFS_TASK_UNINTERRUPTIBLE, ticks);
-}
-
-void
-schedule_timeout_and_set_state(long state, int64_t time)
-{
-    struct task_struct * task = current;
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        cfs_enter_debugger();
-        return;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    cfs_assert(slot->Magic == TASKSLT_MAGIC);
-
-    if (time == MAX_SCHEDULE_TIMEOUT) {
-        time = 0;
-    }
-
-    cfs_wait_event_internal(&(slot->Event), time);
-}
-
-void
-schedule()
-{
-    schedule_timeout_and_set_state(CFS_TASK_UNINTERRUPTIBLE, 0);
-}
-
-int
-wake_up_process(
-    struct task_struct * task
-    )
-{
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        cfs_enter_debugger();
-        return 0;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    cfs_assert(slot->Magic == TASKSLT_MAGIC);
-
-    cfs_wake_event(&(slot->Event));
-
-    return TRUE;
-}
-
-void
-sleep_on(wait_queue_head_t *waitq)
-{
-       wait_queue_t link;
-
-       init_waitqueue_entry_current(&link);
-       add_wait_queue(waitq, &link);
-       waitq_wait(&link, TASK_INTERRUPTIBLE);
-       remove_wait_queue(waitq, &link);
-}
-
-EXPORT_SYMBOL(current_uid);
-EXPORT_SYMBOL(current_pid);
-EXPORT_SYMBOL(current_gid);
-EXPORT_SYMBOL(current_fsuid);
-EXPORT_SYMBOL(current_fsgid);
-EXPORT_SYMBOL(current_umask);
-EXPORT_SYMBOL(current_comm);
-EXPORT_SYMBOL(cfs_cap_raise);
-EXPORT_SYMBOL(cfs_cap_lower);
-EXPORT_SYMBOL(cfs_cap_raised);
-EXPORT_SYMBOL(cfs_curproc_cap_pack);
-EXPORT_SYMBOL(cfs_curproc_cap_unpack);
-EXPORT_SYMBOL(cfs_capable);
diff --git a/libcfs/libcfs/winnt/winnt-debug.c b/libcfs/libcfs/winnt/winnt-debug.c
deleted file mode 100644 (file)
index d60aa31..0000000
+++ /dev/null
@@ -1,1123 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-# define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-#include "tracefile.h"
-
-void libcfs_debug_dumpstack(struct task_struct *tsk)
-{
-       return;
-}
-
-void libcfs_run_debug_log_upcall(char *file)
-{
-}
-
-struct task_struct *libcfs_current(void)
-{
-       return current;
-}
-
-void libcfs_run_lbug_upcall(struct libcfs_debug_msg_data *msgdata)
-{
-}
-
-void lbug_with_loc(struct libcfs_debug_msg_data *msgdata)
-{
-       libcfs_catastrophe = 1;
-       CEMERG("LBUG: pid: %u thread: %#x\n",
-              current_pid(), PsGetCurrentThread());
-       cfs_enter_debugger();
-       libcfs_debug_dumplog();
-       libcfs_run_lbug_upcall(msgdata);
-}
-
-void cfs_enter_debugger(void)
-{
-# if _X86_
-    __asm int 3;
-# else
-    KdBreakPoint();
-# endif
-}
-
-#if DBG
-
-/*
- * Definitions
- */
-
-LONG  KsDebugLevel = 1;
-
-
-/*
- * Routines
- */
-
-
-/*
- * KsNtStatusToString
- *   Get the error message for a specified nt status
- *
- * Arguments:
- *   Status - nt status code
- *
- * Return Value:
- *   PUCHAR - message string for the status code
- *
- * NOTES: 
- *   N/A
- */
-
-PUCHAR
-KsNtStatusToString (IN NTSTATUS Status)
-{
-    switch (Status) {
-
-    case 0x00000000: return "STATUS_SUCCESS";
-    case 0x00000001: return "STATUS_WAIT_1";
-    case 0x00000002: return "STATUS_WAIT_2";
-    case 0x00000003: return "STATUS_WAIT_3";
-    case 0x0000003F: return "STATUS_WAIT_63";
-    case 0x00000080: return "STATUS_ABANDONED_WAIT_0";
-    case 0x000000BF: return "STATUS_ABANDONED_WAIT_63";
-    case 0x000000C0: return "STATUS_USER_APC";
-    case 0x00000100: return "STATUS_KERNEL_APC";
-    case 0x00000101: return "STATUS_ALERTED";
-    case 0x00000102: return "STATUS_TIMEOUT";
-    case 0x00000103: return "STATUS_PENDING";
-    case 0x00000104: return "STATUS_REPARSE";
-    case 0x00000105: return "STATUS_MORE_ENTRIES";
-    case 0x00000106: return "STATUS_NOT_ALL_ASSIGNED";
-    case 0x00000107: return "STATUS_SOME_NOT_MAPPED";
-    case 0x00000108: return "STATUS_OPLOCK_BREAK_IN_PROGRESS";
-    case 0x00000109: return "STATUS_VOLUME_MOUNTED";
-    case 0x0000010A: return "STATUS_RXACT_COMMITTED";
-    case 0x0000010B: return "STATUS_NOTIFY_CLEANUP";
-    case 0x0000010C: return "STATUS_NOTIFY_ENUM_DIR";
-    case 0x0000010D: return "STATUS_NO_QUOTAS_FOR_ACCOUNT";
-    case 0x0000010E: return "STATUS_PRIMARY_TRANSPORT_CONNECT_FAILED";
-    case 0x00000110: return "STATUS_PAGE_FAULT_TRANSITION";
-    case 0x00000111: return "STATUS_PAGE_FAULT_DEMAND_ZERO";
-    case 0x00000112: return "STATUS_PAGE_FAULT_COPY_ON_WRITE";
-    case 0x00000113: return "STATUS_PAGE_FAULT_GUARD_PAGE";
-    case 0x00000114: return "STATUS_PAGE_FAULT_PAGING_FILE";
-    case 0x00000115: return "STATUS_CACHE_PAGE_LOCKED";
-    case 0x00000116: return "STATUS_CRASH_DUMP";
-    case 0x00000117: return "STATUS_BUFFER_ALL_ZEROS";
-    case 0x00000118: return "STATUS_REPARSE_OBJECT";
-    case 0x00000119: return "STATUS_RESOURCE_REQUIREMENTS_CHANGED";
-    case 0x00000120: return "STATUS_TRANSLATION_COMPLETE";
-    case 0x00000121: return "STATUS_DS_MEMBERSHIP_EVALUATED_LOCALLY";
-    case 0x00010001: return "DBG_EXCEPTION_HANDLED";
-    case 0x00010002: return "DBG_CONTINUE";
-    case 0x40000000: return "STATUS_OBJECT_NAME_EXISTS";
-    case 0x40000001: return "STATUS_THREAD_WAS_SUSPENDED";
-    case 0x40000002: return "STATUS_WORKING_SET_LIMIT_RANGE";
-    case 0x40000003: return "STATUS_IMAGE_NOT_AT_BASE";
-    case 0x40000004: return "STATUS_RXACT_STATE_CREATED";
-    case 0x40000005: return "STATUS_SEGMENT_NOTIFICATION";
-    case 0x40000006: return "STATUS_LOCAL_USER_SESSION_KEY";
-    case 0x40000007: return "STATUS_BAD_CURRENT_DIRECTORY";
-    case 0x40000008: return "STATUS_SERIAL_MORE_WRITES";
-    case 0x40000009: return "STATUS_REGISTRY_RECOVERED";
-    case 0x4000000A: return "STATUS_FT_READ_RECOVERY_FROM_BACKUP";
-    case 0x4000000B: return "STATUS_FT_WRITE_RECOVERY";
-    case 0x4000000C: return "STATUS_SERIAL_COUNTER_TIMEOUT";
-    case 0x4000000D: return "STATUS_NULL_LM_PASSWORD";
-    case 0x4000000E: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH";
-    case 0x4000000F: return "STATUS_RECEIVE_PARTIAL";
-    case 0x40000010: return "STATUS_RECEIVE_EXPEDITED";
-    case 0x40000011: return "STATUS_RECEIVE_PARTIAL_EXPEDITED";
-    case 0x40000012: return "STATUS_EVENT_DONE";
-    case 0x40000013: return "STATUS_EVENT_PENDING";
-    case 0x40000014: return "STATUS_CHECKING_FILE_SYSTEM";
-    case 0x40000015: return "STATUS_FATAL_APP_EXIT";
-    case 0x40000016: return "STATUS_PREDEFINED_HANDLE";
-    case 0x40000017: return "STATUS_WAS_UNLOCKED";
-    case 0x40000018: return "STATUS_SERVICE_NOTIFICATION";
-    case 0x40000019: return "STATUS_WAS_LOCKED";
-    case 0x4000001A: return "STATUS_LOG_HARD_ERROR";
-    case 0x4000001B: return "STATUS_ALREADY_WIN32";
-    case 0x4000001C: return "STATUS_WX86_UNSIMULATE";
-    case 0x4000001D: return "STATUS_WX86_CONTINUE";
-    case 0x4000001E: return "STATUS_WX86_SINGLE_STEP";
-    case 0x4000001F: return "STATUS_WX86_BREAKPOINT";
-    case 0x40000020: return "STATUS_WX86_EXCEPTION_CONTINUE";
-    case 0x40000021: return "STATUS_WX86_EXCEPTION_LASTCHANCE";
-    case 0x40000022: return "STATUS_WX86_EXCEPTION_CHAIN";
-    case 0x40000023: return "STATUS_IMAGE_MACHINE_TYPE_MISMATCH_EXE";
-    case 0x40000024: return "STATUS_NO_YIELD_PERFORMED";
-    case 0x40000025: return "STATUS_TIMER_RESUME_IGNORED";
-    case 0x40000026: return "STATUS_ARBITRATION_UNHANDLED";
-    case 0x40000027: return "STATUS_CARDBUS_NOT_SUPPORTED";
-    case 0x40000028: return "STATUS_WX86_CREATEWX86TIB";
-    case 0x40000029: return "STATUS_MP_PROCESSOR_MISMATCH";
-    case 0x40010001: return "DBG_REPLY_LATER";
-    case 0x40010002: return "DBG_UNABLE_TO_PROVIDE_HANDLE";
-    case 0x40010003: return "DBG_TERMINATE_THREAD";
-    case 0x40010004: return "DBG_TERMINATE_PROCESS";
-    case 0x40010005: return "DBG_CONTROL_C";
-    case 0x40010006: return "DBG_PRINTEXCEPTION_C";
-    case 0x40010007: return "DBG_RIPEXCEPTION";
-    case 0x40010008: return "DBG_CONTROL_BREAK";
-    case 0x80000001: return "STATUS_GUARD_PAGE_VIOLATION";
-    case 0x80000002: return "STATUS_DATATYPE_MISALIGNMENT";
-    case 0x80000003: return "STATUS_BREAKPOINT";
-    case 0x80000004: return "STATUS_SINGLE_STEP";
-    case 0x80000005: return "STATUS_BUFFER_OVERFLOW";
-    case 0x80000006: return "STATUS_NO_MORE_FILES";
-    case 0x80000007: return "STATUS_WAKE_SYSTEM_DEBUGGER";
-    case 0x8000000A: return "STATUS_HANDLES_CLOSED";
-    case 0x8000000B: return "STATUS_NO_INHERITANCE";
-    case 0x8000000C: return "STATUS_GUID_SUBSTITUTION_MADE";
-    case 0x8000000D: return "STATUS_PARTIAL_COPY";
-    case 0x8000000E: return "STATUS_DEVICE_PAPER_EMPTY";
-    case 0x8000000F: return "STATUS_DEVICE_POWERED_OFF";
-    case 0x80000010: return "STATUS_DEVICE_OFF_LINE";
-    case 0x80000011: return "STATUS_DEVICE_BUSY";
-    case 0x80000012: return "STATUS_NO_MORE_EAS";
-    case 0x80000013: return "STATUS_INVALID_EA_NAME";
-    case 0x80000014: return "STATUS_EA_LIST_INCONSISTENT";
-    case 0x80000015: return "STATUS_INVALID_EA_FLAG";
-    case 0x80000016: return "STATUS_VERIFY_REQUIRED";
-    case 0x80000017: return "STATUS_EXTRANEOUS_INFORMATION";
-    case 0x80000018: return "STATUS_RXACT_COMMIT_NECESSARY";
-    case 0x8000001A: return "STATUS_NO_MORE_ENTRIES";
-    case 0x8000001B: return "STATUS_FILEMARK_DETECTED";
-    case 0x8000001C: return "STATUS_MEDIA_CHANGED";
-    case 0x8000001D: return "STATUS_BUS_RESET";
-    case 0x8000001E: return "STATUS_END_OF_MEDIA";
-    case 0x8000001F: return "STATUS_BEGINNING_OF_MEDIA";
-    case 0x80000020: return "STATUS_MEDIA_CHECK";
-    case 0x80000021: return "STATUS_SETMARK_DETECTED";
-    case 0x80000022: return "STATUS_NO_DATA_DETECTED";
-    case 0x80000023: return "STATUS_REDIRECTOR_HAS_OPEN_HANDLES";
-    case 0x80000024: return "STATUS_SERVER_HAS_OPEN_HANDLES";
-    case 0x80000025: return "STATUS_ALREADY_DISCONNECTED";
-    case 0x80000026: return "STATUS_LONGJUMP";
-    case 0x80010001: return "DBG_EXCEPTION_NOT_HANDLED";
-    case 0xC0000001: return "STATUS_UNSUCCESSFUL";
-    case 0xC0000002: return "STATUS_NOT_IMPLEMENTED";
-    case 0xC0000003: return "STATUS_INVALID_INFO_CLASS";
-    case 0xC0000004: return "STATUS_INFO_LENGTH_MISMATCH";
-    case 0xC0000005: return "STATUS_ACCESS_VIOLATION";
-    case 0xC0000006: return "STATUS_IN_PAGE_ERROR";
-    case 0xC0000007: return "STATUS_PAGEFILE_QUOTA";
-    case 0xC0000008: return "STATUS_INVALID_HANDLE";
-    case 0xC0000009: return "STATUS_BAD_INITIAL_STACK";
-    case 0xC000000A: return "STATUS_BAD_INITIAL_PC";
-    case 0xC000000B: return "STATUS_INVALID_CID";
-    case 0xC000000C: return "STATUS_TIMER_NOT_CANCELED";
-    case 0xC000000D: return "STATUS_INVALID_PARAMETER";
-    case 0xC000000E: return "STATUS_NO_SUCH_DEVICE";
-    case 0xC000000F: return "STATUS_NO_SUCH_FILE";
-    case 0xC0000010: return "STATUS_INVALID_DEVICE_REQUEST";
-    case 0xC0000011: return "STATUS_END_OF_FILE";
-    case 0xC0000012: return "STATUS_WRONG_VOLUME";
-    case 0xC0000013: return "STATUS_NO_MEDIA_IN_DEVICE";
-    case 0xC0000014: return "STATUS_UNRECOGNIZED_MEDIA";
-    case 0xC0000015: return "STATUS_NONEXISTENT_SECTOR";
-    case 0xC0000016: return "STATUS_MORE_PROCESSING_REQUIRED";
-    case 0xC0000017: return "STATUS_NO_MEMORY";
-    case 0xC0000018: return "STATUS_CONFLICTING_ADDRESSES";
-    case 0xC0000019: return "STATUS_NOT_MAPPED_VIEW";
-    case 0xC000001A: return "STATUS_UNABLE_TO_FREE_VM";
-    case 0xC000001B: return "STATUS_UNABLE_TO_DELETE_SECTION";
-    case 0xC000001C: return "STATUS_INVALID_SYSTEM_SERVICE";
-    case 0xC000001D: return "STATUS_ILLEGAL_INSTRUCTION";
-    case 0xC000001E: return "STATUS_INVALID_LOCK_SEQUENCE";
-    case 0xC000001F: return "STATUS_INVALID_VIEW_SIZE";
-    case 0xC0000020: return "STATUS_INVALID_FILE_FOR_SECTION";
-    case 0xC0000021: return "STATUS_ALREADY_COMMITTED";
-    case 0xC0000022: return "STATUS_ACCESS_DENIED";
-    case 0xC0000023: return "STATUS_BUFFER_TOO_SMALL";
-    case 0xC0000024: return "STATUS_OBJECT_TYPE_MISMATCH";
-    case 0xC0000025: return "STATUS_NONCONTINUABLE_EXCEPTION";
-    case 0xC0000026: return "STATUS_INVALID_DISPOSITION";
-    case 0xC0000027: return "STATUS_UNWIND";
-    case 0xC0000028: return "STATUS_BAD_STACK";
-    case 0xC0000029: return "STATUS_INVALID_UNWIND_TARGET";
-    case 0xC000002A: return "STATUS_NOT_LOCKED";
-    case 0xC000002B: return "STATUS_PARITY_ERROR";
-    case 0xC000002C: return "STATUS_UNABLE_TO_DECOMMIT_VM";
-    case 0xC000002D: return "STATUS_NOT_COMMITTED";
-    case 0xC000002E: return "STATUS_INVALID_PORT_ATTRIBUTES";
-    case 0xC000002F: return "STATUS_PORT_MESSAGE_TOO_LONG";
-    case 0xC0000030: return "STATUS_INVALID_PARAMETER_MIX";
-    case 0xC0000031: return "STATUS_INVALID_QUOTA_LOWER";
-    case 0xC0000032: return "STATUS_DISK_CORRUPT_ERROR";
-    case 0xC0000033: return "STATUS_OBJECT_NAME_INVALID";
-    case 0xC0000034: return "STATUS_OBJECT_NAME_NOT_FOUND";
-    case 0xC0000035: return "STATUS_OBJECT_NAME_COLLISION";
-    case 0xC0000037: return "STATUS_PORT_DISCONNECTED";
-    case 0xC0000038: return "STATUS_DEVICE_ALREADY_ATTACHED";
-    case 0xC0000039: return "STATUS_OBJECT_PATH_INVALID";
-    case 0xC000003A: return "STATUS_OBJECT_PATH_NOT_FOUND";
-    case 0xC000003B: return "STATUS_OBJECT_PATH_SYNTAX_BAD";
-    case 0xC000003C: return "STATUS_DATA_OVERRUN";
-    case 0xC000003D: return "STATUS_DATA_LATE_ERROR";
-    case 0xC000003E: return "STATUS_DATA_ERROR";
-    case 0xC000003F: return "STATUS_CRC_ERROR";
-    case 0xC0000040: return "STATUS_SECTION_TOO_BIG";
-    case 0xC0000041: return "STATUS_PORT_CONNECTION_REFUSED";
-    case 0xC0000042: return "STATUS_INVALID_PORT_HANDLE";
-    case 0xC0000043: return "STATUS_SHARING_VIOLATION";
-    case 0xC0000044: return "STATUS_QUOTA_EXCEEDED";
-    case 0xC0000045: return "STATUS_INVALID_PAGE_PROTECTION";
-    case 0xC0000046: return "STATUS_MUTANT_NOT_OWNED";
-    case 0xC0000047: return "STATUS_SEMAPHORE_LIMIT_EXCEEDED";
-    case 0xC0000048: return "STATUS_PORT_ALREADY_SET";
-    case 0xC0000049: return "STATUS_SECTION_NOT_IMAGE";
-    case 0xC000004A: return "STATUS_SUSPEND_COUNT_EXCEEDED";
-    case 0xC000004B: return "STATUS_THREAD_IS_TERMINATING";
-    case 0xC000004C: return "STATUS_BAD_WORKING_SET_LIMIT";
-    case 0xC000004D: return "STATUS_INCOMPATIBLE_FILE_MAP";
-    case 0xC000004E: return "STATUS_SECTION_PROTECTION";
-    case 0xC000004F: return "STATUS_EAS_NOT_SUPPORTED";
-    case 0xC0000050: return "STATUS_EA_TOO_LARGE";
-    case 0xC0000051: return "STATUS_NONEXISTENT_EA_ENTRY";
-    case 0xC0000052: return "STATUS_NO_EAS_ON_FILE";
-    case 0xC0000053: return "STATUS_EA_CORRUPT_ERROR";
-    case 0xC0000054: return "STATUS_FILE_LOCK_CONFLICT";
-    case 0xC0000055: return "STATUS_LOCK_NOT_GRANTED";
-    case 0xC0000056: return "STATUS_DELETE_PENDING";
-    case 0xC0000057: return "STATUS_CTL_FILE_NOT_SUPPORTED";
-    case 0xC0000058: return "STATUS_UNKNOWN_REVISION";
-    case 0xC0000059: return "STATUS_REVISION_MISMATCH";
-    case 0xC000005A: return "STATUS_INVALID_OWNER";
-    case 0xC000005B: return "STATUS_INVALID_PRIMARY_GROUP";
-    case 0xC000005C: return "STATUS_NO_IMPERSONATION_TOKEN";
-    case 0xC000005D: return "STATUS_CANT_DISABLE_MANDATORY";
-    case 0xC000005E: return "STATUS_NO_LOGON_SERVERS";
-    case 0xC000005F: return "STATUS_NO_SUCH_LOGON_SESSION";
-    case 0xC0000060: return "STATUS_NO_SUCH_PRIVILEGE";
-    case 0xC0000061: return "STATUS_PRIVILEGE_NOT_HELD";
-    case 0xC0000062: return "STATUS_INVALID_ACCOUNT_NAME";
-    case 0xC0000063: return "STATUS_USER_EXISTS";
-    case 0xC0000064: return "STATUS_NO_SUCH_USER";
-    case 0xC0000065: return "STATUS_GROUP_EXISTS";
-    case 0xC0000066: return "STATUS_NO_SUCH_GROUP";
-    case 0xC0000067: return "STATUS_MEMBER_IN_GROUP";
-    case 0xC0000068: return "STATUS_MEMBER_NOT_IN_GROUP";
-    case 0xC0000069: return "STATUS_LAST_ADMIN";
-    case 0xC000006A: return "STATUS_WRONG_PASSWORD";
-    case 0xC000006B: return "STATUS_ILL_FORMED_PASSWORD";
-    case 0xC000006C: return "STATUS_PASSWORD_RESTRICTION";
-    case 0xC000006D: return "STATUS_LOGON_FAILURE";
-    case 0xC000006E: return "STATUS_ACCOUNT_RESTRICTION";
-    case 0xC000006F: return "STATUS_INVALID_LOGON_HOURS";
-    case 0xC0000070: return "STATUS_INVALID_WORKSTATION";
-    case 0xC0000071: return "STATUS_PASSWORD_EXPIRED";
-    case 0xC0000072: return "STATUS_ACCOUNT_DISABLED";
-    case 0xC0000073: return "STATUS_NONE_MAPPED";
-    case 0xC0000074: return "STATUS_TOO_MANY_LUIDS_REQUESTED";
-    case 0xC0000075: return "STATUS_LUIDS_EXHAUSTED";
-    case 0xC0000076: return "STATUS_INVALID_SUB_AUTHORITY";
-    case 0xC0000077: return "STATUS_INVALID_ACL";
-    case 0xC0000078: return "STATUS_INVALID_SID";
-    case 0xC0000079: return "STATUS_INVALID_SECURITY_DESCR";
-    case 0xC000007A: return "STATUS_PROCEDURE_NOT_FOUND";
-    case 0xC000007B: return "STATUS_INVALID_IMAGE_FORMAT";
-    case 0xC000007C: return "STATUS_NO_TOKEN";
-    case 0xC000007D: return "STATUS_BAD_INHERITANCE_ACL";
-    case 0xC000007E: return "STATUS_RANGE_NOT_LOCKED";
-    case 0xC000007F: return "STATUS_DISK_FULL";
-    case 0xC0000080: return "STATUS_SERVER_DISABLED";
-    case 0xC0000081: return "STATUS_SERVER_NOT_DISABLED";
-    case 0xC0000082: return "STATUS_TOO_MANY_GUIDS_REQUESTED";
-    case 0xC0000083: return "STATUS_GUIDS_EXHAUSTED";
-    case 0xC0000084: return "STATUS_INVALID_ID_AUTHORITY";
-    case 0xC0000085: return "STATUS_AGENTS_EXHAUSTED";
-    case 0xC0000086: return "STATUS_INVALID_VOLUME_LABEL";
-    case 0xC0000087: return "STATUS_SECTION_NOT_EXTENDED";
-    case 0xC0000088: return "STATUS_NOT_MAPPED_DATA";
-    case 0xC0000089: return "STATUS_RESOURCE_DATA_NOT_FOUND";
-    case 0xC000008A: return "STATUS_RESOURCE_TYPE_NOT_FOUND";
-    case 0xC000008B: return "STATUS_RESOURCE_NAME_NOT_FOUND";
-    case 0xC000008C: return "STATUS_ARRAY_BOUNDS_EXCEEDED";
-    case 0xC000008D: return "STATUS_FLOAT_DENORMAL_OPERAND";
-    case 0xC000008E: return "STATUS_FLOAT_DIVIDE_BY_ZERO";
-    case 0xC000008F: return "STATUS_FLOAT_INEXACT_RESULT";
-    case 0xC0000090: return "STATUS_FLOAT_INVALID_OPERATION";
-    case 0xC0000091: return "STATUS_FLOAT_OVERFLOW";
-    case 0xC0000092: return "STATUS_FLOAT_STACK_CHECK";
-    case 0xC0000093: return "STATUS_FLOAT_UNDERFLOW";
-    case 0xC0000094: return "STATUS_INTEGER_DIVIDE_BY_ZERO";
-    case 0xC0000095: return "STATUS_INTEGER_OVERFLOW";
-    case 0xC0000096: return "STATUS_PRIVILEGED_INSTRUCTION";
-    case 0xC0000097: return "STATUS_TOO_MANY_PAGING_FILES";
-    case 0xC0000098: return "STATUS_FILE_INVALID";
-    case 0xC0000099: return "STATUS_ALLOTTED_SPACE_EXCEEDED";
-    case 0xC000009A: return "STATUS_INSUFFICIENT_RESOURCES";
-    case 0xC000009B: return "STATUS_DFS_EXIT_PATH_FOUND";
-    case 0xC000009C: return "STATUS_DEVICE_DATA_ERROR";
-    case 0xC000009D: return "STATUS_DEVICE_NOT_CONNECTED";
-    case 0xC000009E: return "STATUS_DEVICE_POWER_FAILURE";
-    case 0xC000009F: return "STATUS_FREE_VM_NOT_AT_BASE";
-    case 0xC00000A0: return "STATUS_MEMORY_NOT_ALLOCATED";
-    case 0xC00000A1: return "STATUS_WORKING_SET_QUOTA";
-    case 0xC00000A2: return "STATUS_MEDIA_WRITE_PROTECTED";
-    case 0xC00000A3: return "STATUS_DEVICE_NOT_READY";
-    case 0xC00000A4: return "STATUS_INVALID_GROUP_ATTRIBUTES";
-    case 0xC00000A5: return "STATUS_BAD_IMPERSONATION_LEVEL";
-    case 0xC00000A6: return "STATUS_CANT_OPEN_ANONYMOUS";
-    case 0xC00000A7: return "STATUS_BAD_VALIDATION_CLASS";
-    case 0xC00000A8: return "STATUS_BAD_TOKEN_TYPE";
-    case 0xC00000A9: return "STATUS_BAD_MASTER_BOOT_RECORD";
-    case 0xC00000AA: return "STATUS_INSTRUCTION_MISALIGNMENT";
-    case 0xC00000AB: return "STATUS_INSTANCE_NOT_AVAILABLE";
-    case 0xC00000AC: return "STATUS_PIPE_NOT_AVAILABLE";
-    case 0xC00000AD: return "STATUS_INVALID_PIPE_STATE";
-    case 0xC00000AE: return "STATUS_PIPE_BUSY";
-    case 0xC00000AF: return "STATUS_ILLEGAL_FUNCTION";
-    case 0xC00000B0: return "STATUS_PIPE_DISCONNECTED";
-    case 0xC00000B1: return "STATUS_PIPE_CLOSING";
-    case 0xC00000B2: return "STATUS_PIPE_CONNECTED";
-    case 0xC00000B3: return "STATUS_PIPE_LISTENING";
-    case 0xC00000B4: return "STATUS_INVALID_READ_MODE";
-    case 0xC00000B5: return "STATUS_IO_TIMEOUT";
-    case 0xC00000B6: return "STATUS_FILE_FORCED_CLOSED";
-    case 0xC00000B7: return "STATUS_PROFILING_NOT_STARTED";
-    case 0xC00000B8: return "STATUS_PROFILING_NOT_STOPPED";
-    case 0xC00000B9: return "STATUS_COULD_NOT_INTERPRET";
-    case 0xC00000BA: return "STATUS_FILE_IS_A_DIRECTORY";
-    case 0xC00000BB: return "STATUS_NOT_SUPPORTED";
-    case 0xC00000BC: return "STATUS_REMOTE_NOT_LISTENING";
-    case 0xC00000BD: return "STATUS_DUPLICATE_NAME";
-    case 0xC00000BE: return "STATUS_BAD_NETWORK_PATH";
-    case 0xC00000BF: return "STATUS_NETWORK_BUSY";
-    case 0xC00000C0: return "STATUS_DEVICE_DOES_NOT_EXIST";
-    case 0xC00000C1: return "STATUS_TOO_MANY_COMMANDS";
-    case 0xC00000C2: return "STATUS_ADAPTER_HARDWARE_ERROR";
-    case 0xC00000C3: return "STATUS_INVALID_NETWORK_RESPONSE";
-    case 0xC00000C4: return "STATUS_UNEXPECTED_NETWORK_ERROR";
-    case 0xC00000C5: return "STATUS_BAD_REMOTE_ADAPTER";
-    case 0xC00000C6: return "STATUS_PRINT_QUEUE_FULL";
-    case 0xC00000C7: return "STATUS_NO_SPOOL_SPACE";
-    case 0xC00000C8: return "STATUS_PRINT_CANCELLED";
-    case 0xC00000C9: return "STATUS_NETWORK_NAME_DELETED";
-    case 0xC00000CA: return "STATUS_NETWORK_ACCESS_DENIED";
-    case 0xC00000CB: return "STATUS_BAD_DEVICE_TYPE";
-    case 0xC00000CC: return "STATUS_BAD_NETWORK_NAME";
-    case 0xC00000CD: return "STATUS_TOO_MANY_NAMES";
-    case 0xC00000CE: return "STATUS_TOO_MANY_SESSIONS";
-    case 0xC00000CF: return "STATUS_SHARING_PAUSED";
-    case 0xC00000D0: return "STATUS_REQUEST_NOT_ACCEPTED";
-    case 0xC00000D1: return "STATUS_REDIRECTOR_PAUSED";
-    case 0xC00000D2: return "STATUS_NET_WRITE_FAULT";
-    case 0xC00000D3: return "STATUS_PROFILING_AT_LIMIT";
-    case 0xC00000D4: return "STATUS_NOT_SAME_DEVICE";
-    case 0xC00000D5: return "STATUS_FILE_RENAMED";
-    case 0xC00000D6: return "STATUS_VIRTUAL_CIRCUIT_CLOSED";
-    case 0xC00000D7: return "STATUS_NO_SECURITY_ON_OBJECT";
-    case 0xC00000D8: return "STATUS_CANT_WAIT";
-    case 0xC00000D9: return "STATUS_PIPE_EMPTY";
-    case 0xC00000DA: return "STATUS_CANT_ACCESS_DOMAIN_INFO";
-    case 0xC00000DB: return "STATUS_CANT_TERMINATE_SELF";
-    case 0xC00000DC: return "STATUS_INVALID_SERVER_STATE";
-    case 0xC00000DD: return "STATUS_INVALID_DOMAIN_STATE";
-    case 0xC00000DE: return "STATUS_INVALID_DOMAIN_ROLE";
-    case 0xC00000DF: return "STATUS_NO_SUCH_DOMAIN";
-    case 0xC00000E0: return "STATUS_DOMAIN_EXISTS";
-    case 0xC00000E1: return "STATUS_DOMAIN_LIMIT_EXCEEDED";
-    case 0xC00000E2: return "STATUS_OPLOCK_NOT_GRANTED";
-    case 0xC00000E3: return "STATUS_INVALID_OPLOCK_PROTOCOL";
-    case 0xC00000E4: return "STATUS_INTERNAL_DB_CORRUPTION";
-    case 0xC00000E5: return "STATUS_INTERNAL_ERROR";
-    case 0xC00000E6: return "STATUS_GENERIC_NOT_MAPPED";
-    case 0xC00000E7: return "STATUS_BAD_DESCRIPTOR_FORMAT";
-    case 0xC00000E8: return "STATUS_INVALID_USER_BUFFER";
-    case 0xC00000E9: return "STATUS_UNEXPECTED_IO_ERROR";
-    case 0xC00000EA: return "STATUS_UNEXPECTED_MM_CREATE_ERR";
-    case 0xC00000EB: return "STATUS_UNEXPECTED_MM_MAP_ERROR";
-    case 0xC00000EC: return "STATUS_UNEXPECTED_MM_EXTEND_ERR";
-    case 0xC00000ED: return "STATUS_NOT_LOGON_PROCESS";
-    case 0xC00000EE: return "STATUS_LOGON_SESSION_EXISTS";
-    case 0xC00000EF: return "STATUS_INVALID_PARAMETER_1";
-    case 0xC00000F0: return "STATUS_INVALID_PARAMETER_2";
-    case 0xC00000F1: return "STATUS_INVALID_PARAMETER_3";
-    case 0xC00000F2: return "STATUS_INVALID_PARAMETER_4";
-    case 0xC00000F3: return "STATUS_INVALID_PARAMETER_5";
-    case 0xC00000F4: return "STATUS_INVALID_PARAMETER_6";
-    case 0xC00000F5: return "STATUS_INVALID_PARAMETER_7";
-    case 0xC00000F6: return "STATUS_INVALID_PARAMETER_8";
-    case 0xC00000F7: return "STATUS_INVALID_PARAMETER_9";
-    case 0xC00000F8: return "STATUS_INVALID_PARAMETER_10";
-    case 0xC00000F9: return "STATUS_INVALID_PARAMETER_11";
-    case 0xC00000FA: return "STATUS_INVALID_PARAMETER_12";
-    case 0xC00000FB: return "STATUS_REDIRECTOR_NOT_STARTED";
-    case 0xC00000FC: return "STATUS_REDIRECTOR_STARTED";
-    case 0xC00000FD: return "STATUS_STACK_OVERFLOW";
-    case 0xC00000FE: return "STATUS_NO_SUCH_PACKAGE";
-    case 0xC00000FF: return "STATUS_BAD_FUNCTION_TABLE";
-    case 0xC0000100: return "STATUS_VARIABLE_NOT_FOUND";
-    case 0xC0000101: return "STATUS_DIRECTORY_NOT_EMPTY";
-    case 0xC0000102: return "STATUS_FILE_CORRUPT_ERROR";
-    case 0xC0000103: return "STATUS_NOT_A_DIRECTORY";
-    case 0xC0000104: return "STATUS_BAD_LOGON_SESSION_STATE";
-    case 0xC0000105: return "STATUS_LOGON_SESSION_COLLISION";
-    case 0xC0000106: return "STATUS_NAME_TOO_LONG";
-    case 0xC0000107: return "STATUS_FILES_OPEN";
-    case 0xC0000108: return "STATUS_CONNECTION_IN_USE";
-    case 0xC0000109: return "STATUS_MESSAGE_NOT_FOUND";
-    case 0xC000010A: return "STATUS_PROCESS_IS_TERMINATING";
-    case 0xC000010B: return "STATUS_INVALID_LOGON_TYPE";
-    case 0xC000010C: return "STATUS_NO_GUID_TRANSLATION";
-    case 0xC000010D: return "STATUS_CANNOT_IMPERSONATE";
-    case 0xC000010E: return "STATUS_IMAGE_ALREADY_LOADED";
-    case 0xC000010F: return "STATUS_ABIOS_NOT_PRESENT";
-    case 0xC0000110: return "STATUS_ABIOS_LID_NOT_EXIST";
-    case 0xC0000111: return "STATUS_ABIOS_LID_ALREADY_OWNED";
-    case 0xC0000112: return "STATUS_ABIOS_NOT_LID_OWNER";
-    case 0xC0000113: return "STATUS_ABIOS_INVALID_COMMAND";
-    case 0xC0000114: return "STATUS_ABIOS_INVALID_LID";
-    case 0xC0000115: return "STATUS_ABIOS_SELECTOR_NOT_AVAILABLE";
-    case 0xC0000116: return "STATUS_ABIOS_INVALID_SELECTOR";
-    case 0xC0000117: return "STATUS_NO_LDT";
-    case 0xC0000118: return "STATUS_INVALID_LDT_SIZE";
-    case 0xC0000119: return "STATUS_INVALID_LDT_OFFSET";
-    case 0xC000011A: return "STATUS_INVALID_LDT_DESCRIPTOR";
-    case 0xC000011B: return "STATUS_INVALID_IMAGE_NE_FORMAT";
-    case 0xC000011C: return "STATUS_RXACT_INVALID_STATE";
-    case 0xC000011D: return "STATUS_RXACT_COMMIT_FAILURE";
-    case 0xC000011E: return "STATUS_MAPPED_FILE_SIZE_ZERO";
-    case 0xC000011F: return "STATUS_TOO_MANY_OPENED_FILES";
-    case 0xC0000120: return "STATUS_CANCELLED";
-    case 0xC0000121: return "STATUS_CANNOT_DELETE";
-    case 0xC0000122: return "STATUS_INVALID_COMPUTER_NAME";
-    case 0xC0000123: return "STATUS_FILE_DELETED";
-    case 0xC0000124: return "STATUS_SPECIAL_ACCOUNT";
-    case 0xC0000125: return "STATUS_SPECIAL_GROUP";
-    case 0xC0000126: return "STATUS_SPECIAL_USER";
-    case 0xC0000127: return "STATUS_MEMBERS_PRIMARY_GROUP";
-    case 0xC0000128: return "STATUS_FILE_CLOSED";
-    case 0xC0000129: return "STATUS_TOO_MANY_THREADS";
-    case 0xC000012A: return "STATUS_THREAD_NOT_IN_PROCESS";
-    case 0xC000012B: return "STATUS_TOKEN_ALREADY_IN_USE";
-    case 0xC000012C: return "STATUS_PAGEFILE_QUOTA_EXCEEDED";
-    case 0xC000012D: return "STATUS_COMMITMENT_LIMIT";
-    case 0xC000012E: return "STATUS_INVALID_IMAGE_LE_FORMAT";
-    case 0xC000012F: return "STATUS_INVALID_IMAGE_NOT_MZ";
-    case 0xC0000130: return "STATUS_INVALID_IMAGE_PROTECT";
-    case 0xC0000131: return "STATUS_INVALID_IMAGE_WIN_16";
-    case 0xC0000132: return "STATUS_LOGON_SERVER_CONFLICT";
-    case 0xC0000133: return "STATUS_TIME_DIFFERENCE_AT_DC";
-    case 0xC0000134: return "STATUS_SYNCHRONIZATION_REQUIRED";
-    case 0xC0000135: return "STATUS_DLL_NOT_FOUND";
-    case 0xC0000136: return "STATUS_OPEN_FAILED";
-    case 0xC0000137: return "STATUS_IO_PRIVILEGE_FAILED";
-    case 0xC0000138: return "STATUS_ORDINAL_NOT_FOUND";
-    case 0xC0000139: return "STATUS_ENTRYPOINT_NOT_FOUND";
-    case 0xC000013A: return "STATUS_CONTROL_C_EXIT";
-    case 0xC000013B: return "STATUS_LOCAL_DISCONNECT";
-    case 0xC000013C: return "STATUS_REMOTE_DISCONNECT";
-    case 0xC000013D: return "STATUS_REMOTE_RESOURCES";
-    case 0xC000013E: return "STATUS_LINK_FAILED";
-    case 0xC000013F: return "STATUS_LINK_TIMEOUT";
-    case 0xC0000140: return "STATUS_INVALID_CONNECTION";
-    case 0xC0000141: return "STATUS_INVALID_ADDRESS";
-    case 0xC0000142: return "STATUS_DLL_INIT_FAILED";
-    case 0xC0000143: return "STATUS_MISSING_SYSTEMFILE";
-    case 0xC0000144: return "STATUS_UNHANDLED_EXCEPTION";
-    case 0xC0000145: return "STATUS_APP_INIT_FAILURE";
-    case 0xC0000146: return "STATUS_PAGEFILE_CREATE_FAILED";
-    case 0xC0000147: return "STATUS_NO_PAGEFILE";
-    case 0xC0000148: return "STATUS_INVALID_LEVEL";
-    case 0xC0000149: return "STATUS_WRONG_PASSWORD_CORE";
-    case 0xC000014A: return "STATUS_ILLEGAL_FLOAT_CONTEXT";
-    case 0xC000014B: return "STATUS_PIPE_BROKEN";
-    case 0xC000014C: return "STATUS_REGISTRY_CORRUPT";
-    case 0xC000014D: return "STATUS_REGISTRY_IO_FAILED";
-    case 0xC000014E: return "STATUS_NO_EVENT_PAIR";
-    case 0xC000014F: return "STATUS_UNRECOGNIZED_VOLUME";
-    case 0xC0000150: return "STATUS_SERIAL_NO_DEVICE_INITED";
-    case 0xC0000151: return "STATUS_NO_SUCH_ALIAS";
-    case 0xC0000152: return "STATUS_MEMBER_NOT_IN_ALIAS";
-    case 0xC0000153: return "STATUS_MEMBER_IN_ALIAS";
-    case 0xC0000154: return "STATUS_ALIAS_EXISTS";
-    case 0xC0000155: return "STATUS_LOGON_NOT_GRANTED";
-    case 0xC0000156: return "STATUS_TOO_MANY_SECRETS";
-    case 0xC0000157: return "STATUS_SECRET_TOO_LONG";
-    case 0xC0000158: return "STATUS_INTERNAL_DB_ERROR";
-    case 0xC0000159: return "STATUS_FULLSCREEN_MODE";
-    case 0xC000015A: return "STATUS_TOO_MANY_CONTEXT_IDS";
-    case 0xC000015B: return "STATUS_LOGON_TYPE_NOT_GRANTED";
-    case 0xC000015C: return "STATUS_NOT_REGISTRY_FILE";
-    case 0xC000015D: return "STATUS_NT_CROSS_ENCRYPTION_REQUIRED";
-    case 0xC000015E: return "STATUS_DOMAIN_CTRLR_CONFIG_ERROR";
-    case 0xC000015F: return "STATUS_FT_MISSING_MEMBER";
-    case 0xC0000160: return "STATUS_ILL_FORMED_SERVICE_ENTRY";
-    case 0xC0000161: return "STATUS_ILLEGAL_CHARACTER";
-    case 0xC0000162: return "STATUS_UNMAPPABLE_CHARACTER";
-    case 0xC0000163: return "STATUS_UNDEFINED_CHARACTER";
-    case 0xC0000164: return "STATUS_FLOPPY_VOLUME";
-    case 0xC0000165: return "STATUS_FLOPPY_ID_MARK_NOT_FOUND";
-    case 0xC0000166: return "STATUS_FLOPPY_WRONG_CYLINDER";
-    case 0xC0000167: return "STATUS_FLOPPY_UNKNOWN_ERROR";
-    case 0xC0000168: return "STATUS_FLOPPY_BAD_REGISTERS";
-    case 0xC0000169: return "STATUS_DISK_RECALIBRATE_FAILED";
-    case 0xC000016A: return "STATUS_DISK_OPERATION_FAILED";
-    case 0xC000016B: return "STATUS_DISK_RESET_FAILED";
-    case 0xC000016C: return "STATUS_SHARED_IRQ_BUSY";
-    case 0xC000016D: return "STATUS_FT_ORPHANING";
-    case 0xC000016E: return "STATUS_BIOS_FAILED_TO_CONNECT_INTERRUPT";
-    case 0xC0000172: return "STATUS_PARTITION_FAILURE";
-    case 0xC0000173: return "STATUS_INVALID_BLOCK_LENGTH";
-    case 0xC0000174: return "STATUS_DEVICE_NOT_PARTITIONED";
-    case 0xC0000175: return "STATUS_UNABLE_TO_LOCK_MEDIA";
-    case 0xC0000176: return "STATUS_UNABLE_TO_UNLOAD_MEDIA";
-    case 0xC0000177: return "STATUS_EOM_OVERFLOW";
-    case 0xC0000178: return "STATUS_NO_MEDIA";
-    case 0xC000017A: return "STATUS_NO_SUCH_MEMBER";
-    case 0xC000017B: return "STATUS_INVALID_MEMBER";
-    case 0xC000017C: return "STATUS_KEY_DELETED";
-    case 0xC000017D: return "STATUS_NO_LOG_SPACE";
-    case 0xC000017E: return "STATUS_TOO_MANY_SIDS";
-    case 0xC000017F: return "STATUS_LM_CROSS_ENCRYPTION_REQUIRED";
-    case 0xC0000180: return "STATUS_KEY_HAS_CHILDREN";
-    case 0xC0000181: return "STATUS_CHILD_MUST_BE_VOLATILE";
-    case 0xC0000182: return "STATUS_DEVICE_CONFIGURATION_ERROR";
-    case 0xC0000183: return "STATUS_DRIVER_INTERNAL_ERROR";
-    case 0xC0000184: return "STATUS_INVALID_DEVICE_STATE";
-    case 0xC0000185: return "STATUS_IO_DEVICE_ERROR";
-    case 0xC0000186: return "STATUS_DEVICE_PROTOCOL_ERROR";
-    case 0xC0000187: return "STATUS_BACKUP_CONTROLLER";
-    case 0xC0000188: return "STATUS_LOG_FILE_FULL";
-    case 0xC0000189: return "STATUS_TOO_LATE";
-    case 0xC000018A: return "STATUS_NO_TRUST_LSA_SECRET";
-    case 0xC000018B: return "STATUS_NO_TRUST_SAM_ACCOUNT";
-    case 0xC000018C: return "STATUS_TRUSTED_DOMAIN_FAILURE";
-    case 0xC000018D: return "STATUS_TRUSTED_RELATIONSHIP_FAILURE";
-    case 0xC000018E: return "STATUS_EVENTLOG_FILE_CORRUPT";
-    case 0xC000018F: return "STATUS_EVENTLOG_CANT_START";
-    case 0xC0000190: return "STATUS_TRUST_FAILURE";
-    case 0xC0000191: return "STATUS_MUTANT_LIMIT_EXCEEDED";
-    case 0xC0000192: return "STATUS_NETLOGON_NOT_STARTED";
-    case 0xC0000193: return "STATUS_ACCOUNT_EXPIRED";
-    case 0xC0000194: return "STATUS_POSSIBLE_DEADLOCK";
-    case 0xC0000195: return "STATUS_NETWORK_CREDENTIAL_CONFLICT";
-    case 0xC0000196: return "STATUS_REMOTE_SESSION_LIMIT";
-    case 0xC0000197: return "STATUS_EVENTLOG_FILE_CHANGED";
-    case 0xC0000198: return "STATUS_NOLOGON_INTERDOMAIN_TRUST_ACCOUNT";
-    case 0xC0000199: return "STATUS_NOLOGON_WORKSTATION_TRUST_ACCOUNT";
-    case 0xC000019A: return "STATUS_NOLOGON_SERVER_TRUST_ACCOUNT";
-    case 0xC000019B: return "STATUS_DOMAIN_TRUST_INCONSISTENT";
-    case 0xC000019C: return "STATUS_FS_DRIVER_REQUIRED";
-    case 0xC0000202: return "STATUS_NO_USER_SESSION_KEY";
-    case 0xC0000203: return "STATUS_USER_SESSION_DELETED";
-    case 0xC0000204: return "STATUS_RESOURCE_LANG_NOT_FOUND";
-    case 0xC0000205: return "STATUS_INSUFF_SERVER_RESOURCES";
-    case 0xC0000206: return "STATUS_INVALID_BUFFER_SIZE";
-    case 0xC0000207: return "STATUS_INVALID_ADDRESS_COMPONENT";
-    case 0xC0000208: return "STATUS_INVALID_ADDRESS_WILDCARD";
-    case 0xC0000209: return "STATUS_TOO_MANY_ADDRESSES";
-    case 0xC000020A: return "STATUS_ADDRESS_ALREADY_EXISTS";
-    case 0xC000020B: return "STATUS_ADDRESS_CLOSED";
-    case 0xC000020C: return "STATUS_CONNECTION_DISCONNECTED";
-    case 0xC000020D: return "STATUS_CONNECTION_RESET";
-    case 0xC000020E: return "STATUS_TOO_MANY_NODES";
-    case 0xC000020F: return "STATUS_TRANSACTION_ABORTED";
-    case 0xC0000210: return "STATUS_TRANSACTION_TIMED_OUT";
-    case 0xC0000211: return "STATUS_TRANSACTION_NO_RELEASE";
-    case 0xC0000212: return "STATUS_TRANSACTION_NO_MATCH";
-    case 0xC0000213: return "STATUS_TRANSACTION_RESPONDED";
-    case 0xC0000214: return "STATUS_TRANSACTION_INVALID_ID";
-    case 0xC0000215: return "STATUS_TRANSACTION_INVALID_TYPE";
-    case 0xC0000216: return "STATUS_NOT_SERVER_SESSION";
-    case 0xC0000217: return "STATUS_NOT_CLIENT_SESSION";
-    case 0xC0000218: return "STATUS_CANNOT_LOAD_REGISTRY_FILE";
-    case 0xC0000219: return "STATUS_DEBUG_ATTACH_FAILED";
-    case 0xC000021A: return "STATUS_SYSTEM_PROCESS_TERMINATED";
-    case 0xC000021B: return "STATUS_DATA_NOT_ACCEPTED";
-    case 0xC000021C: return "STATUS_NO_BROWSER_SERVERS_FOUND";
-    case 0xC000021D: return "STATUS_VDM_HARD_ERROR";
-    case 0xC000021E: return "STATUS_DRIVER_CANCEL_TIMEOUT";
-    case 0xC000021F: return "STATUS_REPLY_MESSAGE_MISMATCH";
-    case 0xC0000220: return "STATUS_MAPPED_ALIGNMENT";
-    case 0xC0000221: return "STATUS_IMAGE_CHECKSUM_MISMATCH";
-    case 0xC0000222: return "STATUS_LOST_WRITEBEHIND_DATA";
-    case 0xC0000223: return "STATUS_CLIENT_SERVER_PARAMETERS_INVALID";
-    case 0xC0000224: return "STATUS_PASSWORD_MUST_CHANGE";
-    case 0xC0000225: return "STATUS_NOT_FOUND";
-    case 0xC0000226: return "STATUS_NOT_TINY_STREAM";
-    case 0xC0000227: return "STATUS_RECOVERY_FAILURE";
-    case 0xC0000228: return "STATUS_STACK_OVERFLOW_READ";
-    case 0xC0000229: return "STATUS_FAIL_CHECK";
-    case 0xC000022A: return "STATUS_DUPLICATE_OBJECTID";
-    case 0xC000022B: return "STATUS_OBJECTID_EXISTS";
-    case 0xC000022C: return "STATUS_CONVERT_TO_LARGE";
-    case 0xC000022D: return "STATUS_RETRY";
-    case 0xC000022E: return "STATUS_FOUND_OUT_OF_SCOPE";
-    case 0xC000022F: return "STATUS_ALLOCATE_BUCKET";
-    case 0xC0000230: return "STATUS_PROPSET_NOT_FOUND";
-    case 0xC0000231: return "STATUS_MARSHALL_OVERFLOW";
-    case 0xC0000232: return "STATUS_INVALID_VARIANT";
-    case 0xC0000233: return "STATUS_DOMAIN_CONTROLLER_NOT_FOUND";
-    case 0xC0000234: return "STATUS_ACCOUNT_LOCKED_OUT";
-    case 0xC0000235: return "STATUS_HANDLE_NOT_CLOSABLE";
-    case 0xC0000236: return "STATUS_CONNECTION_REFUSED";
-    case 0xC0000237: return "STATUS_GRACEFUL_DISCONNECT";
-    case 0xC0000238: return "STATUS_ADDRESS_ALREADY_ASSOCIATED";
-    case 0xC0000239: return "STATUS_ADDRESS_NOT_ASSOCIATED";
-    case 0xC000023A: return "STATUS_CONNECTION_INVALID";
-    case 0xC000023B: return "STATUS_CONNECTION_ACTIVE";
-    case 0xC000023C: return "STATUS_NETWORK_UNREACHABLE";
-    case 0xC000023D: return "STATUS_HOST_UNREACHABLE";
-    case 0xC000023E: return "STATUS_PROTOCOL_UNREACHABLE";
-    case 0xC000023F: return "STATUS_PORT_UNREACHABLE";
-    case 0xC0000240: return "STATUS_REQUEST_ABORTED";
-    case 0xC0000241: return "STATUS_CONNECTION_ABORTED";
-    case 0xC0000242: return "STATUS_BAD_COMPRESSION_BUFFER";
-    case 0xC0000243: return "STATUS_USER_MAPPED_FILE";
-    case 0xC0000244: return "STATUS_AUDIT_FAILED";
-    case 0xC0000245: return "STATUS_TIMER_RESOLUTION_NOT_SET";
-    case 0xC0000246: return "STATUS_CONNECTION_COUNT_LIMIT";
-    case 0xC0000247: return "STATUS_LOGIN_TIME_RESTRICTION";
-    case 0xC0000248: return "STATUS_LOGIN_WKSTA_RESTRICTION";
-    case 0xC0000249: return "STATUS_IMAGE_MP_UP_MISMATCH";
-    case 0xC0000250: return "STATUS_INSUFFICIENT_LOGON_INFO";
-    case 0xC0000251: return "STATUS_BAD_DLL_ENTRYPOINT";
-    case 0xC0000252: return "STATUS_BAD_SERVICE_ENTRYPOINT";
-    case 0xC0000253: return "STATUS_LPC_REPLY_LOST";
-    case 0xC0000254: return "STATUS_IP_ADDRESS_CONFLICT1";
-    case 0xC0000255: return "STATUS_IP_ADDRESS_CONFLICT2";
-    case 0xC0000256: return "STATUS_REGISTRY_QUOTA_LIMIT";
-    case 0xC0000257: return "STATUS_PATH_NOT_COVERED";
-    case 0xC0000258: return "STATUS_NO_CALLBACK_ACTIVE";
-    case 0xC0000259: return "STATUS_LICENSE_QUOTA_EXCEEDED";
-    case 0xC000025A: return "STATUS_PWD_TOO_SHORT";
-    case 0xC000025B: return "STATUS_PWD_TOO_RECENT";
-    case 0xC000025C: return "STATUS_PWD_HISTORY_CONFLICT";
-    case 0xC000025E: return "STATUS_PLUGPLAY_NO_DEVICE";
-    case 0xC000025F: return "STATUS_UNSUPPORTED_COMPRESSION";
-    case 0xC0000260: return "STATUS_INVALID_HW_PROFILE";
-    case 0xC0000261: return "STATUS_INVALID_PLUGPLAY_DEVICE_PATH";
-    case 0xC0000262: return "STATUS_DRIVER_ORDINAL_NOT_FOUND";
-    case 0xC0000263: return "STATUS_DRIVER_ENTRYPOINT_NOT_FOUND";
-    case 0xC0000264: return "STATUS_RESOURCE_NOT_OWNED";
-    case 0xC0000265: return "STATUS_TOO_MANY_LINKS";
-    case 0xC0000266: return "STATUS_QUOTA_LIST_INCONSISTENT";
-    case 0xC0000267: return "STATUS_FILE_IS_OFFLINE";
-    case 0xC0000268: return "STATUS_EVALUATION_EXPIRATION";
-    case 0xC0000269: return "STATUS_ILLEGAL_DLL_RELOCATION";
-    case 0xC000026A: return "STATUS_LICENSE_VIOLATION";
-    case 0xC000026B: return "STATUS_DLL_INIT_FAILED_LOGOFF";
-    case 0xC000026C: return "STATUS_DRIVER_UNABLE_TO_LOAD";
-    case 0xC000026D: return "STATUS_DFS_UNAVAILABLE";
-    case 0xC000026E: return "STATUS_VOLUME_DISMOUNTED";
-    case 0xC000026F: return "STATUS_WX86_INTERNAL_ERROR";
-    case 0xC0000270: return "STATUS_WX86_FLOAT_STACK_CHECK";
-    case 0xC0000271: return "STATUS_VALIDATE_CONTINUE";
-    case 0xC0000272: return "STATUS_NO_MATCH";
-    case 0xC0000273: return "STATUS_NO_MORE_MATCHES";
-    case 0xC0000275: return "STATUS_NOT_A_REPARSE_POINT";
-    case 0xC0000276: return "STATUS_IO_REPARSE_TAG_INVALID";
-    case 0xC0000277: return "STATUS_IO_REPARSE_TAG_MISMATCH";
-    case 0xC0000278: return "STATUS_IO_REPARSE_DATA_INVALID";
-    case 0xC0000279: return "STATUS_IO_REPARSE_TAG_NOT_HANDLED";
-    case 0xC0000280: return "STATUS_REPARSE_POINT_NOT_RESOLVED";
-    case 0xC0000281: return "STATUS_DIRECTORY_IS_A_REPARSE_POINT";
-    case 0xC0000282: return "STATUS_RANGE_LIST_CONFLICT";
-    case 0xC0000283: return "STATUS_SOURCE_ELEMENT_EMPTY";
-    case 0xC0000284: return "STATUS_DESTINATION_ELEMENT_FULL";
-    case 0xC0000285: return "STATUS_ILLEGAL_ELEMENT_ADDRESS";
-    case 0xC0000286: return "STATUS_MAGAZINE_NOT_PRESENT";
-    case 0xC0000287: return "STATUS_REINITIALIZATION_NEEDED";
-    case 0x80000288: return "STATUS_DEVICE_REQUIRES_CLEANING";
-    case 0x80000289: return "STATUS_DEVICE_DOOR_OPEN";
-    case 0xC000028A: return "STATUS_ENCRYPTION_FAILED";
-    case 0xC000028B: return "STATUS_DECRYPTION_FAILED";
-    case 0xC000028C: return "STATUS_RANGE_NOT_FOUND";
-    case 0xC000028D: return "STATUS_NO_RECOVERY_POLICY";
-    case 0xC000028E: return "STATUS_NO_EFS";
-    case 0xC000028F: return "STATUS_WRONG_EFS";
-    case 0xC0000290: return "STATUS_NO_USER_KEYS";
-    case 0xC0000291: return "STATUS_FILE_NOT_ENCRYPTED";
-    case 0xC0000292: return "STATUS_NOT_EXPORT_FORMAT";
-    case 0xC0000293: return "STATUS_FILE_ENCRYPTED";
-    case 0x40000294: return "STATUS_WAKE_SYSTEM";
-    case 0xC0000295: return "STATUS_WMI_GUID_NOT_FOUND";
-    case 0xC0000296: return "STATUS_WMI_INSTANCE_NOT_FOUND";
-    case 0xC0000297: return "STATUS_WMI_ITEMID_NOT_FOUND";
-    case 0xC0000298: return "STATUS_WMI_TRY_AGAIN";
-    case 0xC0000299: return "STATUS_SHARED_POLICY";
-    case 0xC000029A: return "STATUS_POLICY_OBJECT_NOT_FOUND";
-    case 0xC000029B: return "STATUS_POLICY_ONLY_IN_DS";
-    case 0xC000029C: return "STATUS_VOLUME_NOT_UPGRADED";
-    case 0xC000029D: return "STATUS_REMOTE_STORAGE_NOT_ACTIVE";
-    case 0xC000029E: return "STATUS_REMOTE_STORAGE_MEDIA_ERROR";
-    case 0xC000029F: return "STATUS_NO_TRACKING_SERVICE";
-    case 0xC00002A0: return "STATUS_SERVER_SID_MISMATCH";
-    case 0xC00002A1: return "STATUS_DS_NO_ATTRIBUTE_OR_VALUE";
-    case 0xC00002A2: return "STATUS_DS_INVALID_ATTRIBUTE_SYNTAX";
-    case 0xC00002A3: return "STATUS_DS_ATTRIBUTE_TYPE_UNDEFINED";
-    case 0xC00002A4: return "STATUS_DS_ATTRIBUTE_OR_VALUE_EXISTS";
-    case 0xC00002A5: return "STATUS_DS_BUSY";
-    case 0xC00002A6: return "STATUS_DS_UNAVAILABLE";
-    case 0xC00002A7: return "STATUS_DS_NO_RIDS_ALLOCATED";
-    case 0xC00002A8: return "STATUS_DS_NO_MORE_RIDS";
-    case 0xC00002A9: return "STATUS_DS_INCORRECT_ROLE_OWNER";
-    case 0xC00002AA: return "STATUS_DS_RIDMGR_INIT_ERROR";
-    case 0xC00002AB: return "STATUS_DS_OBJ_CLASS_VIOLATION";
-    case 0xC00002AC: return "STATUS_DS_CANT_ON_NON_LEAF";
-    case 0xC00002AD: return "STATUS_DS_CANT_ON_RDN";
-    case 0xC00002AE: return "STATUS_DS_CANT_MOD_OBJ_CLASS";
-    case 0xC00002AF: return "STATUS_DS_CROSS_DOM_MOVE_FAILED";
-    case 0xC00002B0: return "STATUS_DS_GC_NOT_AVAILABLE";
-    case 0xC00002B1: return "STATUS_DIRECTORY_SERVICE_REQUIRED";
-    case 0xC00002B2: return "STATUS_REPARSE_ATTRIBUTE_CONFLICT";
-    case 0xC00002B3: return "STATUS_CANT_ENABLE_DENY_ONLY";
-    case 0xC00002B4: return "STATUS_FLOAT_MULTIPLE_FAULTS";
-    case 0xC00002B5: return "STATUS_FLOAT_MULTIPLE_TRAPS";
-    case 0xC00002B6: return "STATUS_DEVICE_REMOVED";
-    case 0xC00002B7: return "STATUS_JOURNAL_DELETE_IN_PROGRESS";
-    case 0xC00002B8: return "STATUS_JOURNAL_NOT_ACTIVE";
-    case 0xC00002B9: return "STATUS_NOINTERFACE";
-    case 0xC00002C1: return "STATUS_DS_ADMIN_LIMIT_EXCEEDED";
-    case 0xC00002C2: return "STATUS_DRIVER_FAILED_SLEEP";
-    case 0xC00002C3: return "STATUS_MUTUAL_AUTHENTICATION_FAILED";
-    case 0xC00002C4: return "STATUS_CORRUPT_SYSTEM_FILE";
-    case 0xC00002C5: return "STATUS_DATATYPE_MISALIGNMENT_ERROR";
-    case 0xC00002C6: return "STATUS_WMI_READ_ONLY";
-    case 0xC00002C7: return "STATUS_WMI_SET_FAILURE";
-    case 0xC00002C8: return "STATUS_COMMITMENT_MINIMUM";
-    case 0xC00002C9: return "STATUS_REG_NAT_CONSUMPTION";
-    case 0xC00002CA: return "STATUS_TRANSPORT_FULL";
-    case 0xC00002CB: return "STATUS_DS_SAM_INIT_FAILURE";
-    case 0xC00002CC: return "STATUS_ONLY_IF_CONNECTED";
-    case 0xC00002CD: return "STATUS_DS_SENSITIVE_GROUP_VIOLATION";
-    case 0xC00002CE: return "STATUS_PNP_RESTART_ENUMERATION";
-    case 0xC00002CF: return "STATUS_JOURNAL_ENTRY_DELETED";
-    case 0xC00002D0: return "STATUS_DS_CANT_MOD_PRIMARYGROUPID";
-    case 0xC00002D1: return "STATUS_SYSTEM_IMAGE_BAD_SIGNATURE";
-    case 0xC00002D2: return "STATUS_PNP_REBOOT_REQUIRED";
-    case 0xC00002D3: return "STATUS_POWER_STATE_INVALID";
-    case 0xC00002D4: return "STATUS_DS_INVALID_GROUP_TYPE";
-    case 0xC00002D5: return "STATUS_DS_NO_NEST_GLOBALGROUP_IN_MIXEDDOMAIN";
-    case 0xC00002D6: return "STATUS_DS_NO_NEST_LOCALGROUP_IN_MIXEDDOMAIN";
-    case 0xC00002D7: return "STATUS_DS_GLOBAL_CANT_HAVE_LOCAL_MEMBER";
-    case 0xC00002D8: return "STATUS_DS_GLOBAL_CANT_HAVE_UNIVERSAL_MEMBER";
-    case 0xC00002D9: return "STATUS_DS_UNIVERSAL_CANT_HAVE_LOCAL_MEMBER";
-    case 0xC00002DA: return "STATUS_DS_GLOBAL_CANT_HAVE_CROSSDOMAIN_MEMBER";
-    case 0xC00002DB: return "STATUS_DS_LOCAL_CANT_HAVE_CROSSDOMAIN_LOCAL_MEMBER";
-    case 0xC00002DC: return "STATUS_DS_HAVE_PRIMARY_MEMBERS";
-    case 0xC00002DD: return "STATUS_WMI_NOT_SUPPORTED";
-    case 0xC00002DE: return "STATUS_INSUFFICIENT_POWER";
-    case 0xC00002DF: return "STATUS_SAM_NEED_BOOTKEY_PASSWORD";
-    case 0xC00002E0: return "STATUS_SAM_NEED_BOOTKEY_FLOPPY";
-    case 0xC00002E1: return "STATUS_DS_CANT_START";
-    case 0xC00002E2: return "STATUS_DS_INIT_FAILURE";
-    case 0xC00002E3: return "STATUS_SAM_INIT_FAILURE";
-    case 0xC00002E4: return "STATUS_DS_GC_REQUIRED";
-    case 0xC00002E5: return "STATUS_DS_LOCAL_MEMBER_OF_LOCAL_ONLY";
-    case 0xC00002E6: return "STATUS_DS_NO_FPO_IN_UNIVERSAL_GROUPS";
-    case 0xC00002E7: return "STATUS_DS_MACHINE_ACCOUNT_QUOTA_EXCEEDED";
-    case 0xC00002E8: return "STATUS_MULTIPLE_FAULT_VIOLATION";
-    case 0xC0000300: return "STATUS_NOT_SUPPORTED_ON_SBS";
-    case 0xC0009898: return "STATUS_WOW_ASSERTION";
-    case 0xC0010001: return "DBG_NO_STATE_CHANGE";
-    case 0xC0010002: return "DBG_APP_NOT_IDLE";
-    case 0xC0020001: return "RPC_NT_INVALID_STRING_BINDING";
-    case 0xC0020002: return "RPC_NT_WRONG_KIND_OF_BINDING";
-    case 0xC0020003: return "RPC_NT_INVALID_BINDING";
-    case 0xC0020004: return "RPC_NT_PROTSEQ_NOT_SUPPORTED";
-    case 0xC0020005: return "RPC_NT_INVALID_RPC_PROTSEQ";
-    case 0xC0020006: return "RPC_NT_INVALID_STRING_UUID";
-    case 0xC0020007: return "RPC_NT_INVALID_ENDPOINT_FORMAT";
-    case 0xC0020008: return "RPC_NT_INVALID_NET_ADDR";
-    case 0xC0020009: return "RPC_NT_NO_ENDPOINT_FOUND";
-    case 0xC002000A: return "RPC_NT_INVALID_TIMEOUT";
-    case 0xC002000B: return "RPC_NT_OBJECT_NOT_FOUND";
-    case 0xC002000C: return "RPC_NT_ALREADY_REGISTERED";
-    case 0xC002000D: return "RPC_NT_TYPE_ALREADY_REGISTERED";
-    case 0xC002000E: return "RPC_NT_ALREADY_LISTENING";
-    case 0xC002000F: return "RPC_NT_NO_PROTSEQS_REGISTERED";
-    case 0xC0020010: return "RPC_NT_NOT_LISTENING";
-    case 0xC0020011: return "RPC_NT_UNKNOWN_MGR_TYPE";
-    case 0xC0020012: return "RPC_NT_UNKNOWN_IF";
-    case 0xC0020013: return "RPC_NT_NO_BINDINGS";
-    case 0xC0020014: return "RPC_NT_NO_PROTSEQS";
-    case 0xC0020015: return "RPC_NT_CANT_CREATE_ENDPOINT";
-    case 0xC0020016: return "RPC_NT_OUT_OF_RESOURCES";
-    case 0xC0020017: return "RPC_NT_SERVER_UNAVAILABLE";
-    case 0xC0020018: return "RPC_NT_SERVER_TOO_BUSY";
-    case 0xC0020019: return "RPC_NT_INVALID_NETWORK_OPTIONS";
-    case 0xC002001A: return "RPC_NT_NO_CALL_ACTIVE";
-    case 0xC002001B: return "RPC_NT_CALL_FAILED";
-    case 0xC002001C: return "RPC_NT_CALL_FAILED_DNE";
-    case 0xC002001D: return "RPC_NT_PROTOCOL_ERROR";
-    case 0xC002001F: return "RPC_NT_UNSUPPORTED_TRANS_SYN";
-    case 0xC0020021: return "RPC_NT_UNSUPPORTED_TYPE";
-    case 0xC0020022: return "RPC_NT_INVALID_TAG";
-    case 0xC0020023: return "RPC_NT_INVALID_BOUND";
-    case 0xC0020024: return "RPC_NT_NO_ENTRY_NAME";
-    case 0xC0020025: return "RPC_NT_INVALID_NAME_SYNTAX";
-    case 0xC0020026: return "RPC_NT_UNSUPPORTED_NAME_SYNTAX";
-    case 0xC0020028: return "RPC_NT_UUID_NO_ADDRESS";
-    case 0xC0020029: return "RPC_NT_DUPLICATE_ENDPOINT";
-    case 0xC002002A: return "RPC_NT_UNKNOWN_AUTHN_TYPE";
-    case 0xC002002B: return "RPC_NT_MAX_CALLS_TOO_SMALL";
-    case 0xC002002C: return "RPC_NT_STRING_TOO_LONG";
-    case 0xC002002D: return "RPC_NT_PROTSEQ_NOT_FOUND";
-    case 0xC002002E: return "RPC_NT_PROCNUM_OUT_OF_RANGE";
-    case 0xC002002F: return "RPC_NT_BINDING_HAS_NO_AUTH";
-    case 0xC0020030: return "RPC_NT_UNKNOWN_AUTHN_SERVICE";
-    case 0xC0020031: return "RPC_NT_UNKNOWN_AUTHN_LEVEL";
-    case 0xC0020032: return "RPC_NT_INVALID_AUTH_IDENTITY";
-    case 0xC0020033: return "RPC_NT_UNKNOWN_AUTHZ_SERVICE";
-    case 0xC0020034: return "EPT_NT_INVALID_ENTRY";
-    case 0xC0020035: return "EPT_NT_CANT_PERFORM_OP";
-    case 0xC0020036: return "EPT_NT_NOT_REGISTERED";
-    case 0xC0020037: return "RPC_NT_NOTHING_TO_EXPORT";
-    case 0xC0020038: return "RPC_NT_INCOMPLETE_NAME";
-    case 0xC0020039: return "RPC_NT_INVALID_VERS_OPTION";
-    case 0xC002003A: return "RPC_NT_NO_MORE_MEMBERS";
-    case 0xC002003B: return "RPC_NT_NOT_ALL_OBJS_UNEXPORTED";
-    case 0xC002003C: return "RPC_NT_INTERFACE_NOT_FOUND";
-    case 0xC002003D: return "RPC_NT_ENTRY_ALREADY_EXISTS";
-    case 0xC002003E: return "RPC_NT_ENTRY_NOT_FOUND";
-    case 0xC002003F: return "RPC_NT_NAME_SERVICE_UNAVAILABLE";
-    case 0xC0020040: return "RPC_NT_INVALID_NAF_ID";
-    case 0xC0020041: return "RPC_NT_CANNOT_SUPPORT";
-    case 0xC0020042: return "RPC_NT_NO_CONTEXT_AVAILABLE";
-    case 0xC0020043: return "RPC_NT_INTERNAL_ERROR";
-    case 0xC0020044: return "RPC_NT_ZERO_DIVIDE";
-    case 0xC0020045: return "RPC_NT_ADDRESS_ERROR";
-    case 0xC0020046: return "RPC_NT_FP_DIV_ZERO";
-    case 0xC0020047: return "RPC_NT_FP_UNDERFLOW";
-    case 0xC0020048: return "RPC_NT_FP_OVERFLOW";
-    case 0xC0030001: return "RPC_NT_NO_MORE_ENTRIES";
-    case 0xC0030002: return "RPC_NT_SS_CHAR_TRANS_OPEN_FAIL";
-    case 0xC0030003: return "RPC_NT_SS_CHAR_TRANS_SHORT_FILE";
-    case 0xC0030004: return "RPC_NT_SS_IN_NULL_CONTEXT";
-    case 0xC0030005: return "RPC_NT_SS_CONTEXT_MISMATCH";
-    case 0xC0030006: return "RPC_NT_SS_CONTEXT_DAMAGED";
-    case 0xC0030007: return "RPC_NT_SS_HANDLES_MISMATCH";
-    case 0xC0030008: return "RPC_NT_SS_CANNOT_GET_CALL_HANDLE";
-    case 0xC0030009: return "RPC_NT_NULL_REF_POINTER";
-    case 0xC003000A: return "RPC_NT_ENUM_VALUE_OUT_OF_RANGE";
-    case 0xC003000B: return "RPC_NT_BYTE_COUNT_TOO_SMALL";
-    case 0xC003000C: return "RPC_NT_BAD_STUB_DATA";
-    case 0xC0020049: return "RPC_NT_CALL_IN_PROGRESS";
-    case 0xC002004A: return "RPC_NT_NO_MORE_BINDINGS";
-    case 0xC002004B: return "RPC_NT_GROUP_MEMBER_NOT_FOUND";
-    case 0xC002004C: return "EPT_NT_CANT_CREATE";
-    case 0xC002004D: return "RPC_NT_INVALID_OBJECT";
-    case 0xC002004F: return "RPC_NT_NO_INTERFACES";
-    case 0xC0020050: return "RPC_NT_CALL_CANCELLED";
-    case 0xC0020051: return "RPC_NT_BINDING_INCOMPLETE";
-    case 0xC0020052: return "RPC_NT_COMM_FAILURE";
-    case 0xC0020053: return "RPC_NT_UNSUPPORTED_AUTHN_LEVEL";
-    case 0xC0020054: return "RPC_NT_NO_PRINC_NAME";
-    case 0xC0020055: return "RPC_NT_NOT_RPC_ERROR";
-    case 0x40020056: return "RPC_NT_UUID_LOCAL_ONLY";
-    case 0xC0020057: return "RPC_NT_SEC_PKG_ERROR";
-    case 0xC0020058: return "RPC_NT_NOT_CANCELLED";
-    case 0xC0030059: return "RPC_NT_INVALID_ES_ACTION";
-    case 0xC003005A: return "RPC_NT_WRONG_ES_VERSION";
-    case 0xC003005B: return "RPC_NT_WRONG_STUB_VERSION";
-    case 0xC003005C: return "RPC_NT_INVALID_PIPE_OBJECT";
-    case 0xC003005D: return "RPC_NT_INVALID_PIPE_OPERATION";
-    case 0xC003005E: return "RPC_NT_WRONG_PIPE_VERSION";
-    case 0xC003005F: return "RPC_NT_PIPE_CLOSED";
-    case 0xC0030060: return "RPC_NT_PIPE_DISCIPLINE_ERROR";
-    case 0xC0030061: return "RPC_NT_PIPE_EMPTY";
-    case 0xC0020062: return "RPC_NT_INVALID_ASYNC_HANDLE";
-    case 0xC0020063: return "RPC_NT_INVALID_ASYNC_CALL";
-    case 0x400200AF: return "RPC_NT_SEND_INCOMPLETE";
-    case 0xC0140001: return "STATUS_ACPI_INVALID_OPCODE";
-    case 0xC0140002: return "STATUS_ACPI_STACK_OVERFLOW";
-    case 0xC0140003: return "STATUS_ACPI_ASSERT_FAILED";
-    case 0xC0140004: return "STATUS_ACPI_INVALID_INDEX";
-    case 0xC0140005: return "STATUS_ACPI_INVALID_ARGUMENT";
-    case 0xC0140006: return "STATUS_ACPI_FATAL";
-    case 0xC0140007: return "STATUS_ACPI_INVALID_SUPERNAME";
-    case 0xC0140008: return "STATUS_ACPI_INVALID_ARGTYPE";
-    case 0xC0140009: return "STATUS_ACPI_INVALID_OBJTYPE";
-    case 0xC014000A: return "STATUS_ACPI_INVALID_TARGETTYPE";
-    case 0xC014000B: return "STATUS_ACPI_INCORRECT_ARGUMENT_COUNT";
-    case 0xC014000C: return "STATUS_ACPI_ADDRESS_NOT_MAPPED";
-    case 0xC014000D: return "STATUS_ACPI_INVALID_EVENTTYPE";
-    case 0xC014000E: return "STATUS_ACPI_HANDLER_COLLISION";
-    case 0xC014000F: return "STATUS_ACPI_INVALID_DATA";
-    case 0xC0140010: return "STATUS_ACPI_INVALID_REGION";
-    case 0xC0140011: return "STATUS_ACPI_INVALID_ACCESS_SIZE";
-    case 0xC0140012: return "STATUS_ACPI_ACQUIRE_GLOBAL_LOCK";
-    case 0xC0140013: return "STATUS_ACPI_ALREADY_INITIALIZED";
-    case 0xC0140014: return "STATUS_ACPI_NOT_INITIALIZED";
-    case 0xC0140015: return "STATUS_ACPI_INVALID_MUTEX_LEVEL";
-    case 0xC0140016: return "STATUS_ACPI_MUTEX_NOT_OWNED";
-    case 0xC0140017: return "STATUS_ACPI_MUTEX_NOT_OWNER";
-    case 0xC0140018: return "STATUS_ACPI_RS_ACCESS";
-    case 0xC0140019: return "STATUS_ACPI_INVALID_TABLE";
-    case 0xC0140020: return "STATUS_ACPI_REG_HANDLER_FAILED";
-    case 0xC0140021: return "STATUS_ACPI_POWER_REQUEST_FAILED";
-    case 0xC00A0001: return "STATUS_CTX_WINSTATION_NAME_INVALID";
-    case 0xC00A0002: return "STATUS_CTX_INVALID_PD";
-    case 0xC00A0003: return "STATUS_CTX_PD_NOT_FOUND";
-    case 0x400A0004: return "STATUS_CTX_CDM_CONNECT";
-    case 0x400A0005: return "STATUS_CTX_CDM_DISCONNECT";
-    case 0xC00A0006: return "STATUS_CTX_CLOSE_PENDING";
-    case 0xC00A0007: return "STATUS_CTX_NO_OUTBUF";
-    case 0xC00A0008: return "STATUS_CTX_MODEM_INF_NOT_FOUND";
-    case 0xC00A0009: return "STATUS_CTX_INVALID_MODEMNAME";
-    case 0xC00A000A: return "STATUS_CTX_RESPONSE_ERROR";
-    case 0xC00A000B: return "STATUS_CTX_MODEM_RESPONSE_TIMEOUT";
-    case 0xC00A000C: return "STATUS_CTX_MODEM_RESPONSE_NO_CARRIER";
-    case 0xC00A000D: return "STATUS_CTX_MODEM_RESPONSE_NO_DIALTONE";
-    case 0xC00A000E: return "STATUS_CTX_MODEM_RESPONSE_BUSY";
-    case 0xC00A000F: return "STATUS_CTX_MODEM_RESPONSE_VOICE";
-    case 0xC00A0010: return "STATUS_CTX_TD_ERROR";
-    case 0xC00A0012: return "STATUS_CTX_LICENSE_CLIENT_INVALID";
-    case 0xC00A0013: return "STATUS_CTX_LICENSE_NOT_AVAILABLE";
-    case 0xC00A0014: return "STATUS_CTX_LICENSE_EXPIRED";
-    case 0xC00A0015: return "STATUS_CTX_WINSTATION_NOT_FOUND";
-    case 0xC00A0016: return "STATUS_CTX_WINSTATION_NAME_COLLISION";
-    case 0xC00A0017: return "STATUS_CTX_WINSTATION_BUSY";
-    case 0xC00A0018: return "STATUS_CTX_BAD_VIDEO_MODE";
-    case 0xC00A0022: return "STATUS_CTX_GRAPHICS_INVALID";
-    case 0xC00A0024: return "STATUS_CTX_NOT_CONSOLE";
-    case 0xC00A0026: return "STATUS_CTX_CLIENT_QUERY_TIMEOUT";
-    case 0xC00A0027: return "STATUS_CTX_CONSOLE_DISCONNECT";
-    case 0xC00A0028: return "STATUS_CTX_CONSOLE_CONNECT";
-    case 0xC00A002A: return "STATUS_CTX_SHADOW_DENIED";
-    case 0xC00A002B: return "STATUS_CTX_WINSTATION_ACCESS_DENIED";
-    case 0xC00A002E: return "STATUS_CTX_INVALID_WD";
-    case 0xC00A002F: return "STATUS_CTX_WD_NOT_FOUND";
-    case 0xC00A0030: return "STATUS_CTX_SHADOW_INVALID";
-    case 0xC00A0031: return "STATUS_CTX_SHADOW_DISABLED";
-    case 0xC00A0032: return "STATUS_RDP_PROTOCOL_ERROR";
-    case 0xC00A0033: return "STATUS_CTX_CLIENT_LICENSE_NOT_SET";
-    case 0xC00A0034: return "STATUS_CTX_CLIENT_LICENSE_IN_USE";
-    case 0xC0040035: return "STATUS_PNP_BAD_MPS_TABLE";
-    case 0xC0040036: return "STATUS_PNP_TRANSLATION_FAILED";
-    case 0xC0040037: return "STATUS_PNP_IRQ_TRANSLATION_FAILED";
-    default:         return "STATUS_UNKNOWN";
-    }
-}
-
-
-/*
- * KsPrintf
- *   This function is variable-argument, level-sensitive debug print routine.
- *   If the specified debug level for the print statement is lower or equal
- *   to the current debug level, the message will be printed.
- *
- * Arguments:
- *   DebugPrintLevel - Specifies at which debugging level the string should
- *                     be printed
- *   DebugMessage - Variable argument ascii c string
- *
- * Return Value:
- *   N/A
- *
- * NOTES: 
- *   N/A
- */
-
-VOID
-KsPrintf(
-    LONG  DebugPrintLevel,
-    PCHAR DebugMessage,
-    ...
-    )
-{
-    LARGE_INTEGER tick;
-    va_list       ap;
-
-    va_start(ap, DebugMessage);
-    if (DebugPrintLevel <= KsDebugLevel) {
-        CHAR buffer[0x200];
-        KeQueryTickCount(&tick);
-        vsprintf(buffer, DebugMessage, ap);
-        KdPrint(("%8.8X cpu:%d:%d tid:%p %s",
-                 tick.LowPart,
-                 KeGetCurrentProcessorNumber(),
-                 KeGetCurrentIrql(), 
-                 PsGetCurrentThread(), buffer));
-    }
-    va_end(ap);
-
-} // KsPrint()
-
-#endif
-
-
-void libcfs_panic(char *msg)
-{
-    DbgPrint("%s", msg);
-    cfs_enter_debugger();
-}
-
-/* BUGCHECK callback record */
-static int libcfs_bugcheck_inited = 0;
-KBUGCHECK_CALLBACK_RECORD libcfs_bugcheck_record;
-
-void
-libcfs_bugcheck_callback(
-    IN PVOID Buffer, 
-    IN ULONG Length 
-    )
-{
-    cfs_enter_debugger();
-}
-
-
-void libcfs_register_panic_notifier(void)
-{
-    if (libcfs_bugcheck_inited) {
-        return;
-    }
-
-    KeInitializeCallbackRecord(&libcfs_bugcheck_record);
-    KeRegisterBugCheckCallback(&libcfs_bugcheck_record,
-                                libcfs_bugcheck_callback,
-                               &libcfs_bugcheck_record,
-                                sizeof(KBUGCHECK_CALLBACK_RECORD),
-                                "Lustre");
-}
-
-void libcfs_unregister_panic_notifier(void)
-{
-    if (!libcfs_bugcheck_inited) {
-        return;
-    }
-
-    KeDeregisterBugCheckCallback(&libcfs_bugcheck_record);
-}
diff --git a/libcfs/libcfs/winnt/winnt-fs.c b/libcfs/libcfs/winnt/winnt-fs.c
deleted file mode 100644 (file)
index 135c0ae..0000000
+++ /dev/null
@@ -1,688 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-# define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-const CHAR *dos_file_prefix[] = {
-            "\\??\\", "\\DosDevices\\",
-            "\\SystemRoot\\", NULL};
-
-/*
- * filp_open
- *     To open or create a file in kernel mode
- *
- * Arguments:
- *   name:  name of the file to be opened or created, no dos path prefix
- *   flags: open/creation attribute options
- *   mode:  access mode/permission to open or create
- *   err:   error code
- *
- * Return Value:
- *   the pointer to the struct file or NULL if it fails
- *
- * Notes:
- *   N/A
- */
-
-#define is_drv_letter_valid(x) (((x) >= 0 && (x) <= 9) || \
-                ( ((x)|0x20) <= 'z' && ((x)|0x20) >= 'a'))
-
-struct file *filp_open(const char *name, int flags, int mode, int *err)
-{
-       struct file *fp = NULL;
-
-    NTSTATUS            Status;
-
-    OBJECT_ATTRIBUTES   ObjectAttributes;
-    HANDLE              FileHandle;
-    IO_STATUS_BLOCK     IoStatus;
-    ACCESS_MASK         DesiredAccess;
-    ULONG               CreateDisposition;
-    ULONG               ShareAccess;
-    ULONG               CreateOptions;
-
-    USHORT              NameLength = 0;
-    USHORT              PrefixLength = 0;
-
-    UNICODE_STRING      UnicodeName;
-    PWCHAR              UnicodeString = NULL;
-
-    ANSI_STRING         AnsiName;
-    PUCHAR              AnsiString = NULL;
-
-    /* Analyze the flags settings */
-    if (cfs_is_flag_set(flags, O_WRONLY)) {
-        DesiredAccess = (GENERIC_WRITE | SYNCHRONIZE);
-        ShareAccess = 0;
-    }  else if (cfs_is_flag_set(flags, O_RDWR)) {
-        DesiredAccess = (GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE);
-        ShareAccess = FILE_SHARE_READ | FILE_SHARE_WRITE;
-    } else {
-        DesiredAccess = (GENERIC_READ | SYNCHRONIZE);
-        ShareAccess = FILE_SHARE_READ;
-    }
-
-    if (cfs_is_flag_set(flags, O_CREAT)) {
-        if (cfs_is_flag_set(flags, O_EXCL)) {
-            CreateDisposition = FILE_CREATE;
-        } else {
-            CreateDisposition = FILE_OPEN_IF;
-        }
-    } else {
-        CreateDisposition = FILE_OPEN;
-    }
-
-    if (cfs_is_flag_set(flags, O_TRUNC)) {
-        if (cfs_is_flag_set(flags, O_EXCL)) {
-            CreateDisposition = FILE_OVERWRITE;
-        } else {
-            CreateDisposition = FILE_OVERWRITE_IF;
-        }
-    }
-
-    CreateOptions = 0;
-
-    if (cfs_is_flag_set(flags, O_DIRECTORY)) {
-        cfs_set_flag(CreateOptions,  FILE_DIRECTORY_FILE);
-    }
-
-    if (cfs_is_flag_set(flags, O_SYNC)) {
-         cfs_set_flag(CreateOptions, FILE_WRITE_THROUGH);
-    }
-
-    if (cfs_is_flag_set(flags, O_DIRECT)) {
-         cfs_set_flag(CreateOptions, FILE_NO_INTERMEDIATE_BUFFERING);
-    }
-
-    /* Initialize the unicode path name for the specified file */
-    NameLength = (USHORT)strlen(name);
-
-       /* Check file & path name */
-       if (name[0] != '\\') {
-               if (NameLength < 1 || name[1] != ':' ||
-                   !is_drv_letter_valid(name[0])) {
-                       /* invalid file path name */
-                       return ERR_PTR(-EINVAL);
-               }
-               PrefixLength = (USHORT)strlen(dos_file_prefix[0]);
-       } else {
-               int i, j;
-               for (i = 0; i < 3 && dos_file_prefix[i] != NULL; i++) {
-                       j = strlen(dos_file_prefix[i]);
-                       if (NameLength > j &&
-                           _strnicmp(dos_file_prefix[i], name, j) == 0)
-                               break;
-               }
-               if (i >= 3)
-                       return ERR_PTR(-EINVAL);
-       }
-
-       AnsiString = kmalloc(sizeof(CHAR) * (NameLength + PrefixLength + 1),
-                               __GFP_ZERO);
-       if (NULL == AnsiString)
-               return ERR_PTR(-ENOMEM);
-
-       UnicodeString =
-               kmalloc(sizeof(WCHAR) * (NameLength + PrefixLength + 1),
-                         __GFP_ZERO);
-       if (NULL == UnicodeString) {
-               kfree(AnsiString);
-               return ERR_PTR(-ENOMEM);
-       }
-
-    if (PrefixLength) {
-        RtlCopyMemory(&AnsiString[0], dos_file_prefix[0], PrefixLength);
-    }
-
-    RtlCopyMemory(&AnsiString[PrefixLength], name, NameLength);
-    NameLength += PrefixLength;
-
-    AnsiName.MaximumLength = NameLength + 1;
-    AnsiName.Length = NameLength;
-    AnsiName.Buffer = AnsiString;
-
-    UnicodeName.MaximumLength = (NameLength + 1) * sizeof(WCHAR);
-    UnicodeName.Length = 0;
-    UnicodeName.Buffer = (PWSTR)UnicodeString;
-
-    RtlAnsiStringToUnicodeString(&UnicodeName, &AnsiName, FALSE);
-
-    /* Setup the object attributes structure for the file. */
-    InitializeObjectAttributes(
-            &ObjectAttributes,
-            &UnicodeName,
-            OBJ_CASE_INSENSITIVE |
-            OBJ_KERNEL_HANDLE,
-            NULL,
-            NULL );
-
-    /* Now to open or create the file now */
-    Status = ZwCreateFile(
-            &FileHandle,
-            DesiredAccess,
-            &ObjectAttributes,
-            &IoStatus,
-            0,
-            FILE_ATTRIBUTE_NORMAL,
-            ShareAccess,
-            CreateDisposition,
-            CreateOptions,
-            NULL,
-            0 );
-
-       /* Check the returned status of IoStatus... */
-       if (!NT_SUCCESS(IoStatus.Status)) {
-               kfree(UnicodeString);
-               kfree(AnsiString);
-               return ERR_PTR(cfs_error_code(IoStatus.Status));
-       }
-
-       /* Allocate the file_t: libcfs file object */
-       fp = kmalloc(sizeof(*fp) + NameLength, __GFP_ZERO);
-
-       if (NULL == fp) {
-               Status = ZwClose(FileHandle);
-               ASSERT(NT_SUCCESS(Status));
-               kfree(UnicodeString);
-               kfree(AnsiString);
-               return ERR_PTR(-ENOMEM);
-       }
-
-    fp->f_handle = FileHandle;
-    strcpy(fp->f_name, name);
-    fp->f_flags = flags;
-    fp->f_mode  = (mode_t)mode;
-    fp->f_count = 1;
-
-       /* free the memory of temporary name strings */
-       kfree(UnicodeString);
-       kfree(AnsiString);
-
-       return fp;
-}
-
-
-/*
- * filp_close
- *     To close the opened file and release the filp structure
- *
- * Arguments:
- *   fp:   the pointer of the file structure
- *
- * Return Value:
- *   ZERO: on success
- *   Non-Zero: on failure
- *
- * Notes:
- *   N/A
- */
-
-int filp_close(file_t *fp, void *id)
-{
-    NTSTATUS    Status;
-
-    ASSERT(fp != NULL);
-    ASSERT(fp->f_handle != NULL);
-
-    /* release the file handle */
-    Status = ZwClose(fp->f_handle);
-    ASSERT(NT_SUCCESS(Status));
-
-       /* free the file flip structure */
-       kfree(fp);
-       return 0;
-}
-
-
-NTSTATUS CompletionRoutine(PDEVICE_OBJECT DeviceObject, PIRP Irp, PVOID Context)
-{
-    /* copy the IoStatus result */
-    if (Irp->UserIosb)
-        *Irp->UserIosb = Irp->IoStatus;
-    
-    /* singal the event we set */
-    KeSetEvent((PKEVENT) Context, 0, FALSE);
-   
-    /* free the Irp we allocated */
-    IoFreeIrp(Irp);
-    
-    return STATUS_MORE_PROCESSING_REQUIRED;
-}
-
-
-NTSTATUS cfs_nt_filp_io(HANDLE Handle, BOOLEAN Writing, PLARGE_INTEGER Offset,
-                        ULONG Length,  PUCHAR Buffer,   PULONG Bytes)
-{
-    NTSTATUS                status;
-    IO_STATUS_BLOCK         iosb;
-
-    PIRP                    irp = NULL;
-    PIO_STACK_LOCATION      irpSp = NULL;
-
-    PFILE_OBJECT            fileObject = NULL;
-    PDEVICE_OBJECT          deviceObject;
-
-    KEVENT                  event;
-
-    KeInitializeEvent(&event, SynchronizationEvent, FALSE);
-
-    status = ObReferenceObjectByHandle( Handle,
-                                        Writing ? FILE_WRITE_DATA : 
-                                                  FILE_READ_DATA,
-                                        *IoFileObjectType,
-                                        KernelMode,
-                                        (PVOID *) &fileObject,
-                                        NULL );
-    if (!NT_SUCCESS(status)) {
-        goto errorout;
-    }
-
-    /* query the DeviceObject in case no input */
-    deviceObject = IoGetBaseFileSystemDeviceObject(fileObject);
-
-
-    /* allocate our own irp */
-    irp = IoAllocateIrp(deviceObject->StackSize, FALSE);
-    if (NULL == irp) {
-        status = STATUS_INSUFFICIENT_RESOURCES;
-        goto errorout;
-    }
-
-    irp->Tail.Overlay.OriginalFileObject = fileObject;
-    irp->Tail.Overlay.Thread = PsGetCurrentThread();
-    irp->Tail.Overlay.AuxiliaryBuffer = (PVOID) NULL;
-    irp->PendingReturned = FALSE;
-    irp->Cancel = FALSE;
-    irp->CancelRoutine = (PDRIVER_CANCEL) NULL;
-    irp->RequestorMode = KernelMode;
-    irp->UserIosb = &iosb;
-
-    /* set up the next I/O stack location. */
-    irpSp = (PIO_STACK_LOCATION)IoGetNextIrpStackLocation(irp);
-    irpSp->MajorFunction = Writing ? IRP_MJ_WRITE : IRP_MJ_READ;
-    irpSp->FileObject = fileObject;
-    irpSp->DeviceObject = deviceObject;
-
-    if (deviceObject->Flags & DO_BUFFERED_IO) {
-        irp->AssociatedIrp.SystemBuffer = Buffer;
-        irp->UserBuffer = Buffer;
-        irp->Flags |= (ULONG) (IRP_BUFFERED_IO |
-                               IRP_INPUT_OPERATION);
-    } else if (deviceObject->Flags & DO_DIRECT_IO) {
-
-        PMDL mdl = NULL;
-
-        mdl = IoAllocateMdl(Buffer, Length, FALSE, TRUE, irp);
-        if (mdl == NULL) {
-            KsPrint((0, "cfs_nt_filp_io: failed to allocate MDL for %wZ .\n",
-                        &fileObject->FileName));
-            status = STATUS_INSUFFICIENT_RESOURCES;
-            goto errorout;
-        }
-
-        __try {
-            MmProbeAndLockPages(mdl, KernelMode, Writing ? IoReadAccess : IoWriteAccess );
-        } __except(EXCEPTION_EXECUTE_HANDLER) {
-            KsPrint((0, "cfs_nt_filp_io: failed to lock buffer %p for %wZ .\n",
-                        Buffer, &fileObject->FileName));
-            IoFreeMdl(irp->MdlAddress);
-            irp->MdlAddress = NULL;
-            status = STATUS_INSUFFICIENT_RESOURCES;
-        }
-    } else {
-        irp->UserBuffer = Buffer;
-        irp->Flags = 0;
-    }
-
-    if (Writing) {
-        irp->Flags |= IRP_WRITE_OPERATION | IRP_DEFER_IO_COMPLETION;
-        irpSp->Parameters.Write.Length = Length;
-        irpSp->Parameters.Write.ByteOffset = *Offset;
-    } else {
-        irp->Flags |= IRP_READ_OPERATION | IRP_DEFER_IO_COMPLETION;
-        irpSp->Parameters.Read.Length = Length;
-        irpSp->Parameters.Read.ByteOffset = *Offset;
-    }
-
-    /* set the Irp completion routine */
-    IoSetCompletionRoutine( irp, CompletionRoutine, 
-                            &event, TRUE, TRUE, TRUE);
-
-
-    /* issue the irp to the lower layer device */
-    status = IoCallDriver(deviceObject, irp);
-
-    /* Irp is to be cleaned up in the compleiton routine */
-    irp = NULL;
-
-    if (status == STATUS_PENDING) {
-
-        /* we need wait until operation is completed, then we can
-           get the returned status and information length */
-
-        status = KeWaitForSingleObject(
-                    &event,
-                    Executive,
-                    KernelMode,
-                    FALSE,
-                    NULL
-                    );
-        if (NT_SUCCESS(status)) {
-            status = iosb.Status;
-        }
-    }
-
-    if (NT_SUCCESS(status)) {
-        *Bytes = (ULONG)iosb.Information;
-    } else {
-        *Bytes = 0;
-    }
-
-errorout:
-
-    if (fileObject) {
-        ObDereferenceObject(fileObject);
-    }
-
-    /* free the Irp in error case */
-    if (irp) {
-        IoFreeIrp(irp);
-    }
-
-    return status;
-}
-
-/*
- * filp_read
- *     To read data from the opened file
- *
- * Arguments:
- *   fp:   the pointer of the file strcture
- *   buf:  pointer to the buffer to contain the data
- *   nbytes: size in bytes to be read from the file
- *   pos:  offset in file where reading starts, if pos
- *         NULL, then read from current file offset
- *
- * Return Value:
- *   Actual size read into the buffer in success case
- *   Error code in failure case
- *
- * Notes: 
- *   N/A
- */
-int filp_read(struct file *fp, void *buf, size_t nbytes, loff_t *pos)
-{
-    LARGE_INTEGER   offset;
-    NTSTATUS        status;
-    int             rc = 0;
-
-    /* Read data from the file into the specified buffer */
-    if (pos != NULL) {
-        offset.QuadPart = *pos;
-    } else {
-        offset.QuadPart = fp->f_pos;
-    }
-
-    status = cfs_nt_filp_io(fp->f_handle, 0, &offset,
-                            nbytes, buf, &rc);
-
-    if (!NT_SUCCESS(status)) {
-        rc = cfs_error_code(status);
-    }
-
-    if (rc > 0) {
-        fp->f_pos = offset.QuadPart + rc;
-        if (pos != NULL)
-            *pos = fp->f_pos;
-    }
-
-    return rc;
-}
-
-/*
- * cfs_filp_wrtie
- *     To write specified data to the opened file
- *
- * Arguments:
- *   fp:   the pointer of the file strcture
- *   buf:  pointer to the buffer containing the data
- *   nbytes: size in bytes to be written to the file
- *   pos:  offset in file where writing starts, if pos
- *         NULL, then write to current file offset
- *
- * Return Value:
- *   Actual size written into the buffer in success case
- *   Error code in failure case
- *
- * Notes: 
- *   N/A
- */
-
-int filp_write(struct file *fp, void *buf, size_t nbytes, loff_t *pos)
-{
-    LARGE_INTEGER   offset;
-    NTSTATUS        status;
-    int             rc = 0;
-
-    /* Read data from the file into the specified buffer */
-    if (pos != NULL) {
-        offset.QuadPart = *pos;
-    } else {
-        offset.QuadPart = fp->f_pos;
-    }
-
-    status = cfs_nt_filp_io(fp->f_handle, 1, &offset,
-                            nbytes, buf, &rc);
-
-    if (!NT_SUCCESS(status)) {
-        rc = cfs_error_code(status);
-    }
-
-    if (rc > 0) {
-        fp->f_pos = offset.QuadPart + rc;
-        if (pos != NULL)
-            *pos = fp->f_pos;
-    }
-
-    return rc;
-}
-
-/*
- * filp_fsync
- *     To sync the dirty data of the file to disk
- *
- * Arguments:
- *   fp: the pointer of the file strcture
- *
- * Return Value:
- *   Zero:  in success case
- *   Error code: in failure case
- *
- * Notes: 
- *   Nt kernel doesn't export such a routine to flush a file,
- *   we must allocate our own Irp and issue it to the file
- *   system driver.
- */
-int filp_fsync(struct file *fp, loff_t start, loff_t end)
-{
-    PFILE_OBJECT            FileObject;
-    PDEVICE_OBJECT          DeviceObject;
-
-    NTSTATUS                Status;
-    PIRP                    Irp;
-    KEVENT                  Event;
-    IO_STATUS_BLOCK         IoSb;
-    PIO_STACK_LOCATION      IrpSp;
-
-    /* get the FileObject and the DeviceObject */
-    Status = ObReferenceObjectByHandle(
-                fp->f_handle,
-                FILE_WRITE_DATA,
-                NULL,
-                KernelMode,
-                (PVOID*)&FileObject,
-                NULL );
-
-    if (!NT_SUCCESS(Status)) {
-        return cfs_error_code(Status);
-    }
-
-    DeviceObject = IoGetRelatedDeviceObject(FileObject);
-
-    /* allocate a new Irp */
-    Irp = IoAllocateIrp(DeviceObject->StackSize, FALSE);
-    if (!Irp) {
-        ObDereferenceObject(FileObject);
-        return -ENOMEM;
-    }
-
-    /* intialize the event */
-    KeInitializeEvent(&Event, SynchronizationEvent, FALSE);
-
-    /* setup the Irp */
-    Irp->UserIosb = &IoSb;
-    Irp->RequestorMode = KernelMode;
-
-    Irp->Tail.Overlay.Thread = PsGetCurrentThread();
-    Irp->Tail.Overlay.OriginalFileObject = FileObject;
-
-    /* setup the Irp stack location */
-    IrpSp = IoGetNextIrpStackLocation(Irp);
-
-    IrpSp->MajorFunction = IRP_MJ_FLUSH_BUFFERS;
-    IrpSp->DeviceObject = DeviceObject;
-    IrpSp->FileObject = FileObject;
-
-    IoSetCompletionRoutine( Irp, CompletionRoutine,
-                            &Event, TRUE, TRUE, TRUE);
-
-
-    /* issue the Irp to the underlying file system driver */
-    IoCallDriver(DeviceObject, Irp);
-
-    /* wait until it is finished */
-    KeWaitForSingleObject(&Event, Executive, KernelMode, TRUE, 0);
-
-    /* cleanup our reference on it */
-    ObDereferenceObject(FileObject);
-
-    Status = IoSb.Status;
-
-    return cfs_error_code(Status);
-}
-
-/*
- * get_file
- *     To increase the reference of the file object
- *
- * Arguments:
- *   fp:   the pointer of the file strcture
- *
- * Return Value:
- *   Zero:  in success case
- *   Non-Zero: in failure case
- *
- * Notes: 
- *   N/A
- */
-
-int get_file(struct file *fp)
-{
-    InterlockedIncrement(&(fp->f_count));
-    return 0;
-}
-
-
-/*
- * fput
- *     To decrease the reference of the file object
- *
- * Arguments:
- *   fp:   the pointer of the file strcture
- *
- * Return Value:
- *   Zero:  in success case
- *   Non-Zero: in failure case
- *
- * Notes:
- *   N/A
- */
-
-int fput(struct file *fp)
-{
-       if (InterlockedDecrement(&(fp->f_count)) == 0)
-               filp_close(fp, NULL);
-
-       return 0;
-}
-
-
-/*
- * file_count
- *   To query the reference count of the file object
- *
- * Arguments:
- *   fp:   the pointer of the file strcture
- *
- * Return Value:
- *   the reference count of the file object
- *
- * Notes: 
- *   N/A
- */
-
-int file_count(struct file *fp)
-{
-       return (int)(fp->f_count);
-}
-
-struct dentry *dget(struct dentry *de)
-{
-       if (de) {
-               atomic_inc(&de->d_count);
-       }
-       return de;
-}
-
-void dput(struct dentry *de)
-{
-    if (!de || atomic_read(&de->d_count) == 0) {
-        return;
-    }
-    if (atomic_dec_and_test(&de->d_count)) {
-       kfree(de);
-    }
-}
diff --git a/libcfs/libcfs/winnt/winnt-lock.c b/libcfs/libcfs/winnt/winnt-lock.c
deleted file mode 100644 (file)
index 2c1797b..0000000
+++ /dev/null
@@ -1,423 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-
-# define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-
-#if defined(_X86_)
-
-void __declspec (naked) FASTCALL
-atomic_add(
-    int i,
-    atomic_t *v
-    )
-{
-    // ECX = i
-    // EDX = v ; [EDX][0] = v->counter
-
-    __asm {
-        lock add dword ptr [edx][0], ecx
-        ret
-    }
-}
-
-void __declspec (naked) FASTCALL
-atomic_sub(
-    int i,
-    atomic_t *v
-   ) 
-{
-    // ECX = i
-    // EDX = v ; [EDX][0] = v->counter
-
-    __asm {
-        lock sub dword ptr [edx][0], ecx
-        ret
-    }
-}
-
-void __declspec (naked) FASTCALL
-atomic_inc(
-    atomic_t *v
-    )
-{
-    //InterlockedIncrement((PULONG)(&((v)->counter)));
-
-    //` ECX = v ; [ECX][0] = v->counter
-
-    __asm {
-        lock inc dword ptr [ecx][0]
-        ret
-    }
-}
-
-void __declspec (naked) FASTCALL
-atomic_dec(
-    atomic_t *v
-    )
-{
-    // ECX = v ; [ECX][0] = v->counter
-
-    __asm {
-        lock dec dword ptr [ecx][0]
-        ret
-    }
-}
-
-int __declspec (naked) FASTCALL 
-atomic_sub_and_test(
-    int i,
-    atomic_t *v
-    )
-{
-
-    // ECX = i
-    // EDX = v ; [EDX][0] = v->counter
-
-    __asm {
-        xor eax, eax
-        lock sub dword ptr [edx][0], ecx
-        sete al
-        ret
-    }
-}
-
-int __declspec (naked) FASTCALL
-atomic_inc_and_test(
-    atomic_t *v
-    )
-{
-    // ECX = v ; [ECX][0] = v->counter
-
-    __asm {
-        xor eax, eax
-        lock inc dword ptr [ecx][0]
-        sete al
-        ret
-    }
-}
-
-int __declspec (naked) FASTCALL
-atomic_dec_and_test(
-    atomic_t *v
-    )
-{
-    // ECX = v ; [ECX][0] = v->counter
-
-    __asm {
-        xor eax, eax
-        lock dec dword ptr [ecx][0]
-        sete al
-        ret
-    }
-}
-
-#elif defined(_AMD64_)
-
-void FASTCALL
-atomic_add(
-    int i,
-    atomic_t *v
-    )
-{
-    InterlockedExchangeAdd( (PULONG)(&((v)->counter)) , (LONG) (i));
-}
-
-void FASTCALL
-atomic_sub(
-    int i,
-    atomic_t *v
-   ) 
-{
-    InterlockedExchangeAdd( (PULONG)(&((v)->counter)) , (LONG) (-1*i));
-}
-
-void FASTCALL
-atomic_inc(
-    atomic_t *v
-    )
-{
-   InterlockedIncrement((PULONG)(&((v)->counter)));
-}
-
-void FASTCALL
-atomic_dec(
-    atomic_t *v
-    )
-{
-    InterlockedDecrement((PULONG)(&((v)->counter)));
-}
-
-int FASTCALL 
-atomic_sub_and_test(
-    int i,
-    atomic_t *v
-    )
-{
-    int counter, result;
-
-    do {
-
-        counter = v->counter;
-        result = counter - i;
-
-    } while ( InterlockedCompareExchange(
-                &(v->counter),
-                result,
-                counter) !=  counter);
-
-    return (result == 0);
-}
-
-int FASTCALL
-atomic_inc_and_test(
-    atomic_t *v
-    )
-{
-    int counter, result;
-
-    do {
-
-        counter = v->counter;
-        result = counter + 1;
-
-    } while ( InterlockedCompareExchange(
-                &(v->counter),
-                result,
-                counter) !=  counter);
-
-    return (result == 0);
-}
-
-int FASTCALL
-atomic_dec_and_test(
-    atomic_t *v
-    )
-{
-    int counter, result;
-
-    do {
-
-        counter = v->counter;
-        result = counter - 1;
-
-    } while ( InterlockedCompareExchange(
-                &(v->counter),
-                result,
-                counter) !=  counter);
-
-    return (result == 0);
-}
-
-#else
-
-#error CPU arch type isn't specified.
-
-#endif
-
-/**
- * atomic_add_return - add integer and return
- * \param v pointer of type atomic_t
- * \param i integer value to add
- *
- * Atomically adds \a i to \a v and returns \a i + \a v
- */
-int FASTCALL atomic_add_return(int i, atomic_t *v)
-{
-    int counter, result;
-
-    do {
-
-        counter = v->counter;
-        result = counter + i;
-
-    } while ( InterlockedCompareExchange(
-                &(v->counter),
-                result,
-                counter) !=  counter);
-
-    return result;
-
-}
-
-/**
- * atomic_sub_return - subtract integer and return
- * \param v pointer of type atomic_t
- * \param i integer value to subtract
- *
- * Atomically subtracts \a i from \a v and returns \a v - \a i
- */
-int FASTCALL atomic_sub_return(int i, atomic_t *v)
-{
-       return atomic_add_return(-i, v);
-}
-
-int FASTCALL atomic_dec_and_lock(atomic_t *v, spinlock_t *lock)
-{
-       if (atomic_read(v) != 1)
-               return 0;
-
-       spin_lock(lock);
-       if (atomic_dec_and_test(v))
-               return 1;
-       spin_unlock(lock);
-       return 0;
-}
-
-
-/*
- * rw spinlock
- */
-
-
-void
-rwlock_init(rwlock_t *rwlock)
-{
-       spin_lock_init(&rwlock->guard);
-       rwlock->count = 0;
-}
-
-void
-cfs_rwlock_fini(rwlock_t *rwlock)
-{
-}
-
-void
-read_lock(rwlock_t *rwlock)
-{
-    struct task_struct * task = current;
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        /* should bugchk here */
-        cfs_enter_debugger();
-        return;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    ASSERT(slot->Magic == TASKSLT_MAGIC);
-   
-    slot->irql = KeRaiseIrqlToDpcLevel();
-
-       while (TRUE) {
-               spin_lock(&rwlock->guard);
-                       if (rwlock->count >= 0)
-                               break;
-               spin_unlock(&rwlock->guard);
-       }
-
-       rwlock->count++;
-       spin_unlock(&rwlock->guard);
-}
-
-void
-read_unlock(rwlock_t *rwlock)
-{
-    struct task_struct * task = current;
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        /* should bugchk here */
-        cfs_enter_debugger();
-        return;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    ASSERT(slot->Magic == TASKSLT_MAGIC);
-
-       spin_lock(&rwlock->guard);
-       ASSERT(rwlock->count > 0);
-       rwlock->count--;
-       if (rwlock < 0)
-               cfs_enter_debugger();
-       spin_unlock(&rwlock->guard);
-
-       KeLowerIrql(slot->irql);
-}
-
-void
-write_lock(rwlock_t *rwlock)
-{
-    struct task_struct * task = current;
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        /* should bugchk here */
-        cfs_enter_debugger();
-        return;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    ASSERT(slot->Magic == TASKSLT_MAGIC);
-   
-    slot->irql = KeRaiseIrqlToDpcLevel();
-
-       while (TRUE) {
-               spin_lock(&rwlock->guard);
-               if (rwlock->count == 0)
-                       break;
-               spin_unlock(&rwlock->guard);
-       }
-
-       rwlock->count = -1;
-       spin_unlock(&rwlock->guard);
-}
-
-void
-write_unlock(rwlock_t *rwlock)
-{
-    struct task_struct * task = current;
-    PTASK_SLOT   slot = NULL;
-
-    if (!task) {
-        /* should bugchk here */
-        cfs_enter_debugger();
-        return;
-    }
-
-    slot = CONTAINING_RECORD(task, TASK_SLOT, task);
-    ASSERT(slot->Magic == TASKSLT_MAGIC);
-
-       spin_lock(&rwlock->guard);
-       ASSERT(rwlock->count == -1);
-       rwlock->count = 0;
-       spin_unlock(&rwlock->guard);
-
-       KeLowerIrql(slot->irql);
-}
diff --git a/libcfs/libcfs/winnt/winnt-lwt.c b/libcfs/libcfs/winnt/winnt-lwt.c
deleted file mode 100644 (file)
index a304347..0000000
+++ /dev/null
@@ -1,35 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-# define DEBUG_SUBSYSTEM S_LNET
diff --git a/libcfs/libcfs/winnt/winnt-mem.c b/libcfs/libcfs/winnt/winnt-mem.c
deleted file mode 100644 (file)
index 1e29881..0000000
+++ /dev/null
@@ -1,436 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-
-struct kmem_cache *cfs_page_t_slab;
-struct kmem_cache *cfs_page_p_slab;
-
-struct page *virt_to_page(void *addr)
-{
-       struct page *pg;
-       pg = kmem_cache_alloc(cfs_page_t_slab, 0);
-
-       if (NULL == pg) {
-               cfs_enter_debugger();
-               return NULL;
-       }
-
-       memset(pg, 0, sizeof(struct page));
-       pg->addr = (void *)((__u64)addr & (~((__u64)PAGE_SIZE-1)));
-       pg->mapping = addr;
-       atomic_set(&pg->count, 1);
-       set_bit(PG_virt, &(pg->flags));
-       cfs_enter_debugger();
-       return pg;
-}
-
-/*
- * alloc_page
- *   To allocate the struct page and also 1 page of memory
- *
- * Arguments:
- *   flags:  the allocation options
- *
- * Return Value:
- *   pointer to the struct page strcture in success or
- *   NULL in failure case
- *
- * Notes: 
- *   N/A
- */
-
-atomic_t libcfs_total_pages;
-
-struct page *alloc_page(int flags)
-{
-       struct page *pg;
-       pg = kmem_cache_alloc(cfs_page_t_slab, 0);
-
-       if (NULL == pg) {
-       cfs_enter_debugger();
-       return NULL;
-       }
-
-       memset(pg, 0, sizeof(struct page));
-       pg->addr = kmem_cache_alloc(cfs_page_p_slab, 0);
-       atomic_set(&pg->count, 1);
-
-       if (pg->addr) {
-               if (cfs_is_flag_set(flags, __GFP_ZERO))
-                       memset(pg->addr, 0, PAGE_CACHE_SIZE);
-               atomic_inc(&libcfs_total_pages);
-       } else {
-               cfs_enter_debugger();
-               kmem_cache_free(cfs_page_t_slab, pg);
-               pg = NULL;
-       }
-
-       return pg;
-}
-
-/*
- * __free_page
- *   To free the struct page including the page
- *
- * Arguments:
- *   pg:  pointer to the struct page strcture
- *
- * Return Value:
- *   N/A
- *
- * Notes: 
- *   N/A
- */
-void __free_page(struct page *pg)
-{
-       ASSERT(pg != NULL);
-       ASSERT(pg->addr  != NULL);
-       ASSERT(atomic_read(&pg->count) <= 1);
-
-       if (!test_bit(PG_virt, &pg->flags)) {
-               kmem_cache_free(cfs_page_p_slab, pg->addr);
-               atomic_dec(&libcfs_total_pages);
-       } else {
-               cfs_enter_debugger();
-       }
-       kmem_cache_free(cfs_page_t_slab, pg);
-}
-
-int kmem_is_in_cache(const void *addr, const struct kmem_cache *kmem)
-{
-       KdPrint(("kmem_is_in_cache: not implemented. (should maintain a"
-                "chain to keep all allocations traced.)\n"));
-       return 1;
-}
-
-/*
- * kmalloc
- *   To allocate memory from system pool
- *
- * Arguments:
- *   nr_bytes:  length in bytes of the requested buffer
- *   flags:     flags indiction
- *
- * Return Value:
- *   NULL: if there's no enough memory space in system
- *   the address of the allocated memory in success.
- *
- * Notes: 
- *   This operation can be treated as atomic.
- */
-
-void *
-kmalloc(size_t nr_bytes, u_int32_t flags)
-{
-       void *ptr;
-
-       /* Ignore the flags: always allcoate from NonPagedPool */
-       ptr = ExAllocatePoolWithTag(NonPagedPool, nr_bytes, 'Lufs');
-       if (ptr != NULL && (flags & __GFP_ZERO))
-               memset(ptr, 0, nr_bytes);
-
-       if (!ptr)
-               cfs_enter_debugger();
-
-       return ptr;
-}
-
-/*
- * kfree
- *   To free the sepcified memory to system pool
- *
- * Arguments:
- *   addr:   pointer to the buffer to be freed
- *
- * Return Value:
- *   N/A
- *
- * Notes: 
- *    This operation can be treated as atomic.
- */
-
-void
-kfree(void *addr)
-{
-       ExFreePool(addr);
-}
-
-/*
- * vmalloc
- *   To allocate large block of memory from system pool
- *
- * Arguments:
- *   nr_bytes:  length in bytes of the requested buffer
- *
- * Return Value:
- *   NULL: if there's no enough memory space in system
- *   the address of the allocated memory in success.
- *
- * Notes: 
- *   N/A
- */
-
-void *
-vmalloc(size_t nr_bytes)
-{
-       return kmalloc(nr_bytes, 0);
-}
-
-/*
- * vfree
- *   To free the sepcified memory to system pool
- *
- * Arguments:
- *   addr:   pointer to the buffer to be freed
- *
- * Return Value:
- *   N/A
- *
- * Notes: 
- *   N/A
- */
-
-void vfree(void *addr)
-{
-       kfree(addr);
-}
-
-
-/*
- * kmem_cache_create
- *   To create a SLAB cache
- *
- * Arguments:
- *   name:   name string of the SLAB cache to be created
- *   size:   size in bytes of SLAB entry buffer
- *   offset: offset in the page
- *   flags:  SLAB creation flags
-*
- * Return Value:
- *   The poitner of cfs_memory_cache structure in success.
- *   NULL pointer in failure case.
- *
- * Notes: 
- *   1, offset won't be used here.
- *   2, it could be better to induce a lock to protect the access of the
- *       SLAB structure on SMP if there's not outside lock protection.
- *   3, parameters C/D are removed.
- */
-
-struct kmem_cache *kmem_cache_create(const char *name, size_t size,
-                                    size_t offset, unsigned long flags,
-                                    void *ctor)
-{
-       struct kmem_cache *kmc = NULL;
-
-       /*  The name of the SLAB could not exceed 20 chars */
-
-       if (name && strlen(name) >= 20)
-               goto errorout;
-
-       /* Allocate and initialize the SLAB strcture */
-
-       kmc = kmalloc(sizeof(struct kmem_cache), 0);
-
-       if (NULL == kmc)
-               goto errorout;
-
-       memset(kmc, 0, sizeof(struct kmem_cache));
-       kmc->flags = flags;
-
-    if (name) {
-        strcpy(&kmc->name[0], name);
-    }
-
-    /* Initialize the corresponding LookAside list */
-
-    ExInitializeNPagedLookasideList(
-            &(kmc->npll),
-            NULL,
-            NULL,
-            0,
-            size,
-            'pnmk',
-            0);
-errorout:
-
-    return kmc;
-}
-
-/*
- *kmem_cache_destroy
- *   To destroy the unused SLAB cache
- *
- * Arguments:
- *   kmc: the SLAB cache to be destroied.
- *
- * Return Value:
- *   0: in success case.
- *   1: in failure case.
- *
- * Notes: 
- *   N/A
- */
-
-kmem_cache_destroy(struct kmem_cache *kmc)
-{
-       ASSERT(kmc != NULL);
-
-       ExDeleteNPagedLookasideList(&(kmc->npll));
-
-       kfree(kmc);
-
-       return 0;
-}
-
-/*
- * kmem_cache_alloc
- *   To allocate an object (LookAside entry) from the SLAB
- *
- * Arguments:
- *   kmc:   the SLAB cache to be allocated from.
- *   flags: flags for allocation options
- *
- * Return Value:
- *   object buffer address: in success case.
- *   NULL: in failure case.
- *
- * Notes: 
- *   N/A
- */
-
-void *kmem_cache_alloc(struct kmem_cache *kmc, int flags)
-{
-       void *buf = NULL;
-
-       buf = ExAllocateFromNPagedLookasideList(&(kmc->npll));
-
-       return buf;
-}
-
-/*
- * kmem_cache_free
- *   To free an object (LookAside entry) to the SLAB cache
- *
- * Arguments:
- *   kmc: the SLAB cache to be freed to.
- *   buf: the pointer to the object to be freed.
- *
- * Return Value:
- *   N/A
- *
- * Notes: 
- *   N/A
- */
-
-void kmem_cache_free(struct kmem_cache *kmc, void *buf)
-{
-    ExFreeToNPagedLookasideList(&(kmc->npll), buf);
-}
-
-spinlock_t  shrinker_guard = {0};
-struct list_head shrinker_hdr = LIST_HEAD_INIT(shrinker_hdr);
-struct timer_list shrinker_timer = {0};
-
-struct shrinker *set_shrinker(int seeks, shrink_callback cb)
-{
-       struct shrinker *s = (struct shrinker *)
-       kmalloc(sizeof(struct shrinker), __GFP_ZERO);
-       if (s) {
-               s->cb = cb;
-               s->seeks = seeks;
-               s->nr = 2;
-               spin_lock(&shrinker_guard);
-               list_add(&s->list, &shrinker_hdr);
-               spin_unlock(&shrinker_guard);
-       }
-
-       return s;
-}
-
-void remove_shrinker(struct shrinker *s)
-{
-       struct shrinker *tmp;
-       spin_lock(&shrinker_guard);
-#if TRUE
-       list_for_each_entry(tmp, &shrinker_hdr, list) {
-               if (tmp == s) {
-                       list_del(&tmp->list);
-                       break;
-               }
-       }
-#else
-       list_del(&s->list);
-#endif
-       spin_unlock(&shrinker_guard);
-       kfree(s);
-}
-
-/* time ut test proc */
-void shrinker_timer_proc(ulong_ptr_t arg)
-{
-       struct shrinker *s;
-       spin_lock(&shrinker_guard);
-
-       list_for_each_entry(s, &shrinker_hdr, list) {
-               s->cb(s->nr, __GFP_FS);
-       }
-       spin_unlock(&shrinker_guard);
-       cfs_timer_arm(&shrinker_timer, 300);
-}
-
-int start_shrinker_timer()
-{
-    /* initialize shriner timer */
-    cfs_timer_init(&shrinker_timer, shrinker_timer_proc, NULL);
-
-    /* start the timer to trigger in 5 minutes */
-    cfs_timer_arm(&shrinker_timer, 300);
-
-    return 0;
-}
-
-void stop_shrinker_timer()
-{
-    /* cancel the timer */
-    cfs_timer_disarm(&shrinker_timer);
-    cfs_timer_done(&shrinker_timer);
-}
diff --git a/libcfs/libcfs/winnt/winnt-module.c b/libcfs/libcfs/winnt/winnt-module.c
deleted file mode 100644 (file)
index e44f28f..0000000
+++ /dev/null
@@ -1,181 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-
-#define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-#define LIBCFS_MINOR 240
-
-int libcfs_ioctl_getdata(char *buf, char *end, void *arg)
-{
-        struct libcfs_ioctl_hdr *hdr;
-        struct libcfs_ioctl_data *data;
-        int err;
-        ENTRY;
-
-        hdr = (struct libcfs_ioctl_hdr *)buf;
-        data = (struct libcfs_ioctl_data *)buf;
-
-       err = copy_from_user(buf, (void *)arg, sizeof(*hdr));
-        if (err)
-                RETURN(err);
-
-        if (hdr->ioc_version != LIBCFS_IOCTL_VERSION) {
-                CERROR("LIBCFS: version mismatch kernel vs application\n");
-                RETURN(-EINVAL);
-        }
-
-        if (hdr->ioc_len + buf >= end) {
-                CERROR("LIBCFS: user buffer exceeds kernel buffer\n");
-                RETURN(-EINVAL);
-        }
-
-        if (hdr->ioc_len < sizeof(struct libcfs_ioctl_data)) {
-                CERROR("LIBCFS: user buffer too small for ioctl\n");
-                RETURN(-EINVAL);
-        }
-
-       err = copy_from_user(buf, (void *)arg, hdr->ioc_len);
-        if (err)
-                RETURN(err);
-
-        if (libcfs_ioctl_is_invalid(data)) {
-                CERROR("LIBCFS: ioctl not correctly formatted\n");
-                RETURN(-EINVAL);
-        }
-
-        if (data->ioc_inllen1)
-                data->ioc_inlbuf1 = &data->ioc_bulk[0];
-
-        if (data->ioc_inllen2)
-                data->ioc_inlbuf2 = &data->ioc_bulk[0] +
-                        cfs_size_round(data->ioc_inllen1);
-
-        RETURN(0);
-}
-
-int libcfs_ioctl_popdata(void *arg, void *data, int size)
-{
-       if (copy_to_user((char *)arg, data, size))
-               return -EFAULT;
-       return 0;
-}
-
-extern struct cfs_psdev_ops libcfs_psdev_ops;
-
-static int
-libcfs_psdev_open(struct inode *in, struct file *file)
-{
-       struct libcfs_device_userstate **pdu = NULL;
-       int    rc = 0;
-
-       pdu = (struct libcfs_device_userstate **)&file->private_data;
-       if (libcfs_psdev_ops.p_open != NULL)
-               rc = libcfs_psdev_ops.p_open(0, (void *)pdu);
-       else
-               return (-EPERM);
-       return rc;
-}
-
-/* called when closing /dev/device */
-static int
-libcfs_psdev_release(struct inode *in, struct file *file)
-{
-       struct libcfss_device_userstate *pdu;
-       int    rc = 0;
-
-       pdu = file->private_data;
-       if (libcfs_psdev_ops.p_close != NULL)
-               rc = libcfs_psdev_ops.p_close(0, (void *)pdu);
-       else
-               rc = -EPERM;
-       return rc;
-}
-
-static int
-libcfs_ioctl(struct file *file, unsigned int cmd, ulong_ptr_t arg)
-{
-       struct cfs_psdev_file    pfile;
-       int    rc = 0;
-
-       if ( _IOC_TYPE(cmd) != IOC_LIBCFS_TYPE || 
-            _IOC_NR(cmd) < IOC_LIBCFS_MIN_NR  || 
-            _IOC_NR(cmd) > IOC_LIBCFS_MAX_NR ) { 
-               CDEBUG(D_IOCTL, "invalid ioctl ( type %d, nr %d, size %d )\n", 
-                      _IOC_TYPE(cmd), _IOC_NR(cmd), _IOC_SIZE(cmd)); 
-               return (-EINVAL); 
-       } 
-       
-       /* Handle platform-dependent IOC requests */
-       switch (cmd) { 
-       case IOC_LIBCFS_PANIC: 
-               if (!cfs_capable(CFS_CAP_SYS_BOOT)) 
-                       return (-EPERM); 
-               CERROR("debugctl-invoked panic");
-               KeBugCheckEx('LUFS', (ULONG_PTR)libcfs_ioctl, (ULONG_PTR)NULL, (ULONG_PTR)NULL, (ULONG_PTR)NULL);
-
-               return (0);
-       case IOC_LIBCFS_MEMHOG:
-
-               if (!cfs_capable(CFS_CAP_SYS_ADMIN)) 
-                       return -EPERM;
-        break;
-       }
-
-       pfile.off = 0;
-       pfile.private_data = file->private_data;
-       if (libcfs_psdev_ops.p_ioctl != NULL) 
-               rc = libcfs_psdev_ops.p_ioctl(&pfile, cmd, (void *)arg); 
-       else
-               rc = -EPERM;
-       return (rc);
-}
-
-static struct file_operations libcfs_fops = {
-    /* owner */   THIS_MODULE,
-    /* lseek: */  NULL,
-    /* read: */   NULL,
-    /* write: */  NULL,
-    /* ioctl: */  libcfs_ioctl,
-    /* open: */   libcfs_psdev_open,
-    /* release:*/ libcfs_psdev_release
-};
-
-struct miscdevice libcfs_dev = {
-       LIBCFS_MINOR, 
-       "lnet", 
-       &libcfs_fops
-};
diff --git a/libcfs/libcfs/winnt/winnt-native.c b/libcfs/libcfs/winnt/winnt-native.c
deleted file mode 100644 (file)
index e85722c..0000000
+++ /dev/null
@@ -1,707 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-# define DEBUG_SUBSYSTEM S_LNET
-
-#ifndef __KERNEL__
-
-#include <ntddk.h>
-#include <libcfs/libcfs.h>
-#include <libcfs/user-bitops.h>
-#include <lustre_lib.h>
-
-/*
- * Native API definitions
- */
-
-//
-//  Disk I/O Routines
-//
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtReadFile(HANDLE FileHandle,
-    HANDLE Event OPTIONAL,
-    PIO_APC_ROUTINE ApcRoutine OPTIONAL,
-    PVOID ApcContext OPTIONAL,
-    PIO_STATUS_BLOCK IoStatusBlock,
-    PVOID Buffer,
-    ULONG Length,
-    PLARGE_INTEGER ByteOffset OPTIONAL,
-    PULONG Key OPTIONAL);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtWriteFile(HANDLE FileHandle,
-    HANDLE Event OPTIONAL,
-    PIO_APC_ROUTINE ApcRoutine OPTIONAL,
-    PVOID ApcContext OPTIONAL,
-    PIO_STATUS_BLOCK IoStatusBlock,
-    PVOID Buffer,
-    ULONG Length,
-    PLARGE_INTEGER ByteOffset OPTIONAL,
-    PULONG Key OPTIONAL);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtClose(HANDLE Handle);
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtCreateFile(PHANDLE FileHandle,
-    ACCESS_MASK DesiredAccess,
-    POBJECT_ATTRIBUTES ObjectAttributes,
-    PIO_STATUS_BLOCK IoStatusBlock,
-    PLARGE_INTEGER AllocationSize OPTIONAL,
-    ULONG FileAttributes,
-    ULONG ShareAccess,
-    ULONG CreateDisposition,
-    ULONG CreateOptions,
-    PVOID EaBuffer OPTIONAL,
-    ULONG EaLength);
-
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtDeviceIoControlFile(
-    IN HANDLE  FileHandle,
-    IN HANDLE  Event,
-    IN PIO_APC_ROUTINE  ApcRoutine,
-    IN PVOID  ApcContext,
-    OUT PIO_STATUS_BLOCK  IoStatusBlock,
-    IN ULONG  IoControlCode,
-    IN PVOID  InputBuffer,
-    IN ULONG  InputBufferLength,
-    OUT PVOID  OutputBuffer,
-    OUT ULONG  OutputBufferLength
-    ); 
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtFsControlFile(
-    IN HANDLE FileHandle,
-    IN HANDLE Event OPTIONAL,
-    IN PIO_APC_ROUTINE ApcRoutine OPTIONAL,
-    IN PVOID ApcContext OPTIONAL,
-    OUT PIO_STATUS_BLOCK IoStatusBlock,
-    IN ULONG FsControlCode,
-    IN PVOID InputBuffer OPTIONAL,
-    IN ULONG InputBufferLength,
-    OUT PVOID OutputBuffer OPTIONAL,
-    IN ULONG OutputBufferLength
-);
-
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-NtQueryInformationFile(
-    IN HANDLE  FileHandle,
-    OUT PIO_STATUS_BLOCK  IoStatusBlock,
-    OUT PVOID  FileInformation,
-    IN ULONG  Length,
-    IN FILE_INFORMATION_CLASS  FileInformationClass
-    );
-
-//
-// Random routines ...
-//
-
-NTSYSAPI
-ULONG
-NTAPI
-RtlRandom(
-    IN OUT PULONG  Seed
-    ); 
-
-/*
- * Time routines ...
- */
-
-NTSYSAPI
-CCHAR
-NTAPI
-NtQuerySystemTime(
-    OUT PLARGE_INTEGER  CurrentTime
-    );
-
-
-NTSYSAPI
-BOOLEAN
-NTAPI
-RtlTimeToSecondsSince1970(
-    IN PLARGE_INTEGER  Time,
-    OUT PULONG  ElapsedSeconds
-    );
-
-
-NTSYSAPI
-VOID
-NTAPI
-RtlSecondsSince1970ToTime(
-    IN ULONG  ElapsedSeconds,
-    OUT PLARGE_INTEGER  Time
-    );
-
-NTSYSAPI
-NTSTATUS
-NTAPI
-ZwDelayExecution(
-    IN BOOLEAN Alertable,
-    IN PLARGE_INTEGER Interval
-);
-
-
-int nanosleep(const struct timespec *rqtp, struct timespec *rmtp)
-{
-    NTSTATUS status;
-    LARGE_INTEGER Interval;
-    Interval.QuadPart = rqtp->tv_sec * 10000000 + rqtp->tv_nsec / 100;
-    status = ZwDelayExecution(TRUE, &Interval);
-    if (rmtp) {
-        rmtp->tv_sec = 0;
-        rmtp->tv_nsec = 0;
-    }
-    if (status == STATUS_ALERTED || status == STATUS_USER_APC) {
-       return -1;
-    }
-    return 0;
-}
-
-
-void do_gettimeofday(struct timeval *tv)
-{
-    LARGE_INTEGER Time;
-
-    NtQuerySystemTime(&Time);
-
-    tv->tv_sec  = (long_ptr_t)  (Time.QuadPart / 10000000);
-    tv->tv_usec = (suseconds_t) (Time.QuadPart % 10000000) / 10;
-}
-
-int gettimeofday(struct timeval *tv, void * tz)
-{
-    do_gettimeofday(tv);
-    return 0;
-}
-
-/*
- * proc process routines of user space
- */
-
-struct idr_context *cfs_proc_idp = NULL;
-
-int cfs_proc_open (char * filename, int oflag)
-{
-    NTSTATUS            status;
-    IO_STATUS_BLOCK     iosb;
-    int                 rc = 0;
-
-    HANDLE              Handle = INVALID_HANDLE_VALUE;
-    OBJECT_ATTRIBUTES   ObjectAttributes;
-    ACCESS_MASK         DesiredAccess;
-    ULONG               CreateDisposition;
-    ULONG               ShareAccess;
-    ULONG               CreateOptions;
-    UNICODE_STRING      UnicodeName;
-    USHORT              NameLength;
-
-    PFILE_FULL_EA_INFORMATION Ea = NULL;
-    ULONG               EaLength;
-    PUCHAR              EaBuffer = NULL;
-
-    /* Check the filename: should start with "/proc" or "/dev" */
-    NameLength = (USHORT)strlen(filename);
-    if (NameLength > 0x05) {
-        if (_strnicmp(filename, "/proc/", 6) == 0) {
-            if (NameLength <= 6) {
-                rc = -EINVAL;
-                goto errorout;
-            }
-        } else if (_strnicmp(filename, "/dev/", 5) == 0) {
-        } else {
-            rc = -EINVAL;
-            goto errorout;
-        }
-    } else {
-        rc = -EINVAL;
-        goto errorout;
-    }
-
-    /* Analyze the flags settings */
-
-    if (cfs_is_flag_set(oflag, O_WRONLY)) {
-        DesiredAccess = (GENERIC_WRITE | SYNCHRONIZE);
-        ShareAccess = 0;
-    }  else if (cfs_is_flag_set(oflag, O_RDWR)) {
-        DesiredAccess = (GENERIC_READ | GENERIC_WRITE | SYNCHRONIZE);
-        ShareAccess = FILE_SHARE_READ | FILE_SHARE_WRITE;
-    } else {
-        DesiredAccess = (GENERIC_READ | SYNCHRONIZE);
-        ShareAccess = FILE_SHARE_READ;
-    }
-
-    if (cfs_is_flag_set(oflag, O_CREAT)) {
-        if (cfs_is_flag_set(oflag, O_EXCL)) {
-            CreateDisposition = FILE_CREATE;
-            rc = -EINVAL;
-            goto errorout;
-        } else {
-            CreateDisposition = FILE_OPEN_IF;
-        }
-    } else {
-        CreateDisposition = FILE_OPEN;
-    }
-
-    if (cfs_is_flag_set(oflag, O_TRUNC)) {
-        if (cfs_is_flag_set(oflag, O_EXCL)) {
-            CreateDisposition = FILE_OVERWRITE;
-        } else {
-            CreateDisposition = FILE_OVERWRITE_IF;
-        }
-    }
-
-    CreateOptions = 0;
-
-    if (cfs_is_flag_set(oflag, O_DIRECTORY)) {
-        cfs_set_flag(CreateOptions,  FILE_DIRECTORY_FILE);
-    }
-
-    if (cfs_is_flag_set(oflag, O_SYNC)) {
-         cfs_set_flag(CreateOptions, FILE_WRITE_THROUGH);
-    }
-
-    if (cfs_is_flag_set(oflag, O_DIRECT)) {
-         cfs_set_flag(CreateOptions, FILE_NO_INTERMEDIATE_BUFFERING);
-    }
-
-    /* Initialize the unicode path name for the specified file */
-    RtlInitUnicodeString(&UnicodeName, LUSTRE_PROC_SYMLNK);
-
-    /* Setup the object attributes structure for the file. */
-    InitializeObjectAttributes(
-            &ObjectAttributes,
-            &UnicodeName,
-            OBJ_CASE_INSENSITIVE,
-            NULL,
-            NULL );
-
-    /* building EA for the proc entry ...  */
-    EaBuffer = malloc(NameLength + sizeof(FILE_FULL_EA_INFORMATION));
-    if (!EaBuffer) {
-        rc = -ENOMEM;
-        goto errorout;
-    }
-    memset(EaBuffer, 0, NameLength + sizeof(FILE_FULL_EA_INFORMATION));
-    Ea = (PFILE_FULL_EA_INFORMATION)EaBuffer;
-    Ea->NextEntryOffset = 0;
-    Ea->Flags = 0;
-    Ea->EaNameLength = (UCHAR)NameLength;
-    Ea->EaValueLength = 0;
-    RtlCopyMemory(
-        &(Ea->EaName),
-        filename,
-        NameLength + 1
-        );
-    EaLength = sizeof(FILE_FULL_EA_INFORMATION) - 1 +
-                               Ea->EaNameLength + 1;
-
-    /* Now to open or create the file now */
-    status = NtCreateFile(
-                &Handle,
-                DesiredAccess,
-                &ObjectAttributes,
-                &iosb,
-                0,
-                FILE_ATTRIBUTE_NORMAL,
-                ShareAccess,
-                CreateDisposition,
-                CreateOptions,
-                Ea,
-                EaLength );
-
-    /* Check the returned status of Iosb ... */
-
-    if (!NT_SUCCESS(status)) {
-        rc = cfs_error_code(status);
-        goto errorout;
-    }
-
-errorout:
-
-    if (Handle) {
-        rc = cfs_idr_get_new(cfs_proc_idp, Handle);
-        if (rc < 0) {
-            NtClose(Handle);
-        }
-    }
-
-    if (EaBuffer) {
-        free(EaBuffer);
-    }
-
-    return rc;
-}
-
-int cfs_proc_close(int fd)
-{
-    HANDLE handle = cfs_idr_find(cfs_proc_idp, fd);
-
-    if (handle) {
-        NtClose(handle);
-    }
-
-    cfs_idr_remove(cfs_proc_idp, fd);
-
-    return 0;
-}
-
-int cfs_proc_read_internal(
-    int fd, void *buffer,
-    unsigned int count,
-    unsigned int offlow,
-    unsigned int offhigh
-    )
-{
-    NTSTATUS            status;
-    IO_STATUS_BLOCK     iosb;
-    LARGE_INTEGER       offset;
-
-    HANDLE handle = cfs_idr_find(cfs_proc_idp, fd);
-    offset.HighPart = offhigh;
-    offset.LowPart  = offlow;
-
-    /* read file data */
-    status = NtReadFile(
-                handle,
-                0,
-                NULL,
-                NULL,
-                &iosb,
-                buffer,
-                count,
-                &offset,
-                NULL);                     
-
-    /* check the return status */
-    if (!NT_SUCCESS(status)) {
-        printf("NtReadFile request failed with status: 0x%0x\n", status);
-        goto errorout;
-    }
-
-errorout:
-
-    if (NT_SUCCESS(status)) {
-        return (int)(iosb.Information);
-    }
-
-    return cfs_error_code(status);
-}
-
-int cfs_proc_read(
-    int fd, void *buffer,
-    unsigned int count
-    )
-{
-    return cfs_proc_read_internal(fd, buffer, count, 0, 0);
-}
-
-int cfs_proc_write_internal(
-    int fd, void *buffer,
-    unsigned int count,
-    unsigned int offlow,
-    unsigned int offhigh
-    )
-{
-    NTSTATUS            status;
-    IO_STATUS_BLOCK     iosb;
-    LARGE_INTEGER       offset;
-
-    HANDLE handle = cfs_idr_find(cfs_proc_idp, fd);
-    offset.HighPart = offhigh;
-    offset.LowPart = offlow;
-
-    /* write buffer to the opened file */
-    status = NtWriteFile(
-                handle,
-                0,
-                NULL,
-                NULL,
-                &iosb,
-                buffer,
-                count,
-                &offset,
-                NULL);                     
-
-    /* check the return status */
-    if (!NT_SUCCESS(status)) {
-        printf("NtWriteFile request failed 0x%0x\n", status);
-        goto errorout;
-    }
-
-errorout:
-
-    if (NT_SUCCESS(status)) {
-        return (int)(iosb.Information);
-    }
-
-    return cfs_error_code(status);
-}
-
-int cfs_proc_write(
-    int fd, void *buffer,
-    unsigned int count
-    )
-{
-    return cfs_proc_write_internal(fd, buffer, count, 0, 0);
-}
-
-int cfs_proc_ioctl(int fd, int cmd, void *buffer)
-{
-    PUCHAR          procdat = NULL;
-    CFS_PROC_IOCTL  procctl;
-    ULONG           length = 0;
-    ULONG           extra = 0;
-    int             rc = 0;
-
-    NTSTATUS        status = STATUS_UNSUCCESSFUL;
-    IO_STATUS_BLOCK iosb;
-
-    struct libcfs_ioctl_data * portal = buffer;
-    struct obd_ioctl_data * obd = buffer;
-    struct obd_ioctl_data * data;
-
-    HANDLE handle = cfs_idr_find(cfs_proc_idp, fd);
-#if defined(_X86_)
-    CLASSERT(sizeof(struct obd_ioctl_data) == 528);
-#else
-    CLASSERT(sizeof(struct obd_ioctl_data) == 576);
-#endif
-    memset(&procctl, 0, sizeof(CFS_PROC_IOCTL));
-    procctl.cmd = cmd;
-
-    if(_IOC_TYPE(cmd) == IOC_LIBCFS_TYPE) {
-        length = portal->ioc_len;
-    } else if (_IOC_TYPE(cmd) == 'f') {
-        length = obd->ioc_len;
-        extra = cfs_size_round(obd->ioc_plen1) + cfs_size_round(obd->ioc_plen2);
-    } else if(_IOC_TYPE(cmd) == 'u') {
-        length = 4;
-        extra  = 0;
-    } else if(_IOC_TYPE(cmd) == 'i') {
-        length = obd->ioc_len;
-        extra  = 0;
-    } else {
-        printf("cfs_proc_ioctl: un-supported ioctl type ...\n");
-        cfs_enter_debugger();
-        status = STATUS_INVALID_PARAMETER;
-        goto errorout;
-    }
-
-    procctl.len = length + extra;
-    procdat = malloc(length + extra + sizeof(CFS_PROC_IOCTL));
-
-    if (NULL == procdat) {
-        printf("user:winnt-proc:cfs_proc_ioctl: no enough memory ...\n");
-        status = STATUS_INSUFFICIENT_RESOURCES;
-        cfs_enter_debugger();
-        goto errorout;
-    }
-    memset(procdat, 0, length + extra + sizeof(CFS_PROC_IOCTL));
-    memcpy(procdat, &procctl, sizeof(CFS_PROC_IOCTL));
-    memcpy(&procdat[sizeof(CFS_PROC_IOCTL)], buffer, length);
-    length += sizeof(CFS_PROC_IOCTL);
-
-    if (_IOC_TYPE(cmd) == 'f') {
-
-        data  = (struct obd_ioctl_data *) (procdat + sizeof(CFS_PROC_IOCTL));
-        if ( cmd != (ULONG)OBD_IOC_BRW_WRITE  &&
-             cmd != (ULONG)OBD_IOC_BRW_READ ) {
-
-            if (obd->ioc_pbuf1 && data->ioc_plen1) {
-                data->ioc_pbuf1 = &procdat[length];
-                memcpy(data->ioc_pbuf1, obd->ioc_pbuf1, obd->ioc_plen1); 
-                length += cfs_size_round(obd->ioc_plen1);
-            } else {
-                data->ioc_plen1 = 0;
-                data->ioc_pbuf1 = NULL;
-            }
-
-            if (obd->ioc_pbuf2 && obd->ioc_plen2) {
-                data->ioc_pbuf2 = &procdat[length];
-                memcpy(data->ioc_pbuf2, obd->ioc_pbuf2, obd->ioc_plen2);
-                length += cfs_size_round(obd->ioc_plen2);
-            } else {
-                data->ioc_plen2 = 0;
-                data->ioc_pbuf2 = NULL;
-            }
-               } else {
-             extra = 0;
-        }
-
-        ASSERT(length == extra + sizeof(CFS_PROC_IOCTL) + data->ioc_len);
-        if (obd_ioctl_is_invalid(obd)) {
-            cfs_enter_debugger();
-        }
-    }
-
-    status = NtDeviceIoControlFile(
-                handle, NULL, NULL,
-                NULL, &iosb,
-                IOCTL_LIBCFS_ENTRY,
-                procdat, length,
-                procdat, length );
-
-
-    if (_IOC_TYPE(cmd) == 'f') {
-
-        length = sizeof(CFS_PROC_IOCTL);
-        ASSERT(data  == (struct obd_ioctl_data *) (procdat + sizeof(CFS_PROC_IOCTL)));
-               if ( cmd != (ULONG)OBD_IOC_BRW_WRITE  &&
-             cmd != (ULONG)OBD_IOC_BRW_READ ) {
-
-            if (obd->ioc_pbuf1) {
-                ASSERT(obd->ioc_plen1 == data->ioc_plen1);
-                data->ioc_pbuf1 = &procdat[length];
-                memcpy(obd->ioc_pbuf1, data->ioc_pbuf1, obd->ioc_plen1);
-                length += cfs_size_round(obd->ioc_plen1);
-            }
-            if (obd->ioc_pbuf2) {
-                ASSERT(obd->ioc_plen2 == data->ioc_plen2);
-                data->ioc_pbuf2 = &procdat[length];
-                memcpy(obd->ioc_pbuf2, data->ioc_pbuf2, obd->ioc_plen2);
-                length += cfs_size_round(obd->ioc_plen2);
-            }
-        }
-        data->ioc_inlbuf1 = obd->ioc_inlbuf1;
-        data->ioc_inlbuf2 = obd->ioc_inlbuf2;
-        data->ioc_inlbuf3 = obd->ioc_inlbuf3;
-        data->ioc_inlbuf4 = obd->ioc_inlbuf4;
-        data->ioc_pbuf1   = obd->ioc_pbuf1;
-        data->ioc_pbuf2   = obd->ioc_pbuf2;
-        memcpy(obd, data, obd->ioc_len);
-
-    } else {
-
-        memcpy(buffer, &procdat[sizeof(CFS_PROC_IOCTL)], procctl.len); 
-    }
-
-errorout:
-
-    if (STATUS_SUCCESS == status) {
-        rc = ((CFS_PROC_IOCTL *)procdat)->rc;
-    } else {
-        rc = cfs_error_code(status);
-    }
-
-    if (procdat) {
-        free(procdat);
-    }
-
-    return rc;
-}
-
-
-int cfs_proc_mknod(const char *path, mode_t mode, dev_t dev)
-{
-    return 0;
-}
-
-FILE *cfs_proc_fopen(char *path, char * mode)
-{
-    int fp = cfs_proc_open(path, O_RDWR);
-    if (fp > 0) {
-        return (FILE *)(LONG_PTR)fp;
-    }
-
-    return NULL;
-}
-
-char *cfs_proc_fgets(char * buf, int len, FILE *fp)
-{
-    int rc = 0;
-
-    if (fp == NULL) {
-        return NULL;
-    }
-
-    rc = cfs_proc_read_internal((int)(LONG_PTR)fp,
-                                buf, len, -1, 1);
-    if (rc <= 0) {
-        return NULL;
-    }
-
-    return buf;
-}
-
-int cfs_proc_fclose(FILE *fp)
-{
-    if (fp == NULL) {
-        return -1;
-    }
-
-    return cfs_proc_close((int)(LONG_PTR)fp);
-}
-
-void cfs_libc_init();
-
-int
-libcfs_arch_init(void)
-{
-    cfs_libc_init();
-    cfs_proc_idp = cfs_idr_init();
-
-    if (cfs_proc_idp) {
-        return 0;
-    }
-
-    return -ENOMEM;
-}
-
-void
-libcfs_arch_cleanup(void)
-{
-    if (cfs_proc_idp) {
-        cfs_idr_exit(cfs_proc_idp);
-        cfs_proc_idp = NULL;
-    }
-}
-
-#endif /* __KERNEL__ */
diff --git a/libcfs/libcfs/winnt/winnt-prim.c b/libcfs/libcfs/winnt/winnt-prim.c
deleted file mode 100644 (file)
index 2fe3a7b..0000000
+++ /dev/null
@@ -1,850 +0,0 @@
-/*
- * GPL HEADER START
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License version 2 only,
- * as published by the Free Software Foundation.
- *
- * This program is distributed in the hope that it will be useful, but
- * WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- * General Public License version 2 for more details (a copy is included
- * in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU General Public License
- * version 2 along with this program; If not, see
- * http://www.sun.com/software/products/lustre/docs/GPLv2.pdf
- *
- * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
- * CA 95054 USA or visit www.sun.com if you need additional information or
- * have any questions.
- *
- * GPL HEADER END
- */
-/*
- * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
- * Use is subject to license terms.
- *
- * Copyright (c) 2011, 2012, Intel Corporation.
- */
-/*
- * This file is part of Lustre, http://www.lustre.org/
- * Lustre is a trademark of Sun Microsystems, Inc.
- */
-
-#define DEBUG_SUBSYSTEM S_LNET
-
-#include <libcfs/libcfs.h>
-
-
-/*
- *  Thread routines
- */
-
-/*
- * cfs_thread_proc
- *   Lustre thread procedure wrapper routine (It's an internal routine)
- *
- * Arguments:
- *   context:  a structure of cfs_thread_context_t, containing
- *             all the necessary parameters
- *
- * Return Value:
- *   void: N/A
- *
- * Notes:
- *   N/A
- */
-
-void
-cfs_thread_proc(void *context)
-{
-    cfs_thread_context_t * thread_context =
-        (cfs_thread_context_t *) context;
-
-    /* Execute the specified function ... */
-
-    if (thread_context->func) {
-        (thread_context->func)(thread_context->arg);
-    }
-
-    /* Free the context memory */
-
-    kfree(context);
-
-    /* Terminate this system thread */
-
-    PsTerminateSystemThread(STATUS_SUCCESS);
-}
-
-/*
- * kthread_run
- *   Create a system thread to execute the routine specified
- *
- * Arguments:
- *   func:  function to be executed in the thread
- *   arg:   argument transferred to func function
- *   name:  thread name to create
- *
- * Return Value:
- *   struct task_struct:   0 on success or error codes
- *
- * Notes:
- *   N/A
- */
-
-struct task_struct kthread_run(int (*func)(void *), void *arg, char *name)
-{
-    cfs_handle_t  thread = NULL;
-    NTSTATUS      status;
-    cfs_thread_context_t *context = NULL;
-
-    /* Allocate the context to be transferred to system thread */
-
-    context = kmalloc(sizeof(cfs_thread_context_t), __GFP_ZERO);
-
-    if (!context) {
-       return ERR_PTR(-ENOMEM);
-    }
-
-    context->func  = func;
-    context->arg   = arg;
-
-    /* Create system thread with the cfs_thread_proc wrapper */
-
-    status = PsCreateSystemThread(
-                &thread,
-                (ACCESS_MASK)0L,
-                0, 0, 0,
-                cfs_thread_proc,
-                context);
-
-    if (!NT_SUCCESS(status)) {
-
-
-       kfree(context);
-
-        /* We need translate the nt status to linux error code */
-
-       return ERR_PTR(cfs_error_code(status));
-    }
-
-    //
-    //  Query the thread id of the newly created thread
-    //
-
-    ZwClose(thread);
-
-       return (struct task_struct)0;
-}
-
-
-/*
- * Symbols routines
- */
-
-
-static DECLARE_RWSEM(cfs_symbol_lock);
-struct list_head cfs_symbol_list = LIST_HEAD_INIT(cfs_symbol_list);
-
-int libcfs_is_mp_system = FALSE;
-
-/*
- * cfs_symbol_get
- *   To query the specified symbol form the symbol table
- *
- * Arguments:
- *   name:  the symbol name to be queried
- *
- * Return Value:
- *   If the symbol is in the table, return the address of it.
- *   If not, return NULL.
- *
- * Notes:
- *   N/A
- */
-
-void *
-cfs_symbol_get(const char *name)
-{
-    struct list_head              *walker;
-    struct cfs_symbol       *sym = NULL;
-
-       down_read(&cfs_symbol_lock);
-    list_for_each(walker, &cfs_symbol_list) {
-       sym = list_entry (walker, struct cfs_symbol, sym_list);
-        if (!strcmp(sym->name, name)) {
-            sym->ref ++;
-            break;
-        }
-    }
-       up_read(&cfs_symbol_lock);
-
-    if (sym != NULL)
-        return sym->value;
-
-    return NULL;
-}
-
-/*
- * cfs_symbol_put
- *   To decrease the reference of  the specified symbol
- *
- * Arguments:
- *   name:  the symbol name to be dereferred
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-void
-cfs_symbol_put(const char *name)
-{
-    struct list_head              *walker;
-    struct cfs_symbol       *sym = NULL;
-
-       down_read(&cfs_symbol_lock);
-    list_for_each(walker, &cfs_symbol_list) {
-       sym = list_entry (walker, struct cfs_symbol, sym_list);
-        if (!strcmp(sym->name, name)) {
-            LASSERT(sym->ref > 0);
-            sym->ref--;
-            break;
-        }
-    }
-       up_read(&cfs_symbol_lock);
-
-    LASSERT(sym != NULL);
-}
-
-
-/*
- * cfs_symbol_register
- *   To register the specified symbol infromation
- *
- * Arguments:
- *   name:  the symbol name to be dereferred
- *   value: the value that the symbol stands for
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   Zero: Succeed to register
- *   Non-Zero: Fail to register the symbol
- */
-
-int
-cfs_symbol_register(const char *name, const void *value)
-{
-    struct list_head              *walker;
-    struct cfs_symbol       *sym = NULL;
-    struct cfs_symbol       *new = NULL;
-
-       new = kmalloc(sizeof(struct cfs_symbol), __GFP_ZERO);
-       if (!new)
-               return -ENOMEM;
-
-    strncpy(new->name, name, CFS_SYMBOL_LEN);
-    new->value = (void *)value;
-    new->ref = 0;
-    INIT_LIST_HEAD(&new->sym_list);
-
-       down_write(&cfs_symbol_lock);
-       list_for_each(walker, &cfs_symbol_list) {
-               sym = list_entry (walker, struct cfs_symbol, sym_list);
-               if (!strcmp(sym->name, name)) {
-                       up_write(&cfs_symbol_lock);
-                       kfree(new);
-                       return 0; /* alreay registerred */
-               }
-       }
-       list_add_tail(&new->sym_list, &cfs_symbol_list);
-       up_write(&cfs_symbol_lock);
-
-    return 0;
-}
-
-/*
- * cfs_symbol_unregister
- *   To unregister/remove the specified symbol
- *
- * Arguments:
- *   name:  the symbol name to be dereferred
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-void
-cfs_symbol_unregister(const char *name)
-{
-    struct list_head              *walker;
-    struct list_head              *nxt;
-    struct cfs_symbol       *sym = NULL;
-
-       down_write(&cfs_symbol_lock);
-    list_for_each_safe(walker, nxt, &cfs_symbol_list) {
-       sym = list_entry (walker, struct cfs_symbol, sym_list);
-        if (!strcmp(sym->name, name)) {
-            LASSERT(sym->ref == 0);
-           list_del (&sym->sym_list);
-           kfree(sym);
-            break;
-        }
-    }
-       up_write(&cfs_symbol_lock);
-}
-
-/*
- * cfs_symbol_clean
- *   To clean all the symbols
- *
- * Arguments:
- *   N/A
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-void
-cfs_symbol_clean()
-{
-    struct list_head          *walker;
-    struct cfs_symbol   *sym = NULL;
-
-       down_write(&cfs_symbol_lock);
-       list_for_each(walker, &cfs_symbol_list) {
-               sym = list_entry (walker, struct cfs_symbol, sym_list);
-               LASSERT(sym->ref == 0);
-               list_del (&sym->sym_list);
-               kfree(sym);
-       }
-       up_write(&cfs_symbol_lock);
-       return;
-}
-
-
-
-/*
- * Timer routines
- */
-
-
-/* Timer dpc procedure */
-
-static void
-cfs_timer_dpc_proc (
-    IN PKDPC Dpc,
-    IN PVOID DeferredContext,
-    IN PVOID SystemArgument1,
-    IN PVOID SystemArgument2)
-{
-    struct timer_list *   timer;
-    KIRQL           Irql;
-
-    timer = (struct timer_list *) DeferredContext;
-
-    /* clear the flag */
-    KeAcquireSpinLock(&(timer->Lock), &Irql);
-    cfs_clear_flag(timer->Flags, CFS_TIMER_FLAG_TIMERED);
-    KeReleaseSpinLock(&(timer->Lock), Irql);
-
-    /* call the user specified timer procedure */
-    timer->proc((long_ptr_t)timer->arg);
-}
-
-void cfs_init_timer(struct timer_list *timer)
-{
-    memset(timer, 0, sizeof(struct timer_list));
-}
-
-/*
- * cfs_timer_init
- *   To initialize the struct timer_list
- *
- * Arguments:
- *   timer:  the cfs_timer to be initialized
- *   func:   the timer callback procedure
- *   arg:    argument for the callback proc
- *
- * Return Value:
- *   N/A
- *
- * Notes:
- *   N/A
- */
-
-void cfs_timer_init(struct timer_list *timer, void (*func)(ulong_ptr_t), void *arg)
-{
-    memset(timer, 0, sizeof(struct timer_list));
-
-    timer->proc = func;
-    timer->arg  = arg;
-
-    KeInitializeSpinLock(&(timer->Lock));
-    KeInitialize