void malloc_calc(t_cod **cor, t_obj **obc, t_tmp **tmp) { *tmp = xmalloc(sizeof(t_tmp)); malloc_tmp(*tmp); *obc = xmalloc(sizeof(t_obj)); init_obc(*obc); *cor = xmalloc(sizeof(t_cod)); func_for_coordonne(*cor); (*cor)->l_o = xmalloc(6 * sizeof(double)); }
int romfile_loader_execute(const char *name) { struct romfile_loader_entry_s *entry; int size, offset = 0, nfiles; struct romfile_loader_files *files; void *data = romfile_loadfile(name, &size); if (!data) return -1; if (size % sizeof(*entry)) { warn_internalerror(); goto err; } /* (over)estimate the number of files to load. */ nfiles = size / sizeof(*entry); files = malloc_tmp(sizeof(*files) + nfiles * sizeof(files->files[0])); if (!files) { warn_noalloc(); goto err; } files->nfiles = 0; for (offset = 0; offset < size; offset += sizeof(*entry)) { entry = data + offset; switch (le32_to_cpu(entry->command)) { case ROMFILE_LOADER_COMMAND_ALLOCATE: romfile_loader_allocate(entry, files); break; case ROMFILE_LOADER_COMMAND_ADD_POINTER: romfile_loader_add_pointer(entry, files); break; case ROMFILE_LOADER_COMMAND_ADD_CHECKSUM: romfile_loader_add_checksum(entry, files); default: /* Skip commands that we don't recognize. */ break; } } free(files); free(data); return 0; err: free(data); return -1; }
void mptable_setup(void) { if (! CONFIG_MPTABLE) return; dprintf(3, "init MPTable\n"); // Config structure in temp area. struct mptable_config_s *config = malloc_tmp(32*1024); if (!config) { warn_noalloc(); return; } memset(config, 0, sizeof(*config)); config->signature = MPCONFIG_SIGNATURE; config->spec = 4; memcpy(config->oemid, BUILD_CPUNAME8, sizeof(config->oemid)); memcpy(config->productid, "0.1 ", sizeof(config->productid)); config->lapic = BUILD_APIC_ADDR; // Detect cpu info u32 cpuid_signature, ebx, ecx, cpuid_features; cpuid(1, &cpuid_signature, &ebx, &ecx, &cpuid_features); if (! cpuid_signature) { // Use default values. cpuid_signature = 0x600; cpuid_features = 0x201; } int pkgcpus = 1; if (cpuid_features & (1 << 28)) { /* Only populate the MPS tables with the first logical CPU in each package */ pkgcpus = (ebx >> 16) & 0xff; pkgcpus = 1 << (__fls(pkgcpus - 1) + 1); /* round up to power of 2 */ }