view include/hvcalls/ppe.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/ppe.h
 * PPE 関連のハイパーバイザコール詰め合わせ
 */

#ifndef HVCALLS__PPE_H
#define HVCALLS__PPE_H

#include <asm/lv1call.h>
#include "common.h"


//---------------------------------------------------------------------------------------------------- hvc_get_lpar_id()
/**
 * hvc_get_lpar_id (74:lv1_get_logical_partition_id)
 * 呼び出し元の論理 PPE が属する論理パーティション識別子を返す
 *
 * @param  HVC_u64 *lpar_id  [OUT] 論理パーティション識別子
 * @return void
 * @static
 * @inline
 */
static inline void hvc_get_lpar_id(HVC_u64 *const lpar_id)
{
	lv1_get_logical_partition_id(lpar_id);
	HVCALLS_PRINT_VALUE_U64("lv1_get_logical_partition_id", *lpar_id);
}

//----------------------------------------------------------------------------------------------------- hvc_get_ppe_id()
/**
 * hvc_get_ppe_id (69:lv1_get_logical_ppe_id)
 * 呼び出し元の論理 PPE 識別子を返す
 *
 * @param  HVC_u64 *ppe_id  [OUT] 論理 PPE 識別子
 * @return void
 * @static
 * @inline
 */
static inline void hvc_get_ppe_id(HVC_u64 *const ppe_id)
{
	lv1_get_logical_ppe_id(ppe_id);
	HVCALLS_PRINT_VALUE_U64("lv1_get_logical_ppe_id", *ppe_id);
}

//----------------------------------------------------------------------------------------------------- hvc_get_vas_id()
/**
 * hvc_get_vas_id (4:lv1_get_virtual_address_space_id_of_ppe)
 * 呼び出し元の論理 PPE に割り当てられている仮想アドレス空間識別子を返す
 *
 * vas_id = 0 の場合は論理 PPE に仮想アドレス空間が割り当てられていない。
 * このときハイパーバイザコールは失敗とはならないが、
 * この関数では vas_id = 0 の場合に !0 (失敗) を返すようになっている。
 *
 * @param  HVC_u64  ppe_id  [IN]  論理 PPE 識別子
 * @param  HVC_u64 *vas_id  [OUT] 仮想アドレス空間識別子
 * @return int                    0...成功, not 0...失敗
 * @static
 * @inline
 */
static inline int hvc_get_vas_id(const HVC_u64 ppe_id, HVC_u64 *const vas_id)
{
	lv1_get_virtual_address_space_id_of_ppe(ppe_id, vas_id);
	HVCALLS_PRINT_VALUE_U64("lv1_get_virtual_address_space_id_of_ppe", *vas_id);
	if (!(*vas_id)) HVCALLS_PRINT_ERR("lv1_get_virtual_address_space_id_of_ppe FAILED.", *vas_id);
	return !(int)(*vas_id);
}


#endif /*HVCALLS__PPE_H*/