Whamcloud - gitweb
LU-5275 lprocfs: reduce scope of params_tree.h
[fs/lustre-release.git] / libcfs / include / libcfs / libcfs.h
index 8136fde..b0ce602 100644 (file)
@@ -27,7 +27,7 @@
  * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved.
  * Use is subject to license terms.
  *
- * Copyright (c) 2011, 2012, Intel Corporation.
+ * Copyright (c) 2011, 2014, Intel Corporation.
  */
 /*
  * This file is part of Lustre, http://www.lustre.org/
 #ifndef __LIBCFS_LIBCFS_H__
 #define __LIBCFS_LIBCFS_H__
 
-#if !__GNUC__
-#define __attribute__(x)
-#endif
+#include <libcfs/types.h>
+#include <libcfs/list.h>
 
-#if !defined(__WINNT__) && !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
+#ifdef __KERNEL__
+# include <libcfs/linux/libcfs.h>
+# include <libcfs/params_tree.h>
+#else /* !__KERNEL__ */
+# include <assert.h>
+# include <ctype.h>
+# include <errno.h>
+# include <fcntl.h>
+# include <limits.h>
+# include <signal.h>
+# include <stdarg.h>
+# include <stdbool.h>
+# include <stddef.h>
+# include <stdint.h>
+# include <stdio.h>
+# include <stdlib.h>
+# include <string.h>
+# include <time.h>
+# include <sys/ioctl.h>
+# include <sys/socket.h>
+# include <sys/stat.h>
+# include <sys/time.h>
+# include <sys/types.h>
+# include <libcfs/user-time.h>
+# include <libcfs/user-prim.h>
+# include <libcfs/user-mem.h>
+# include <libcfs/user-lock.h>
+# include <libcfs/user-tcpip.h>
+# include <libcfs/user-bitops.h>
+#endif /* __KERNEL__ */
 
 #include "curproc.h"
 
@@ -83,6 +101,21 @@ static inline int __is_po2(unsigned long long val)
 
 #define LOWEST_BIT_SET(x)       ((x) & ~((x) - 1))
 
+/* Sparse annotations */
+#ifdef __KERNEL__
+# if !defined(__must_hold)
+#  ifdef __CHECKER__
+#   define __must_hold(x) __attribute__((context(x, 1, 1)))
+#  else        /* __CHECKER__ */
+#   define __must_hold(x)
+#  endif /* !__CHECKER__ */
+# endif /* !__must_hold */
+#else /* __KERNEL__ */
+# define __acquires(x)
+# define __releases(x)
+# define __must_hold(x)
+#endif /* !__KERNEL__ */
+
 /*
  * Lustre Error Checksum: calculates checksum
  * of Hex number by XORing each bit.
@@ -90,7 +123,6 @@ static inline int __is_po2(unsigned long long val)
 #define LERRCHKSUM(hexnum) (((hexnum) & 0xf) ^ ((hexnum) >> 4 & 0xf) ^ \
                            ((hexnum) >> 8 & 0xf))
 
-
 /*
  * Some (nomina odiosa sunt) platforms define NULL as naked 0. This confuses
  * Lustre RETURN(NULL) macro.
@@ -101,12 +133,8 @@ static inline int __is_po2(unsigned long long val)
 
 #define NULL ((void *)0)
 
-#define LUSTRE_SRV_LNET_PID      LUSTRE_LNET_PID
-
 #ifdef __KERNEL__
 
-#include <libcfs/list.h>
-
 #ifndef cfs_for_each_possible_cpu
 #  error cfs_for_each_possible_cpu is not supported by kernel!
 #endif
@@ -152,7 +180,12 @@ void lc_watchdog_delete(struct lc_watchdog *lcw);
 /* Dump a debug log */
 void lc_watchdog_dumplog(pid_t pid, void *data);
 
-#endif /* __KERNEL__ */
+#else /* !__KERNEL__ */
+#include <unistd.h>
+#ifndef PAGE_SIZE
+#define PAGE_SIZE sysconf(_SC_PAGESIZE)
+#endif
+#endif /* !__KERNEL__ */
 
 /* need both kernel and user-land acceptor */
 #define LNET_ACCEPTOR_MIN_RESERVED_PORT    512
