Whamcloud - gitweb
LU-5396: use gfp_t for gfp mask, instead of (unsigned) int
[fs/lustre-release.git] / libcfs / include / libcfs / linux / linux-time.h
index 3d4cdf5..f85ca34 100644 (file)
@@ -1,26 +1,41 @@
-/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*-
- * vim:expandtab:shiftwidth=8:tabstop=8:
+/*
+ * GPL HEADER START
  *
- * Copyright (C) 2004 Cluster File Systems, Inc.
- * Author: Nikita Danilov <nikita@clusterfs.com>
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
- * This file is part of Lustre, http://www.lustre.org.
+ * 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.
  *
- * Lustre is free software; you can redistribute it and/or modify it under the
- * terms of version 2 of the GNU General Public License as published by the
- * Free Software Foundation.
+ * This program is distributed in the hope that it 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).
  *
- * Lustre 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 for more
- * details.
+ * 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
  *
- * You should have received a copy of the GNU General Public License along
- * with Lustre; if not, write to the Free Software Foundation, Inc., 675 Mass
- * Ave, Cambridge, MA 02139, USA.
+ * 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/linux/linux-time.h
  *
  * Implementation of portable time API for Linux (kernel and user-level).
  *
+ * Author: Nikita Danilov <nikita@clusterfs.com>
  */
 
 #ifndef __LIBCFS_LINUX_LINUX_TIME_H__
 #error Do not #include this file directly. #include <libcfs/libcfs.h> instead
 #endif
 
+#ifndef __KERNEL__
+#error This include is only for kernel use.
+#endif
+
 /* Portable time API */
 
 /*
@@ -48,8 +67,8 @@
  *  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);
+ *  int            cfs_impl_time_before (cfs_time_t, cfs_time_t);
+ *  int            cfs_impl_time_before_eq(cfs_time_t, cfs_time_t);
  *
  *  cfs_duration_t cfs_duration_build(int64_t);
  *
 #define ONE_BILLION ((u_int64_t)1000000000)
 #define ONE_MILLION 1000000
 
-#ifdef __KERNEL__
-#ifndef AUTOCONF_INCLUDED
-#include <linux/config.h>
+#ifndef __KERNEL__
+#error This include is only for kernel use.
 #endif
+
 #include <linux/module.h>
 #include <linux/kernel.h>
 #include <linux/version.h>
 
 #include <libcfs/linux/portals_compat25.h>
 
-#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0))
-
-/*
- * old kernels---CURRENT_TIME is struct timeval
- */
-typedef struct timeval cfs_fs_time_t;
-
-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  = t->tv_sec;
-        s->tv_nsec = t->tv_usec * 1000;
-}
-
-/*
- * internal helper function used by cfs_fs_time_before*()
- */
-static inline unsigned long long __cfs_fs_time_flat(cfs_fs_time_t *t)
-{
-        return (unsigned long long)t->tv_sec * ONE_MILLION + t->tv_usec;
-}
-
-#define CURRENT_KERN_TIME        xtime
-
-#else
-/* (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) */
-
 /*
  * post 2.5 kernels.
  */
@@ -142,10 +130,6 @@ static inline unsigned long long __cfs_fs_time_flat(cfs_fs_time_t *t)
         return (unsigned long long)t->tv_sec * ONE_BILLION + t->tv_nsec;
 }
 
-#define CURRENT_KERN_TIME        CURRENT_TIME
-
-/* (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) */
-#endif
 
 /*
  * Generic kernel stuff
@@ -153,41 +137,31 @@ static inline unsigned long long __cfs_fs_time_flat(cfs_fs_time_t *t)
 
 typedef unsigned long cfs_time_t;      /* jiffies */
 typedef long cfs_duration_t;
+typedef cycles_t cfs_cycles_t;
 
-
-static inline cfs_time_t cfs_time_current(void)
-{
-        return jiffies;
-}
-
-static inline time_t cfs_time_current_sec(void)
-{
-        return CURRENT_SECONDS;
-}
-
-static inline cfs_time_t cfs_time_add(cfs_time_t t, cfs_duration_t d)
+static inline int cfs_time_before(cfs_time_t t1, cfs_time_t t2)
 {
-        return t + d;
+        return time_before(t1, t2);
 }
 
-static inline cfs_duration_t cfs_time_sub(cfs_time_t t1, cfs_time_t t2)
+static inline int cfs_time_beforeq(cfs_time_t t1, cfs_time_t t2)
 {
-        return t1 - t2;
+        return time_before_eq(t1, t2);
 }
 
-static inline int cfs_time_before(cfs_time_t t1, cfs_time_t t2)
+static inline cfs_time_t cfs_time_current(void)
 {
-        return time_before(t1, t2);
+        return jiffies;
 }
 
-static inline int cfs_time_beforeq(cfs_time_t t1, cfs_time_t t2)
+static inline time_t cfs_time_current_sec(void)
 {
-        return time_before_eq(t1, t2);
+       return get_seconds();
 }
 
 static inline void cfs_fs_time_current(cfs_fs_time_t *t)
 {
-        *t = CURRENT_KERN_TIME;
+       *t = CURRENT_TIME;
 }
 
 static inline time_t cfs_fs_time_sec(cfs_fs_time_t *t)
@@ -242,7 +216,8 @@ static inline void cfs_duration_usec(cfs_duration_t d, struct timeval *s)
         s->tv_usec = t;
 #else
         s->tv_sec = d / HZ;
-        s->tv_usec = ((d - (cfs_duration_t)s->tv_sec * HZ) * ONE_MILLION) / HZ;
+        s->tv_usec = ((d - (cfs_duration_t)s->tv_sec * HZ) * \
+                ONE_MILLION) / HZ;
 #endif
 }
 
@@ -261,8 +236,6 @@ static inline void cfs_duration_nsec(cfs_duration_t d, struct timespec *s)
 #endif
 }
 
-#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,0)
-
 #define cfs_time_current_64 get_jiffies_64
 
 static inline __u64 cfs_time_add_64(__u64 t, __u64 d)
@@ -286,13 +259,6 @@ static inline int cfs_time_beforeq_64(__u64 t1, __u64 t2)
         return (__s64)t2 - (__s64)t1 >= 0;
 }
 
-#else
-#define cfs_time_current_64 cfs_time_current
-#define cfs_time_add_64     cfs_time_add
-#define cfs_time_shift_64   cfs_time_shift
-#define cfs_time_before_64  cfs_time_before
-#define cfs_time_beforeq_64 cfs_time_beforeq
-#endif
 
 /*
  * One jiffy
@@ -302,20 +268,8 @@ static inline int cfs_time_beforeq_64(__u64 t1, __u64 t2)
 #define CFS_TIME_T              "%lu"
 #define CFS_DURATION_T          "%ld"
 
-#else   /* !__KERNEL__ */
 
-/*
- * Liblustre. time(2) based implementation.
- */
-
-#define CFS_TIME_T              "%lu"
-
-#include <libcfs/user-time.h>
-
-#endif /* __KERNEL__ */
-
-/* __LIBCFS_LINUX_LINUX_TIME_H__ */
-#endif
+#endif /* __LIBCFS_LINUX_LINUX_TIME_H__ */
 /*
  * Local variables:
  * c-indentation-style: "K&R"