Mercurial > hg > Game > Atoc
view include/hvcalls/repository.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 source
/** * hvcalls/repository.h * リポジトリ関連のハイパーバイザコール詰め合わせ */ #ifndef HVCALLS__REPOSITORY_H #define HVCALLS__REPOSITORY_H #include <asm/lv1call.h> #include "common.h" //-------------------------------------------------------------------------------------- hvc_make_repository_first_key() /** * hvc_make_repository_first_key * リポジトリノードの第 1 レベルキーを生成する * * @param char *text [IN] キーのテキスト部 * @param HVC_u64 index [IN] キーのインデックス部 * @return HVC_u64 第 1 レベルキー値 * @static * @inline */ static inline HVC_u64 hvc_make_repository_first_key ( const char *const text, const HVC_u64 index ) { HVC_u64 ret; strncpy((char *)&ret, text, 8); // [Note] strncpy は text が 8 文字未満の場合は残りを 0 で埋めるらしい... return (ret >> 32) + index; } //-------------------------------------------------------------------------------------------- hvc_make_repository_key() /** * hvc_make_repository_key * リポジトリノードのキーを生成する * * @param char *text [IN] キーのテキスト部 * @param HVC_u64 index [IN] キーのインデックス部 * @return HVC_u64 キー値 * @static * @inline */ static inline HVC_u64 hvc_make_repository_key ( const char *const text, const HVC_u64 index ) { HVC_u64 ret; strncpy((char *)&ret, text, 8); return ret + index; } //-------------------------------------------------------------------------------------------- hvc_get_repository_node() /** * hvc_get_repository_node (91:lv1_get_repository_node_value) * リポジトリノードの値を取得する * * @param HVC_u64 lpar_id [IN] 論理パーティション識別子 * @param HVC_u64 key1 [IN] 第 1 レベルキー * @param HVC_u64 key2 [IN] 第 2 レベルキー * @param HVC_u64 key3 [IN] 第 3 レベルキー * @param HVC_u64 key4 [IN] 第 4 レベルキー * @param HVC_u64 *val1 [OUT] リポジトリノードの値 1 * @param HVC_u64 *val2 [OUT] リポジトリノードの値 2 * @return int 0...成功, not 0...失敗 * @static * @inline */ static inline int hvc_get_repository_node ( const HVC_u64 lpar_id, const HVC_u64 key1, const HVC_u64 key2, const HVC_u64 key3, const HVC_u64 key4, HVC_u64 *const val1, HVC_u64 *const val2 ) { HVC_u64 ret = lv1_get_repository_node_value ( lpar_id, key1, key2, key3, key4, val1, val2 ); HVCALLS_PRINT_INFO("lv1_get_repository_node_value"); if (ret) { HVCALLS_PRINT_ERR("lv1_get_repository_node_value FAILED.", ret); } else { HVCALLS_PRINT_VALUE_HEX(" 1st key", key1); HVCALLS_PRINT_VALUE_HEX(" 2nd key", key2); HVCALLS_PRINT_VALUE_HEX(" 3rd key", key3); HVCALLS_PRINT_VALUE_HEX(" 4th key", key4); HVCALLS_PRINT_VALUE_HEX(" value 1", *val1); HVCALLS_PRINT_VALUE_HEX(" value 2", *val2); } return (int)ret; } #endif /*HVCALLS__REPOSITORY_H*/