comparison 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
comparison
equal deleted inserted replaced
-1:000000000000 0:42f240cc4bc6
1 /**
2 * hvcalls/common.h
3 * ハイパーバイザコール詰め合わせの共通部分
4 */
5
6 #ifndef HVCALLS__COMMON_H
7 #define HVCALLS__COMMON_H
8
9 #include <linux/kernel.h>
10 #include <asm/types.h>
11
12
13 // 64 ビット値のフォーマット指定子を定義
14 #if defined __powerpc64__
15 # define HVCALLS_S64DFMT "%ld" // signed
16 # define HVCALLS_U64UFMT "%lu" // unsigned (dec)
17 # define HVCALLS_U64XFMT "%016lx" // unsigned (hex)
18 #elif defined __GNUC__
19 # define HVCALLS_S64DFMT "%lld" // signed
20 # define HVCALLS_U64UFMT "%llu" // unsigned (dec)
21 # define HVCALLS_U64XFMT "%016llx" // unsigned (hex)
22 #else
23 # error Can't determine 64bit format string.
24 #endif /*defined __GNUC__, defined __powerpc64__*/
25
26 // 整数型のエイリアスを定義
27 typedef __u64 HVC_u64;
28
29
30 // IS_DEBUG_MODE が定義されている場合は
31 // HVCALLS_DO_PRINT_INFO も定義されたものとする
32 #ifdef IS_DEBUG_MODE
33 # ifndef HVCALLS_DO_PRINT_INFO
34 # define HVCALLS_DO_PRINT_INFO
35 # endif
36 #endif /*IS_DEBUG_MODE*/
37
38 #ifdef HVCALLS_DO_PRINT_INFO
39 // プリフィックス/サフィックスを定義
40 # ifdef MODULE_NAME
41 # define HVCALLS_PREFIX MODULE_NAME " [hvcall] "
42 # else
43 # define HVCALLS_PREFIX "[hvcall] "
44 # endif
45 # define HVCALLS_SUFFIX // お好みで...
46 // 情報出力用マクロの定義
47 # define HVCALLS_PRINT_INFO(str) \
48 printk(KERN_INFO HVCALLS_PREFIX str HVCALLS_SUFFIX "\n")
49 # define HVCALLS_PRINT_VALUE_S64(str, value) \
50 printk(KERN_INFO HVCALLS_PREFIX str " (" HVCALLS_S64DFMT ")" HVCALLS_SUFFIX "\n", value)
51 # define HVCALLS_PRINT_VALUE_U64(str, value) \
52 printk(KERN_INFO HVCALLS_PREFIX str " (" HVCALLS_U64UFMT ")" HVCALLS_SUFFIX "\n", value)
53 # define HVCALLS_PRINT_VALUE_HEX(str, value) \
54 printk(KERN_INFO HVCALLS_PREFIX str " (0x" HVCALLS_U64XFMT ")" HVCALLS_SUFFIX "\n", value)
55 #else
56 # define HVCALLS_PRINT_INFO(str)
57 # define HVCALLS_PRINT_VALUE_S64(str, value)
58 # define HVCALLS_PRINT_VALUE_U64(str, value)
59 # define HVCALLS_PRINT_VALUE_HEX(str, value)
60 #endif /*HVCALLS_DO_PRINT_INFO*/
61
62 // エラー出力用マクロの定義
63 #define HVCALLS_PRINT_ERR(str, value) \
64 printk(KERN_ERR "Error: %s\n\t[%s(%d) %s : value(" HVCALLS_S64DFMT ")]\n", \
65 str, __FILE__, __LINE__, __func__, (__s64)value)
66
67
68 #endif /*HVCALLS__COMMON_H*/