X-Git-Url: https://git.whamcloud.com/?a=blobdiff_plain;f=lustre%2Fportals%2Finclude%2Flinux%2Flibcfs.h;h=d1a5c4485bbc17fe0e7fbfd283cab1acd802a5e0;hb=c39489126f88bb5b30643ebb11c72fbe9f9d2241;hp=c2a15f4087a140fb9ce6d1497d6548938f33d848;hpb=2dc9c16e770415d56839e1996015fec5fab93f29;p=fs%2Flustre-release.git diff --git a/lustre/portals/include/linux/libcfs.h b/lustre/portals/include/linux/libcfs.h index c2a15f4..d1a5c44 100644 --- a/lustre/portals/include/linux/libcfs.h +++ b/lustre/portals/include/linux/libcfs.h @@ -2,51 +2,58 @@ * vim:expandtab:shiftwidth=8:tabstop=8: */ #ifndef _LIBCFS_H +#define _LIBCFS_H - -#define PORTAL_DEBUG - -/* I think this beast is just trying to get cycles_t and get_cycles(). - * this should be in its own header. */ -#ifdef __linux__ -# include -# if defined(__powerpc__) && !defined(__KERNEL__) -# define __KERNEL__ -# include -# undef __KERNEL__ -# else -# if defined(__KERNEL__) -# include -# else -# include -# define cycles_t unsigned long -static inline cycles_t get_cycles(void) -{ - struct timeval tv; - gettimeofday(&tv, NULL); - return (tv.tv_sec * 100000) + tv.tv_usec; -} -# endif -# endif -#else -# include -typedef u_int32_t __u32; -typedef u_int64_t __u64; -#endif +#include #ifdef __KERNEL__ # include +# include #else # include # define do_gettimeofday(tv) gettimeofday(tv, NULL); +typedef unsigned long long cycles_t; #endif +#define PORTAL_DEBUG + #ifndef offsetof # define offsetof(typ,memb) ((unsigned long)((char *)&(((typ *)0)->memb))) #endif #define LOWEST_BIT_SET(x) ((x) & ~((x) - 1)) +#ifndef __KERNEL__ +/* Userpace byte flipping */ +# include +# include +# define __swab16(x) bswap_16(x) +# define __swab32(x) bswap_32(x) +# define __swab64(x) bswap_64(x) +# define __swab16s(x) do {*(x) = bswap_16(*(x));} while (0) +# define __swab32s(x) do {*(x) = bswap_32(*(x));} while (0) +# define __swab64s(x) do {*(x) = bswap_64(*(x));} while (0) +# if __BYTE_ORDER == __LITTLE_ENDIAN +# define le16_to_cpu(x) (x) +# define cpu_to_le16(x) (x) +# define le32_to_cpu(x) (x) +# define cpu_to_le32(x) (x) +# define le64_to_cpu(x) (x) +# define cpu_to_le64(x) (x) +# else +# if __BYTE_ORDER == __BIG_ENDIAN +# define le16_to_cpu(x) bswap_16(x) +# define cpu_to_le16(x) bswap_16(x) +# define le32_to_cpu(x) bswap_32(x) +# define cpu_to_le32(x) bswap_32(x) +# define le64_to_cpu(x) bswap_64(x) +# define cpu_to_le64(x) bswap_64(x) +# else +# error "Unknown byte order" +# endif /* __BIG_ENDIAN */ +# endif /* __LITTLE_ENDIAN */ +#endif /* ! __KERNEL__ */ + /* * Debugging */ @@ -54,7 +61,24 @@ extern unsigned int portal_subsystem_debug; extern unsigned int portal_stack; extern unsigned int portal_debug; extern unsigned int portal_printk; -extern unsigned int portal_cerror; + +#include +struct ptldebug_header { + __u32 ph_len; + __u32 ph_flags; + __u32 ph_subsys; + __u32 ph_mask; + __u32 ph_cpu_id; + __u32 ph_sec; + __u64 ph_usec; + __u32 ph_stack; + __u32 ph_pid; + __u32 ph_extern_pid; + __u32 ph_line_num; +} __attribute__((packed)); + +#define PH_FLAG_FIRST_RECORD 1 + /* Debugging subsystems (32 bits, non-overlapping) */ #define S_UNDEFINED 0x00000001 #define S_MDC 0x00000002 @@ -78,10 +102,12 @@ extern unsigned int portal_cerror; #define S_GMNAL 0x00080000 #define S_PTLROUTER 0x00100000 #define S_COBD 0x00200000 -#define S_IBNAL 0x00400000 -#define S_LMV 0x00800000 -#define S_SM 0x01000000 -#define S_CMOBD 0x02000000 +#define S_OPENIBNAL 0x00400000 +#define S_SM 0x00800000 +#define S_ASOBD 0x01000000 +#define S_LMV 0x02000000 +#define S_CMOBD 0x04000000 + /* If you change these values, please keep portals/utils/debug.c * up to date! */ @@ -109,7 +135,8 @@ extern unsigned int portal_cerror; #define D_RPCTRACE 0x00100000 /* for distributed debugging */ #define D_VFSTRACE 0x00200000 #define D_READA 0x00400000 /* read-ahead */ - +#define D_MMAP 0x00800000 +#define D_CONFIG 0x01000000 #ifdef __KERNEL__ # include /* THREAD_SIZE */ #else @@ -129,7 +156,7 @@ extern unsigned int portal_cerror; # define CDEBUG_STACK (THREAD_SIZE - \ ((unsigned long)__builtin_frame_address(0) & \ (THREAD_SIZE - 1))) -# endif +# endif /* __ia64__ */ #define CHECK_STACK(stack) \ do { \ @@ -141,7 +168,7 @@ extern unsigned int portal_cerror; /*panic("LBUG");*/ \ } \ } while (0) -#else /* __KERNEL__ */ +#else /* !__KERNEL__ */ #define CHECK_STACK(stack) do { } while(0) #define CDEBUG_STACK (0L) #endif /* __KERNEL__ */ @@ -149,8 +176,6 @@ extern unsigned int portal_cerror; #if 1 #define CDEBUG(mask, format, a...) \ do { \ - if (portal_cerror == 0) \ - break; \ CHECK_STACK(CDEBUG_STACK); \ if (((mask) & (D_ERROR | D_EMERG | D_WARNING)) || \ (portal_debug & (mask) && \ @@ -192,15 +217,34 @@ do { \ } while(0) #else #define CDEBUG(mask, format, a...) do { } while (0) -#define CWARN(format, a...) do { } while (0) -#define CERROR(format, a...) printk("<3>" format, ## a) -#define CEMERG(format, a...) printk("<0>" format, ## a) +#define CWARN(format, a...) printk(KERN_WARNING format, ## a) +#define CERROR(format, a...) printk(KERN_ERR format, ## a) +#define CEMERG(format, a...) printk(KERN_EMERG format, ## a) #define GOTO(label, rc) do { (void)(rc); goto label; } while (0) #define RETURN(rc) return (rc) #define ENTRY do { } while (0) #define EXIT do { } while (0) #endif +/* initial pid */ +# if CRAY_PORTALS +/* + * + * 1) ptl_pid_t in cray portals is only 16 bits, not 32 bits, therefore this is too + * big. + * + * 2) the implementation of ernal in cray portals further restricts the pid space + * that may be used to 0 <= pid <= 255 (an 8 bit value). Returns an error at nal + * init time for any pid outside this range. Other nals in cray portals don't have + * this restriction. + * */ +#define LUSTRE_PTL_PID 9 +# else +#define LUSTRE_PTL_PID 12345 +# endif + +#define LUSTRE_SRV_PTL_PID LUSTRE_PTL_PID + #define PORTALS_CFG_VERSION 0x00010001; struct portals_cfg {