引数は、my_pnidp,migrated_f,mig_type,mig_idの4つ。
1276行目
case 1:
if (min_usage < 1000) { /* usageが1000以下の場合 */
if (my_usage < (min_usage + 5000)) goto leave_loadbalance;
} else if ((my_usage < (min_usage + 15000)) || (my_usage < 5000)) {
leave_loadbalance:
start_tick = 0;
return *my_pnidp;
}
break;
my_pnidpは、この関数の第1引数。
sss_migration_requestは、1360行目で発動。
引数は、target_task,key,target_addr,valの4つ。
pboxに何か数値を入れているのはわかるが、valが非0のときに呼び出してるk_cmpswap_taskdataって何?(valは呼び出し元タスクのIDらしい。主ノードかどうかの差?)
返値は、swap_data
int sss_migration_request(int node,int type); nodeはマイグレーション先の物理ノードID(SSS-CORE世界 のID)を指定する。typeはマイグレーション時の同期,ペー ジコピー,MBCFの整合性に関する方式を指定する。 マイグレーションに成功した場合は返り値として0が返り, 動作ノードが移動する。マイグレーションに失敗した場合は システムコールを実行したノードで動作を続け,返り値として -1が返る。type マイグレーションタイプ 0 : 事前同期なし、eagerページコピー、MBCF事後変更通知なし帰り値: -1 エラー (移動していない) 0 成功