X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;ds=sidebyside;f=libcfs%2Finclude%2Flibcfs%2Flinux%2Fkp30.h;h=122a506c8e3dccf130b5b253af784b1a3bf9947a;hb=8057210befbffc5fe01202bfa4f231bad381a1e5;hp=378bfc7deccdb1d2dd4a1c7d8f2c68d5d6355f09;hpb=6869932b552ac705f411de3362f01bd50c1f6f7d;p=fs%2Flustre-release.git diff --git a/libcfs/include/libcfs/linux/kp30.h b/libcfs/include/libcfs/linux/kp30.h index 378bfc7..122a506 100644 --- a/libcfs/include/libcfs/linux/kp30.h +++ b/libcfs/include/libcfs/linux/kp30.h @@ -26,7 +26,7 @@ * GPL HEADER END */ /* - * Copyright 2008 Sun Microsystems, Inc. All rights reserved + * Copyright (c) 2008, 2010, Oracle and/or its affiliates. All rights reserved. * Use is subject to license terms. */ /* @@ -72,33 +72,12 @@ #ifdef HAVE_MM_INLINE # include #endif -#if (LINUX_VERSION_CODE > KERNEL_VERSION(2,5,0)) -# include -# include -#endif +#include +#include +#include #include -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -#define schedule_work schedule_task -#define prepare_work(wq,cb,cbdata) \ -do { \ - INIT_TQUEUE((wq), 0, 0); \ - PREPARE_TQUEUE((wq), (cb), (cbdata)); \ -} while (0) - -#define PageUptodate Page_Uptodate -#define our_recalc_sigpending(current) recalc_sigpending(current) -#define num_online_cpus() smp_num_cpus -static inline void our_cond_resched(void) -{ - if (current->need_resched) - schedule (); -} -#define work_struct_t struct tq_struct -#define cfs_get_work_data(type,field,data) (data) -#else - #ifdef HAVE_3ARGS_INIT_WORK #define prepare_work(wq,cb,cbdata) \ @@ -119,40 +98,31 @@ do { \ #endif +#define cfs_num_online_cpus() num_online_cpus() #define wait_on_page wait_on_page_locked #define our_recalc_sigpending(current) recalc_sigpending() #define strtok(a,b) strpbrk(a, b) -static inline void our_cond_resched(void) -{ - cond_resched(); -} #define work_struct_t struct work_struct -#endif /* LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) */ - #ifdef CONFIG_SMP #define LASSERT_SPIN_LOCKED(lock) LASSERT(spin_is_locked(lock)) +#define LINVRNT_SPIN_LOCKED(lock) LINVRNT(spin_is_locked(lock)) #else -#define LASSERT_SPIN_LOCKED(lock) do {} while(0) +#define LASSERT_SPIN_LOCKED(lock) do {(void)sizeof(lock);} while(0) +#define LINVRNT_SPIN_LOCKED(lock) do {(void)sizeof(lock);} while(0) #endif #define LASSERT_SEM_LOCKED(sem) LASSERT(down_trylock(sem) != 0) +#ifdef HAVE_SEM_COUNT_ATOMIC +#define SEM_COUNT(sem) (atomic_read(&(sem)->count)) +#else +#define SEM_COUNT(sem) ((sem)->count) +#endif + #define LIBCFS_PANIC(msg) panic(msg) /* ------------------------------------------------------------------- */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) - -#define PORTAL_SYMBOL_REGISTER(x) inter_module_register(#x, THIS_MODULE, &x) -#define PORTAL_SYMBOL_UNREGISTER(x) inter_module_unregister(#x) - -#define PORTAL_SYMBOL_GET(x) ((typeof(&x))inter_module_get(#x)) -#define PORTAL_SYMBOL_PUT(x) inter_module_put(#x) - -#define PORTAL_MODULE_USE MOD_INC_USE_COUNT -#define PORTAL_MODULE_UNUSE MOD_DEC_USE_COUNT -#else - #define PORTAL_SYMBOL_REGISTER(x) #define PORTAL_SYMBOL_UNREGISTER(x) @@ -162,26 +132,15 @@ static inline void our_cond_resched(void) #define PORTAL_MODULE_USE try_module_get(THIS_MODULE) #define PORTAL_MODULE_UNUSE module_put(THIS_MODULE) -#endif /******************************************************************************/ /* Module parameter support */ -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0)) -# define CFS_MODULE_PARM(name, t, type, perm, desc) \ - MODULE_PARM(name, t);\ - MODULE_PARM_DESC(name, desc) - -#else -# define CFS_MODULE_PARM(name, t, type, perm, desc) \ +#define CFS_MODULE_PARM(name, t, type, perm, desc) \ module_param(name, type, perm);\ MODULE_PARM_DESC(name, desc) -#endif -#if (LINUX_VERSION_CODE < KERNEL_VERSION(2,6,9)) -# define CFS_SYSFS_MODULE_PARM 0 /* no sysfs module parameters */ -#else -# define CFS_SYSFS_MODULE_PARM 1 /* module parameters accessible via sysfs */ -#endif +#define CFS_SYSFS_MODULE_PARM 1 /* module parameters accessible via sysfs */ + /******************************************************************************/ #if (__GNUC__) @@ -201,13 +160,11 @@ static inline void our_cond_resched(void) # define time(a) CURRENT_TIME #ifndef num_possible_cpus -#define num_possible_cpus() NR_CPUS -#endif -#if LINUX_VERSION_CODE < KERNEL_VERSION(2,5,0) -#define i_size_read(a) ((a)->i_size) +#define cfs_num_possible_cpus() NR_CPUS +#else +#define cfs_num_possible_cpus() num_possible_cpus() #endif - /******************************************************************************/ /* Light-weight trace * Support for temporary event tracing with minimal Heisenberg effect. */ @@ -246,9 +203,9 @@ typedef struct { # if !KLWT_SUPPORT typedef struct _lwt_page { - struct list_head lwtp_list; - struct page *lwtp_page; - lwt_event_t *lwtp_events; + cfs_list_t lwtp_list; + struct page *lwtp_page; + lwt_event_t *lwtp_events; } lwt_page_t; typedef struct { @@ -283,8 +240,8 @@ do { \ \ if (cpu->lwtc_current_index >= LWT_EVENTS_PER_PAGE) { \ cpu->lwtc_current_page = \ - list_entry (p->lwtp_list.next, \ - lwt_page_t, lwtp_list); \ + cfs_list_entry (p->lwtp_list.next, \ + lwt_page_t, lwtp_list); \ cpu->lwtc_current_index = 0; \ } \ \ @@ -307,7 +264,7 @@ extern void lwt_fini (void); extern int lwt_lookup_string (int *size, char *knlptr, char *usrptr, int usrsize); extern int lwt_control (int enable, int clear); -extern int lwt_snapshot (cycles_t *now, int *ncpu, int *total_size, +extern int lwt_snapshot (cfs_cycles_t *now, int *ncpu, int *total_size, void *user_ptr, int user_size); # else /* __KERNEL__ */ # define LWT_EVENT(p1,p2,p3,p4) /* no userland implementation yet */ @@ -342,29 +299,34 @@ extern int lwt_snapshot (cycles_t *now, int *ncpu, int *total_size, #define _LWORDSIZE BITS_PER_LONG -#if defined(HAVE_U64_LONG_LONG) +#if (defined(__KERNEL__) && defined(HAVE_KERN__U64_LONG_LONG)) || \ + (!defined(__KERNEL__) && defined(HAVE_USER__U64_LONG_LONG)) # define LPU64 "%Lu" # define LPD64 "%Ld" # define LPX64 "%#Lx" +# define LPX64i "%Lx" +# define LPO64 "%#Lo" # define LPF64 "L" #else # define LPU64 "%lu" # define LPD64 "%ld" # define LPX64 "%#lx" +# define LPX64i "%lx" +# define LPO64 "%#lo" # define LPF64 "l" #endif -#ifdef HAVE_SIZE_T_LONG -# define LPSZ "%lu" -#else -# define LPSZ "%u" -#endif +/* + * long_ptr_t & ulong_ptr_t, same to "long" for gcc + */ +# define LPLU "%lu" +# define LPLD "%ld" +# define LPLX "%#lx" -#ifdef HAVE_SSIZE_T_LONG -# define LPSSZ "%ld" -#else -# define LPSSZ "%d" -#endif +/* + * pid_t + */ +# define LPPID "%d" #ifndef LPU64 # error "No word size defined" @@ -372,4 +334,30 @@ extern int lwt_snapshot (cycles_t *now, int *ncpu, int *total_size, #undef _LWORDSIZE +/* compat macroses */ +#ifndef HAVE_SCATTERLIST_SETPAGE +static inline void sg_set_page(struct scatterlist *sg, struct page *page, + unsigned int len, unsigned int offset) +{ + sg->page = page; + sg->offset = offset; + sg->length = len; +} +#endif + +#define cfs_smp_processor_id() smp_processor_id() + +#ifndef get_cpu +# ifdef CONFIG_PREEMPT +# define cfs_get_cpu() ({ preempt_disable(); smp_processor_id(); }) +# define cfs_put_cpu() preempt_enable() +# else +# define cfs_get_cpu() smp_processor_id() +# define cfs_put_cpu() +# endif +#else +# define cfs_get_cpu() get_cpu() +# define cfs_put_cpu() put_cpu() +#endif /* get_cpu & put_cpu */ + #endif