@@ -177,11 +210,11 @@ struct cfs_psdev_file {
 };
 
 struct cfs_psdev_ops {
-        int (*p_open)(unsigned long, void *);
-        int (*p_close)(unsigned long, void *);
-        int (*p_read)(struct cfs_psdev_file *, char *, unsigned long);
-        int (*p_write)(struct cfs_psdev_file *, char *, unsigned long);
-        int (*p_ioctl)(struct cfs_psdev_file *, unsigned long, void *);
+       int (*p_open)(unsigned long, void *);
+       int (*p_close)(unsigned long, void *);
+       int (*p_read)(struct cfs_psdev_file *, char *, unsigned long);
+       int (*p_write)(struct cfs_psdev_file *, char *, unsigned long);
+       int (*p_ioctl)(struct cfs_psdev_file *, unsigned long, void __user *);
 };
 
 /*
@@ -194,7 +227,6 @@ void cfs_enter_debugger(void);
  * Defined by platform
  */
 int unshare_fs_struct(void);
-sigset_t cfs_get_blocked_sigs(void);
 sigset_t cfs_block_allsigs(void);
 sigset_t cfs_block_sigs(unsigned long sigs);
 sigset_t cfs_block_sigsinv(unsigned long sigs);
@@ -225,35 +257,6 @@ void cfs_stack_trace_fill(struct cfs_stack_trace *trace);
  */
 void *cfs_stack_trace_frame(struct cfs_stack_trace *trace, int frame_no);
 
-#ifndef O_NOACCESS
-#define O_NOACCESS O_NONBLOCK
-#endif
-
-/*
- * Universal open flags.
- */
-#define CFS_O_NOACCESS          0003
-#define CFS_O_ACCMODE           CFS_O_NOACCESS
-#define CFS_O_CREAT             0100
-#define CFS_O_EXCL              0200
-#define CFS_O_NOCTTY            0400
-#define CFS_O_TRUNC             01000
-#define CFS_O_APPEND            02000
-#define CFS_O_NONBLOCK          04000
-#define CFS_O_NDELAY            CFS_O_NONBLOCK
-#define CFS_O_SYNC              010000
-#define CFS_O_ASYNC             020000
-#define CFS_O_DIRECT            040000
-#define CFS_O_LARGEFILE         0100000
-#define CFS_O_DIRECTORY         0200000
-#define CFS_O_NOFOLLOW          0400000
-#define CFS_O_NOATIME           01000000
-
-/* convert local open flags to universal open flags */
-int cfs_oflags2univ(int flags);
-/* convert universal open flags to local open flags */
-int cfs_univ2oflags(int flags);
-
 /*
  * Random number handling
  */
@@ -264,9 +267,12 @@ unsigned int cfs_rand(void);
 void cfs_srand(unsigned int, unsigned int);
 void cfs_get_random_bytes(void *buf, int size);
 
+#include <libcfs/byteorder.h>
+#include <libcfs/err.h>
 #include <libcfs/libcfs_debug.h>
-#include <libcfs/libcfs_cpu.h>
 #include <libcfs/libcfs_private.h>
+#include <libcfs/bitmap.h>
+#include <libcfs/libcfs_cpu.h>
 #include <libcfs/libcfs_ioctl.h>
 #include <libcfs/libcfs_prim.h>
 #include <libcfs/libcfs_time.h>
@@ -276,21 +282,22 @@ void cfs_get_random_bytes(void *buf, int size);
 #include <libcfs/libcfs_hash.h>
 #include <libcfs/libcfs_heap.h>
 #include <libcfs/libcfs_fail.h>
-#include <libcfs/params_tree.h>
-#include <libcfs/libcfs_crypto.h>
 
 /* container_of depends on "likely" which is defined in libcfs_private.h */
-static inline void *__container_of(void *ptr, unsigned long shift)
+static inline void *__container_of(const void *ptr, unsigned long shift)
 {
-        if (unlikely(IS_ERR(ptr) || ptr == NULL))
-                return ptr;
-        else
-                return (char *)ptr - shift;
+       if (unlikely(IS_ERR(ptr) || ptr == NULL))
+               return ERR_CAST(ptr);
+       else
+               return (char *)ptr - shift;
 }
 
-#define container_of0(ptr, type, member) \
-        ((type *)__container_of((void *)(ptr), offsetof(type, member)))
+#define container_of0(ptr, type, member)                               \
+       ((type *)__container_of((ptr), offsetof(type, member)))
 
 #define _LIBCFS_H
 
+int libcfs_arch_init(void);
+void libcfs_arch_cleanup(void);
+
 #endif /* _LIBCFS_H */