void nvrm_munmap(uint32_t id, uint64_t mmap_addr, uint64_t len, uint64_t mmap_offset) { struct gpu_object *obj; struct cpu_mapping *cpu_mapping; for (obj = gpu_objects; obj != NULL; obj = obj->next) for (cpu_mapping = obj->cpu_mappings; cpu_mapping != NULL; cpu_mapping = cpu_mapping->next) if (cpu_mapping->cpu_addr == mmap_addr) { if (dump_sys_munmap) { if (cpu_mapping->fdtype == FDNVIDIA) { mmt_log_cont(", cid: 0x%08x, handle: 0x%08x", obj->cid, obj->handle); describe_nvrm_object(obj->cid, obj->handle, ""); } } disconnect_cpu_mapping_from_gpu_object(cpu_mapping); break; } if (dump_sys_munmap) mmt_log_cont_nl(); buffer_munmap(id); }
int cmd_check(int argc, char *argv[]) { struct buffer *comp_buf, *uncomp_buf; z_stream stream; struct stat st; int fd; setlocale(LC_ALL, ""); if (argc < 2) usage(); parse_args(argc, argv); init_stream(&stream); fd = open(filename, O_RDONLY); if (fd < 0) die("%s: %s: %s\n", program, filename, strerror(errno)); if (fstat(fd, &st) < 0) die("%s: %s: %s\n", program, filename, strerror(errno)); comp_buf = buffer_mmap(fd, st.st_size); if (!comp_buf) die("%s: %s\n", program, strerror(errno)); stream.next_in = (void *) buffer_start(comp_buf); uncomp_buf = buffer_new(BUFFER_SIZE); if (!uncomp_buf) die("%s: %s\n", program, strerror(errno)); for (;;) { struct itch41_message *msg; retry_size: if (buffer_size(uncomp_buf) < sizeof(u16)) { ssize_t nr; buffer_compact(uncomp_buf); nr = buffer_inflate(comp_buf, uncomp_buf, &stream); if (nr < 0) die("%s: zlib error\n", program); if (!nr) break; if (show_progress) print_progress(comp_buf, st.st_size); goto retry_size; } buffer_advance(uncomp_buf, sizeof(u16)); retry_message: msg = itch41_message_decode(uncomp_buf); if (!msg) { ssize_t nr; buffer_compact(uncomp_buf); nr = buffer_inflate(comp_buf, uncomp_buf, &stream); if (nr < 0) die("%s: zlib error\n", program); if (!nr) break; if (show_progress) print_progress(comp_buf, st.st_size); goto retry_message; } if (verbose) printf("%c", msg->MessageType); stats[msg->MessageType - 'A']++; } printf("\n"); buffer_munmap(comp_buf); buffer_delete(uncomp_buf); if (close(fd) < 0) die("%s: %s: %s\n", program, filename, strerror(errno)); release_stream(&stream); print_stats(); return 0; }