int onlp_sfpi_init(void) { /* * Map the CPLD address */ cpld_base__ = onlp_mmap(CPLD_BASE_ADDRESS, getpagesize(), __FILE__); if(cpld_base__ == NULL || cpld_base__ == MAP_FAILED) { return ONLP_STATUS_E_INTERNAL; } return ONLP_STATUS_OK; }
int aim_main(int argc, char* argv[]) { /* * Fixme -- this is just a hacked placeholder for * a more fully-functional tool. */ uint32_t pa; int size; uint8_t* va = NULL; #define USAGE() \ do { \ fprintf(stderr, "usage: mtool dump PHYSADDR BYTES\n"); \ fprintf(stderr, "usage: mtool odump PHYSADDR [json]\n"); \ return 1; \ } while(0) if(argc < 3) { USAGE(); } if(sscanf(argv[2], "0x%x", &pa) != 1) { USAGE(); } if(!strcmp(argv[1], "dump")) { if(argv[3] == NULL || sscanf(argv[3], "%d", &size) != 1) { USAGE(); } va = onlp_mmap(pa, size, "mtool"); if(va) { aim_printf(&aim_pvs_stdout, "%{data}\n", va, size); } } else if(!strcmp(argv[1], "odump")) { size = 1024*512; /* arbitrary */ va = onlp_mmap(pa, size, "mtool"); if(va) { onlp_onie_info_t info; if(onlp_onie_decode(&info, va, size) == 0) { if(argv[3] && !strcmp(argv[3], "json")) { onlp_onie_show_json(&info, &aim_pvs_stdout); } else { onlp_onie_show(&info, &aim_pvs_stdout); } onlp_onie_info_free(&info); } else { int dsize = 128; aim_printf(&aim_pvs_stdout, "Here are the first %d bytes:\n%{data}\n", dsize, va, dsize); } } } else { USAGE(); } if(va) { munmap(va, size); } return 0; }