コンパイルされているかわからないので、後回し。
名称
load_initramfs - XXX
書式
int
load_initramfs(
mic_ctx_t * mic_ctx,
char * initramfsname,
uint32_t * initramfs_image,
uint32_t * initramfs_size);
引数
- mic_ctx
- XXX
- initramfsname
- XXX
- initramfs_image
- XXX
- initramfs_size
- XXX
説明
戻り値
参照
実装
496 #ifdef INITRAMFS
497 /*
498 DESCRIPTION:: loads uos initramfs image at given path into gddr for KNC.
499 PARAMETERS::
500 [in]mic_ctx_t *mic_ctx - mic context
501 [in]initramfsname - file path for uos initramfs file to be loaded
502 */
503 int
504 load_initramfs(mic_ctx_t *mic_ctx, char *initramfsname, uint32_t *initramfs_image, uint32_t *initramfs_size)
505 {
506 void *aperture_va;
507 uint8_t *mmio_va;
508 uint32_t apic_id = 0;
509 uint32_t uos_load_offset = 0;
510 uint32_t file_load_offset = 0;
511 uint32_t adapter_memsize = 0;
512 uint32_t file_size = 0;
513 int status = 0;
514
515 aperture_va = mic_ctx->aper.va;
516 mmio_va = mic_ctx->mmio.va;
517
518 if (mic_ctx->state != MIC_BOOT) {
519 printk("Not in booting state\n");
520 return -EPERM;
521 }
522
523 status = mic_get_file_size(initramfsname, &file_size);
524
525 if (status) {
526 mic_ctx->state = MIC_BOOTFAIL;
527 printk("image not found at %s , status returned %d\n", initramfsname, status);
528 return status;
529 }
530
531 status = [[get_uos_loadoffset]](mmio_va, &uos_load_offset);
532 file_load_offset = uos_load_offset << 1; /* Place initramfs higher than kernel; 128MB is ok */
533
534 *initramfs_size = (file_size >> 20) + 1; /* Size in whole MB */
535 *initramfs_image = file_load_offset;
536
537 // Determine the uOS reserve size after we have the m_pXpu interface
538 [[get_adapter_memsize]](mmio_va, &adapter_memsize);
539 status = [[get_apic_id]](mmio_va, &apic_id);
540
541 // store apic_id in adapter context for later use
542 mic_ctx->apic_id = apic_id;
543
544 // transfer uOs image file to gddr
545 status = mic_load_file(initramfsname, ((uint8_t*)aperture_va) + file_load_offset, file_size);
546 return status;
547 }
548 #endif
最終更新:2012年11月18日 12:39