X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=libcfs%2Finclude%2Flibcfs%2Flinux%2Fkp30.h;h=205fdfd3073f842a1510424e768777c5ed11b211;hp=1f0badd07b6f781d973528bc78019a7d8cd7ebff;hb=5084bc64c685c6584afd055fab0347f52040cfc2;hpb=16b9e913b378fcf6ce17b8337beae93b8ec1fbb1 diff --git a/libcfs/include/libcfs/linux/kp30.h b/libcfs/include/libcfs/linux/kp30.h index 1f0badd..205fdfd 100644 --- a/libcfs/include/libcfs/linux/kp30.h +++ b/libcfs/include/libcfs/linux/kp30.h @@ -1,6 +1,4 @@ -/* -*- mode: c; c-basic-offset: 8; indent-tabs-mode: nil; -*- - * vim:expandtab:shiftwidth=8:tabstop=8: - * +/* * GPL HEADER START * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -26,8 +24,10 @@ * 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. + * + * Copyright (c) 2011, 2012, Intel Corporation. */ /* * This file is part of Lustre, http://www.lustre.org/ @@ -38,9 +38,6 @@ #define __LIBCFS_LINUX_KP30_H__ -#ifndef AUTOCONF_INCLUDED -# include -#endif #include #include #include @@ -48,7 +45,6 @@ #include #include #include -#include #include #include #include @@ -60,7 +56,6 @@ #include #include #include -#include #include #include #include @@ -72,34 +67,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) \ @@ -120,17 +93,12 @@ 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)) @@ -138,7 +106,9 @@ static inline void our_cond_resched(void) #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) +#define LASSERT_MUTEX_LOCKED(x) LASSERT(mutex_is_locked(x)) #ifdef HAVE_SEM_COUNT_ATOMIC #define SEM_COUNT(sem) (atomic_read(&(sem)->count)) @@ -150,18 +120,6 @@ static inline void our_cond_resched(void) /* ------------------------------------------------------------------- */ -#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) @@ -171,26 +129,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__) @@ -209,13 +156,8 @@ static inline void our_cond_resched(void) # define printf(format, b...) CDEBUG(D_OTHER, format , ## b) # 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) -#endif - +# define cfs_num_possible_cpus() num_possible_cpus() +# define cfs_num_present_cpus() num_present_cpus() /******************************************************************************/ /* Light-weight trace @@ -255,9 +197,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 { @@ -292,8 +234,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; \ } \ \ @@ -316,7 +258,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 */ @@ -351,15 +293,20 @@ extern int lwt_snapshot (cycles_t *now, int *ncpu, int *total_size, #define _LWORDSIZE BITS_PER_LONG -#if defined(HAVE_U64_LONG_LONG) -# define LPU64 "%Lu" -# define LPD64 "%Ld" -# define LPX64 "%#Lx" +#if (defined(__KERNEL__) && defined(HAVE_KERN__U64_LONG_LONG)) || \ + (!defined(__KERNEL__) && defined(HAVE_USER__U64_LONG_LONG)) +# define LPU64 "%llu" +# define LPD64 "%lld" +# define LPX64 "%#llx" +# define LPX64i "%llx" +# define LPO64 "%#llo" # define LPF64 "L" #else # define LPU64 "%lu" # define LPD64 "%ld" # define LPX64 "%#lx" +# define LPX64i "%lx" +# define LPO64 "%#lo" # define LPF64 "l" #endif @@ -375,18 +322,6 @@ extern int lwt_snapshot (cycles_t *now, int *ncpu, int *total_size, */ # define LPPID "%d" -#ifdef HAVE_SIZE_T_LONG -# define LPSZ "%lu" -#else -# define LPSZ "%u" -#endif - -#ifdef HAVE_SSIZE_T_LONG -# define LPSSZ "%ld" -#else -# define LPSSZ "%d" -#endif - #ifndef LPU64 # error "No word size defined" #endif @@ -402,7 +337,34 @@ static inline void sg_set_page(struct scatterlist *sg, struct page *page, sg->offset = offset; sg->length = len; } + +static inline void sg_assign_page(struct scatterlist *sg, struct page *page) +{ + sg->page = page; +} #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 */ + +#ifdef HAVE_SYSCTL_CTLNAME +#define INIT_CTL_NAME(a) .ctl_name = a, +#define INIT_STRATEGY(a) .strategy = a, +#else +#define INIT_CTL_NAME(a) +#define INIT_STRATEGY(a) +#endif #endif