/* These fields in kdump_ctx must be initialised: * * endian */ static kdump_status process_xc_xen_note(kdump_ctx *ctx, uint32_t type, void *desc, size_t descsz) { if (type == XEN_ELFNOTE_DUMPCORE_HEADER) { struct xen_elfnote_header *header = desc; uint64_t page_size = dump64toh(ctx, header->xch_page_size); return set_page_size(ctx, page_size); } else if (type == XEN_ELFNOTE_DUMPCORE_FORMAT_VERSION) { uint64_t version = dump64toh(ctx, *(uint64_t*)desc); if (version != 1) return set_error(ctx, kdump_unsupported, "Unsupported Xen dumpcore format version: %llu", (unsigned long long) version); } return kdump_ok; }
errtype dependent_swap<dtype>::init(stype **s, rank_type ndep) { rank_type i; set_type(); swap=NULL; this->data=NULL; this->rank=ndep; this->dim=new ind_type[this->rank]; this->dependencies=new stype *[this->rank]; this->n_data=1; for (i=0; i<this->rank; i++) { this->dependencies[i]=s[i]; s[i]->add_dependent(this, i); this->dim[i]=this->dependencies[i]->nel(); this->n_data*=this->dim[i]; } set_page_size(0); fchange=0; dchange=0; }
void bootloader(multiboot_info_t* mbi) { void (*kaneton)(t_init*); t_init* init = NULL; Elf64_Ehdr* kaneton_kernel = NULL; /* * 1) */ bootloader_cons_init(); printf("\n"); printf(" --- the kaneton microkernel project ---\n"); printf("\n\n"); /* * 3) */ set_page_size(PAGE_SIZE); /* * 4) */ kernel_mem_space_64(); supervisor_mem_space_64(); user_mem_space_64(); /* * 5) */ init = bootloader_init_relocate(mbi); /* * 6) */ set_kernel_mode(); /* * 7) */ disable_bootstrap_mode(); /* * 8) */ /* * 9) */ kaneton_kernel = (Elf64_Ehdr*)KERNEL_BASE_ADDRESS; bootloader_cons_msg('+', "Jump to the kaneton function 0x%lx\n", kaneton_kernel->e_entry); kaneton = (void (*)(t_init*))kaneton_kernel->e_entry; kaneton(init); while(1) ; }
void SpaceDbResultNewFormat::read_spacedb_output (FILE *fp) { char page_unit, log_page_unit, *p; double page_size, log_page_size_double; char str_buf[1024]; int db_page_size = 0, log_page_size = 0; int index = 0; while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (strncmp (str_buf, "Space", 5) == 0) { p = strstr (str_buf, "pagesize"); if (p) { sscanf (p, "pagesize %lf%c", &page_size, &page_unit); if ((db_page_size = _size_to_byte_by_unit (page_size, page_unit)) < 0) { goto spacedb_error; } set_page_size (db_page_size); } p = strstr (str_buf, "log pagesize:"); if (p) { sscanf (p, "log pagesize: %lf%c", &log_page_size_double, &log_page_unit); if ((log_page_size = _size_to_byte_by_unit (log_page_size_double, log_page_unit)) < 0) { goto spacedb_error; } set_log_page_size (log_page_size); } } if (strncmp (str_buf, "type", 4) == 0) { break; } } while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (strncmp (str_buf, "Space", 5) == 0) { break; } if (!is_valid_database_description (str_buf)) { break; } sscanf (str_buf, "%s %s DATA %d %d %d %d", databaseSpaceDescriptions[index].type, databaseSpaceDescriptions[index].purpose, &databaseSpaceDescriptions[index].volume_count, &databaseSpaceDescriptions[index].used_size, &databaseSpaceDescriptions[index].free_size, &databaseSpaceDescriptions[index].total_size); index++; } while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (strncmp (str_buf, "Detailed", 8) == 0) { break; } if (!is_valid_volume_description (str_buf)) { continue; } add_volume (str_buf); } while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (strncmp (str_buf, "data_type", 9) == 0) { break; } } index = 0; while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (!is_valid_file_description (str_buf)) { continue; } sscanf (str_buf, "%s %d %d %d %d %d\n", fileSpaceDescriptions[index].data_type, &fileSpaceDescriptions[index].file_count, &fileSpaceDescriptions[index].used_size, &fileSpaceDescriptions[index].file_table_size, &fileSpaceDescriptions[index].reserved_size, &fileSpaceDescriptions[index].total_size); index++; } fclose (fp); return; spacedb_error: fclose (fp); }
void SpaceDbResultOldFormat::read_spacedb_output (FILE *fp) { char str_buf[1024]; int db_page_size = 0, log_page_size = 0; while (fgets (str_buf, sizeof (str_buf), fp)) { char *tmp_p; ut_trim (str_buf); if (strncmp (str_buf, "Space", 5) == 0) { int matchs = 0; double page_size = 0.0; char page_unit = 'H'; /* * The log format looks like the following: * Space description for database 'demodb' with pagesize 16.0K. (log pagesize: 16.0K) */ tmp_p = strstr (str_buf, "pagesize"); if (tmp_p == NULL) { goto spacedb_error; } if ((matchs = sscanf (tmp_p, "pagesize %lf%c", &page_size, &page_unit)) != 2) { goto spacedb_error; } if ((db_page_size = _size_to_byte_by_unit (page_size, page_unit)) < 0) { goto spacedb_error; } tmp_p = strstr (str_buf, "log pagesize:"); if (tmp_p != NULL) { if ((matchs = sscanf (tmp_p, "log pagesize: %lf%c", &page_size, &page_unit)) != 2) { goto spacedb_error; } if ((log_page_size = _size_to_byte_by_unit (page_size, page_unit)) < 0) { goto spacedb_error; } } else { /* log pagesize default value */ log_page_size = 4096; } } else if (strncmp (str_buf, "Volid", 5) == 0) { break; } } while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (str_buf[0] == '\0' || str_buf[0] == '-') { continue; } if (strncmp (str_buf, "Volid", 5) == 0) { break; } if (strncmp (str_buf, "Space", 5) == 0) { continue; } if (add_volume (str_buf)) { continue; } } while (fgets (str_buf, sizeof (str_buf), fp)) { ut_trim (str_buf); if (str_buf[0] == '\0' || str_buf[0] == '-') { continue; } if (strncmp (str_buf, "Volid", 5) == 0) { break; } if (add_temporary_volume (str_buf)) { continue; } } set_page_size (db_page_size); set_log_page_size (log_page_size); fclose (fp); return; spacedb_error: fclose (fp); }