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 によって生成されました。 
 | 
 |