Mercurial > hg > Game > Atoc
diff include/hvcalls/common.h @ 0:42f240cc4bc6
From: 太田 篤志 <atoc@namikilab.tuat.ac.jp>
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Tue, 08 Sep 2009 13:44:18 +0900 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/include/hvcalls/common.h Tue Sep 08 13:44:18 2009 +0900 @@ -0,0 +1,68 @@ +/** + * hvcalls/common.h + * ハイパーバイザコール詰め合わせの共通部分 + */ + +#ifndef HVCALLS__COMMON_H +#define HVCALLS__COMMON_H + +#include <linux/kernel.h> +#include <asm/types.h> + + +// 64 ビット値のフォーマット指定子を定義 +#if defined __powerpc64__ +# define HVCALLS_S64DFMT "%ld" // signed +# define HVCALLS_U64UFMT "%lu" // unsigned (dec) +# define HVCALLS_U64XFMT "%016lx" // unsigned (hex) +#elif defined __GNUC__ +# define HVCALLS_S64DFMT "%lld" // signed +# define HVCALLS_U64UFMT "%llu" // unsigned (dec) +# define HVCALLS_U64XFMT "%016llx" // unsigned (hex) +#else +# error Can't determine 64bit format string. +#endif /*defined __GNUC__, defined __powerpc64__*/ + +// 整数型のエイリアスを定義 +typedef __u64 HVC_u64; + + +// IS_DEBUG_MODE が定義されている場合は +// HVCALLS_DO_PRINT_INFO も定義されたものとする +#ifdef IS_DEBUG_MODE +# ifndef HVCALLS_DO_PRINT_INFO +# define HVCALLS_DO_PRINT_INFO +# endif +#endif /*IS_DEBUG_MODE*/ + +#ifdef HVCALLS_DO_PRINT_INFO + // プリフィックス/サフィックスを定義 +# ifdef MODULE_NAME +# define HVCALLS_PREFIX MODULE_NAME " [hvcall] " +# else +# define HVCALLS_PREFIX "[hvcall] " +# endif +# define HVCALLS_SUFFIX // お好みで... + // 情報出力用マクロの定義 +# define HVCALLS_PRINT_INFO(str) \ + printk(KERN_INFO HVCALLS_PREFIX str HVCALLS_SUFFIX "\n") +# define HVCALLS_PRINT_VALUE_S64(str, value) \ + printk(KERN_INFO HVCALLS_PREFIX str " (" HVCALLS_S64DFMT ")" HVCALLS_SUFFIX "\n", value) +# define HVCALLS_PRINT_VALUE_U64(str, value) \ + printk(KERN_INFO HVCALLS_PREFIX str " (" HVCALLS_U64UFMT ")" HVCALLS_SUFFIX "\n", value) +# define HVCALLS_PRINT_VALUE_HEX(str, value) \ + printk(KERN_INFO HVCALLS_PREFIX str " (0x" HVCALLS_U64XFMT ")" HVCALLS_SUFFIX "\n", value) +#else +# define HVCALLS_PRINT_INFO(str) +# define HVCALLS_PRINT_VALUE_S64(str, value) +# define HVCALLS_PRINT_VALUE_U64(str, value) +# define HVCALLS_PRINT_VALUE_HEX(str, value) +#endif /*HVCALLS_DO_PRINT_INFO*/ + +// エラー出力用マクロの定義 +#define HVCALLS_PRINT_ERR(str, value) \ + printk(KERN_ERR "Error: %s\n\t[%s(%d) %s : value(" HVCALLS_S64DFMT ")]\n", \ + str, __FILE__, __LINE__, __func__, (__s64)value) + + +#endif /*HVCALLS__COMMON_H*/