mp_config.cマルチプロセッササポートモジュール ソースファイル(Nios2用) [詳細]
#include "fdmp_kernel.h"
#include "check.h"
#include "task.h"
#include <nios2.h>
mp_config.cのインクルード依存関係図
ソースコードを見る。
説明
マルチプロセッササポートモジュール ソースファイル(Nios2用)
mp_config.c で定義されています。
マクロ定義
#define MAGIC_START 0x87654321 |
|
関数
volatile INT exccb_available __attribute__ |
( |
(section(".shared"), nocommon) |
|
) |
|
|
asm |
( |
".globl my_local_release_lock" |
|
) |
|
|
asm |
( |
".globl my_local_acquire_lock" |
|
) |
|
|
|
自プロセッサ上のローカル資源のロックも同じルーチンを使用.
|
void local_release_lock |
( |
LOCKOBJ * |
lockobj |
) |
|
|
void mp_init_sync |
( |
void |
|
) |
|
|
|
マスタプロセッサによる初期化を待つ(マスタプロセッサ以外が実行)
mp_config.c の 93 行で定義されています。
参照先 MAGIC_START. 00094 {
00095 INT i;
00096 INT cnt = 0;
00097
00098 if (!((exccb_available == 0) || (exccb_available == MAGIC_START))) {
00099 exccb_available = 0;
00100 }
00101
00102 while (1) {
00103 for (i = 0; i < 300; i++);
00104 cnt++;
00105 if (exccb_available == MAGIC_START) {
00106 break;
00107 }
00108 }
00109
00110 syslog(LOG_NOTICE,"receive %x(cnt=%d)",exccb_available, cnt);
00111 }
|
void mp_initialize |
( |
void |
|
) |
|
|
|
同期用のデータ初期化(マスタプロセッサのみ実行)
mp_config.c の 77 行で定義されています。
参照先 FALSE. 00078 {
00079 INT i;
00080
00081 sys_start = 0;
00082 exccb_available = 0;
00083 for (i = 1; i <= NO_PROC; i++) {
00084 proc_init[i-1] = FALSE;
00085 }
00086 exccb_available = MAGIC_START;
00087 }
|
|
全てのプロセッサのEXCCBの初期化待ち
mp_config.c の 117 行で定義されています。
参照先 MASTER_PROC・TRUE. 00118 {
00119 INT i, j, flag;
00120
00121 proc_init[PRCID - 1] = TRUE;
00122
00123 if (MASTER_PROC()) {
00124 do {
00125 flag = 0;
00126 for (i = 1; i <= NO_PROC; i++) {
00127 if (proc_init[i-1] == TRUE) {
00128 flag++;
00129 }
00130 }
00131 for (j =0; j < 100; j++);
00132 } while (flag < NO_PROC);
00133 sys_start = MAGIC_START;
00134 exccb_available = 0;
00135 }
00136 else {
00137 while (sys_start != MAGIC_START) {
00138 for (j = 0; j < 100; j++);
00139 }
00140 }
00141 }
|
Copyright © 2006 by TAKAGI Nobuhisa.
このページは Mon Apr 3 23:49:16 2006 に Doxygen によって生成されました。
|
|