• Home
  • History
  • Annotate
  • Raw
  • Download
  • only in /macosx-10.5.8/xnu-1228.15.4/libsa/

Lines Matching refs:entry

139 register_prelink(dgraph_entry_t * entry,
176 static void __kload_clean_up_entry(dgraph_entry_t * entry);
198 dgraph_entry_t * entry,
205 dgraph_entry_t * entry,
217 static kload_error __kload_set_module_dependencies(dgraph_entry_t * entry);
218 static kload_error __kload_start_module(dgraph_entry_t * entry);
292 struct dgraph_entry_t * entry = dgraph->load_order[i];
293 if (entry->is_kernel_component) {
296 if (entry->loaded_address != 0) {
367 struct dgraph_entry_t * entry = dgraph->load_order[i];
368 if (entry->is_kernel_component) {
371 if (!entry->loaded_address) {
374 entry->name);
523 kload_error __kload_keep_symbols(dgraph_entry_t * entry)
540 if (entry->symbols)
543 hdr = entry->linked_image;
616 entry->name, (unsigned long)symcmd->nsyms, size);
619 entry->symbols = mem;
620 entry->symbols_malloc = mem;
621 entry->symbols_length = size;
1088 dgraph_entry_t * entry,
1121 if (entry->is_kernel_component && !entry->is_symbol_set) {
1126 G_current_load_entry = entry;
1132 kload_log_message("link/loading file %s" KNL, entry->name);
1135 kload_log_message("linking file %s" KNL, entry->name);
1141 if (entry->link_output_file != entry->name) {
1142 symbol_filename = entry->link_output_file;
1180 if (interactive_level && entry->loaded_address) {
1183 entry->name, entry->expected_kmod_name,
1184 entry->loaded_address);
1189 "\nLoad module %s", entry->name);
1202 entry->object = kld_file_getaddr(entry->name, &entry->object_length);
1203 if (!entry->object) {
1205 entry->name);
1211 if (entry->is_symbol_set) {
1212 entry->symbols = (vm_address_t) entry->object;
1213 entry->symbols_length = entry->object_length;
1217 if (!_IOWriteBytesToFile(symbol_filename, (void *) entry->symbols, entry->symbols_length)) {
1219 entry->name);
1225 if (G_prelink && (entry->name != entry->link_output_file))
1228 entry->name, entry->link_output_file, entry->expected_kmod_name);
1229 register_prelink(entry, NULL, NULL);
1233 if (entry->opaques) {
1240 kld_result = kld_load_from_memory(&kld_header, entry->name,
1241 entry->object, entry->object_length, symbol_filename);
1243 kld_result = kld_load_from_memory(&kld_header, entry->name,
1244 entry->object, entry->object_length);
1254 if (!kld_result || !entry->kernel_load_address) {
1256 entry->name);
1258 entry->need_cleanup = 1;
1263 if (entry->is_symbol_set) {
1268 entry->linked_image = kld_header;
1269 entry->linked_image_length = -1; // unknown!
1276 if (entry->do_load) {
1282 kmod_symbol, entry->name);
1283 entry->need_cleanup = 1;
1299 kmod_symbol, entry->name);
1300 entry->need_cleanup = 1;
1311 if (entry->do_load)
1324 /* Stamp the bundle ID and version from the entry over anything
1328 strlcpy(local_kmod_info->name, entry->expected_kmod_name, sizeof(local_kmod_info->name));
1331 strlcpy(local_kmod_info->version, entry->expected_kmod_vers, sizeof(local_kmod_info->version));
1346 entry->name);
1347 entry->need_cleanup = 1;
1355 if (entry->kernel_alloc_address) {
1356 local_kmod_info->address = entry->kernel_alloc_address;
1358 local_kmod_info->address = entry->loaded_address;
1360 local_kmod_info->size = entry->kernel_alloc_size;
1361 local_kmod_info->hdr_size = round_page(entry->kernel_hdr_size);
1366 if (G_prelink && (entry->name != entry->link_output_file))
1368 register_prelink(entry, local_kmod_info, kernel_kmod_info);
1371 if (do_load && entry->do_load) {
1373 entry->kernel_alloc_size, VM_FLAGS_ANYWHERE);
1376 entry->need_cleanup = 1;
1383 memcpy(dest_address, kld_header, entry->kernel_hdr_size);
1384 memcpy(dest_address + round_page(entry->kernel_hdr_size),
1385 (void *)((unsigned long)kld_header + entry->kernel_hdr_size),
1386 entry->kernel_load_size - entry->kernel_hdr_size);
1388 mach_result = vm_write(G_kernel_port, entry->kernel_alloc_address,
1389 vm_buffer, entry->kernel_alloc_size);
1392 entry->need_cleanup = 1;
1398 (vm_address_t)kernel_kmod_info, &(entry->kmod_id));
1401 if (entry->do_load) {
1402 dest_address = (char *)entry->kernel_alloc_address;
1403 memcpy(dest_address, kld_header, entry->kernel_hdr_size);
1404 memcpy(dest_address + round_page(entry->kernel_hdr_size),
1405 (void *)((unsigned long)kld_header + entry->kernel_hdr_size),
1406 entry->kernel_load_size - entry->kernel_hdr_size);
1411 flush_dcache(entry->kernel_alloc_address, entry->kernel_alloc_size, false);
1412 invalidate_icache(entry->kernel_alloc_address, entry->kernel_alloc_size, false);
1415 (kmod_info_t *)kernel_kmod_info, &(entry->kmod_id));
1421 entry->need_cleanup = 1;
1433 entry->expected_kmod_name, entry->kmod_id,
1434 entry->kernel_alloc_address,
1435 entry->kernel_alloc_size);
1464 vm_deallocate(mach_task_self(), vm_buffer, entry->kernel_alloc_size);
1477 register_prelink(dgraph_entry_t * entry,
1486 for (i = 0; i < entry->num_dependencies; i++)
1491 exists = (0 == strcmp(entry->dependencies[i]->expected_kmod_name,
1499 strcpy(desc.name, entry->dependencies[i]->expected_kmod_name);
1516 G_prelink->modules[0].id + 1, entry->kernel_load_address,
1517 kernel_kmod_info, entry->link_output_file, entry->name);
1525 desc.size = entry->symbols_length;
1529 desc.reference_count = entry->num_dependencies;
1532 /* Stamp the bundle ID and version from the entry over anything
1536 strcpy(desc.name, entry->expected_kmod_name);
1538 strcpy(desc.version, entry->expected_kmod_vers);
1581 dgraph_entry_t * entry = dgraph->load_order[i];
1583 if (entry->is_kernel_component && !entry->is_symbol_set) {
1587 result = kload_map_entry(entry);
1602 kload_error kload_map_entry(dgraph_entry_t * entry)
1606 if (entry->is_kernel_component && !entry->is_symbol_set) {
1607 kload_log_error("attempt to map kernel component %s" KNL, entry->name);
1613 kload_log_message("mapping module file %s" KNL, entry->name);
1616 if (kld_file_getaddr(entry->name, NULL)) {
1618 kload_log_message("module file %s is already mapped" KNL, entry->name);
1625 if (!kld_file_map(entry->name)) {
1627 if (!kld_file_map(entry->name, entry->object, entry->object_length,
1628 entry->object_is_kmem)) {
1630 kload_log_error("error mapping module file %s" KNL, entry->name);
1640 entry->is_mapped = true;
1643 * and it is subject to change. We reset them in the entry from the
1646 entry->object = 0;
1647 entry->object_length = 0;
1649 entry->object_is_kmem = false;
1655 if (!entry->is_kernel_component && !kld_file_lookupsymbol(entry->name, "_kmod_info")) {
1657 entry->name);
1694 dgraph_entry_t * entry = dgraph->load_order[i];
1696 if (!entry) {
1701 if (entry->is_kernel_component) {
1705 if (!entry->is_mapped) {
1711 entry->expected_kmod_name);
1721 entry->loaded_address = address;
1755 dgraph_entry_t * entry = dgraph->load_order[i];
1757 if (!entry) {
1762 if (entry->is_kernel_component) {
1766 if (!entry->is_mapped) {
1775 unsigned int module_namelen = strlen(entry->expected_kmod_name);
1782 if (strncmp(this_addr, entry->expected_kmod_name, module_namelen)) {
1796 entry->loaded_address = address;
1806 dgraph_entry_t * entry = dgraph->load_order[i];
1808 if (entry->is_kernel_component) {
1812 if (!entry->loaded_address) {
1852 struct dgraph_entry_t * entry = dgraph->load_order[i];
1853 entry->loaded_address = 0;
1930 struct dgraph_entry_t * entry = dgraph->load_order[i];
1931 entry->loaded_address = 0;
2006 dgraph_entry_t * entry,
2019 if (false && entry->is_kernel_component) {
2020 kmod_name = entry->name;
2022 kmod_name = entry->expected_kmod_name;
2039 entry->do_load = 0;
2040 entry->kmod_id = current_kmod->id;
2041 entry->loaded_address = current_kmod->address;
2043 if (entry->is_kernel_component) {
2064 entry_vers = VERS_parse_string(entry->expected_kmod_vers);
2068 entry->expected_kmod_name,
2080 entry->expected_kmod_name);
2081 if (entry == dgraph->root) {
2094 entry->name, kmod_name);
2212 struct dgraph_entry_t * entry = dgraph->load_order[i];
2215 if (entry->is_kernel_component) {
2220 strlen(entry->expected_kmod_name) +
2226 patch_dir, entry->expected_kmod_name,
2242 strlcat(patch_filename, entry->expected_kmod_name, length);
2274 kld_file_debug_dump(entry->name, patch_filename);
2325 kload_error __kload_set_module_dependencies(dgraph_entry_t * entry) {
2336 if (!entry->do_load) {
2341 for (i = 0; i < entry->num_dependencies; i++) {
2342 current_dep = entry->dependencies[i];
2346 entry->expected_kmod_name, entry->kmod_id,
2350 packed_id = KMOD_PACK_IDS(entry->kmod_id, current_dep->kmod_id);
2360 entry->expected_kmod_name);
2362 mach_result = kmod_destroy(G_kernel_priv_port, entry->kmod_id);
2364 mach_result = kmod_destroy_internal(entry->kmod_id);
2376 entry->kmod_id);
2387 kload_error __kload_start_module(dgraph_entry_t * entry) {
2394 kmod_args_t kmod_args = entry->user_data;
2395 mach_msg_type_number_t arg_size = entry->user_data_length;
2398 if (!entry->do_load) {
2405 entry->kmod_id, KMOD_CNTL_START, &kmod_control_args, &num_args);
2407 mach_result = kmod_start_or_stop(entry->kmod_id, 1, &kmod_args, &arg_size);
2409 mach_result = kmod_start_or_stop(entry->kmod_id, 1, 0, 0);
2415 entry->expected_kmod_name);
2417 mach_result = kmod_destroy(G_kernel_priv_port, entry->kmod_id);
2419 mach_result = kmod_destroy_internal(entry->kmod_id);
2430 entry->kmod_id);
2567 void __kload_clean_up_entry(dgraph_entry_t * entry) {
2570 if (entry->need_cleanup && entry->kernel_alloc_address) {
2574 if ((entry->kernel_alloc_address + entry->kernel_alloc_size) == G_prelink->modules[0].address) {
2575 G_prelink->modules[0].address = entry->kernel_alloc_address;
2579 entry->kernel_alloc_address, G_prelink->modules[0].address);
2582 mach_result = vm_deallocate(G_kernel_port, entry->kernel_alloc_address,
2583 entry->kernel_alloc_size);
2586 mach_result = vm_deallocate(kernel_map, entry->kernel_alloc_address,
2587 entry->kernel_alloc_size);
2589 entry->kernel_alloc_address = 0;