名称
get_adapter_memsize - アダプタのメモリサイズを取得する
書式
int
get_adapter_memsize(
uint8_t * mmio_va,
uint32_t * adapter_mem_size);
引数
- mmio_va
- メモリサイズを取得するアダプタのMMIOの仮想アドレス
- adapter_mem_size
- メモリサイズを受け取る領域
説明
引数mmio_vaでしていされたアダプタのメモリサイズを取得する。
取得したメモリサイズは、引数adapter_mem_sizeが示す領域に格納する。値の単位はバイト。
実装されているメモリサイズではなく、空きメモリサイズを返すらしい。
返す値はページサイズの整数倍にならないことがある。
戻り値
処理に成功した場合、引数adapter_mem_sizeが示す領域に値を設定し、0を返す。
そうでない場合、0以外の値を返す。
とはいうものの、失敗するケースはない。
参照
実装
198 /*
199 DESCRIPTION::gets adapter memory size. calculates size based on scratch register 0
200 PARAMETERS::
201 [in]void *mmio_va - virtual address to access MMIO registers
202 [out]uint32_t *adapter_mem_size - adapter memory size
203 RETURN_VALUE:: 0 if successful, non-zero if failure
204 */
205 int
206 get_adapter_memsize(uint8_t *mmio_va, uint32_t *adapter_mem_size)
207 {
208 int status = 0;
209 uint32_t memsize = 0;
210 uint32_t scratch0 = {0};
211
212 scratch0 = SBOX_READ(mmio_va, SBOX_SCRATCH0);
213 memsize = SCRATCH0_MEM_SIZE_KB(scratch0) * ((1) * 1024);
214
215 // Adjust the memory size based on the memory usage
216 switch (SCRATCH0_MEM_USAGE(scratch0)) {
217 case SCR0_MEM_ALL:
218 // Do nothing
219 break;
220
221 case SCR0_MEM_HALF:
222 memsize /= 2;
223 break;
224
225 case SCR0_MEM_THIRD:
226 memsize /= 3;
227 break;
228
229 case SCR0_MEM_FOURTH:
230 memsize /= 4;
231 break;
232
233 default:
234 // DBG_ASSERT_MSG(false, "Invalid memory usage specified by the bootstrap.\n");
235 break;
236 }
237
238 *adapter_mem_size = memsize;
239
240 return status;
241 }
最終更新:2012年11月10日 23:38