int main(int argc, char **argv) { size_t raw_len, stripped_len; void *raw_addr, *stripped_addr; FILE *outfile; char *name, *tmp; int namelen; if (argc != 4) { printf("Usage: vdso2c RAW_INPUT STRIPPED_INPUT OUTPUT\n"); return 1; } /* * Figure out the struct name. If we're writing to a .so file, * generate raw output insted. */ name = strdup(argv[3]); namelen = strlen(name); if (namelen >= 3 && !strcmp(name + namelen - 3, ".so")) { name = NULL; } else { tmp = strrchr(name, '/'); if (tmp) name = tmp + 1; tmp = strchr(name, '.'); if (tmp) *tmp = '\0'; for (tmp = name; *tmp; tmp++) if (*tmp == '-') *tmp = '_'; } map_input(argv[1], &raw_addr, &raw_len, PROT_READ); map_input(argv[2], &stripped_addr, &stripped_len, PROT_READ); outfilename = argv[3]; outfile = fopen(outfilename, "w"); if (!outfile) err(1, "%s", argv[2]); go(raw_addr, raw_len, stripped_addr, stripped_len, outfile, name); munmap(raw_addr, raw_len); munmap(stripped_addr, stripped_len); fclose(outfile); return 0; }
int Mmap2_Test::run_test (int iterations, FILE *input_fp, FILE *output_fp) { ACE_Mem_Map map_input (ACE_OS::fileno (input_fp)); int size = map_input.size (); ACE_Mem_Map map_output (ACE_OS::fileno (output_fp), size, PROT_WRITE, MAP_SHARED); void *src = map_input.addr (); void *dst = map_output.addr (); if (src == MAP_FAILED || dst == MAP_FAILED) return -1; else { this->tm_.start (); while (--iterations >= 0) ACE_OS::memcpy (dst, src, size); this->tm_.stop (); } if (map_input.unmap () == -1 || map_output.unmap () == -1) return -1; else return 0; }
int main(int argc, char **argv) { void *input; list_inithead(&dump.mem_areas); if (argc != 2) usage(argv[0]); input = map_input(argv[1]); set_bo_maps(input); dump_registers(); parse_cls(); parse_sublists(); parse_shader_recs(); parse_shaders(); return 0; }
int Mmap1_Test::run_test (int iterations, FILE *input_fp, FILE *output_fp) { ACE_Mem_Map map_input (ACE_OS::fileno (input_fp)); void *src = map_input.addr (); if (src == MAP_FAILED) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%C"), this->name ()), -1); else { this->tm_.start (); while (--iterations >= 0) { if (ACE_OS::write (ACE_OS::fileno (output_fp), src, map_input.size ()) == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%C"), this->name ()), -1); ACE_OS::lseek (ACE_OS::fileno (output_fp), 0, SEEK_SET); } this->tm_.stop (); } if (map_input.unmap () == -1) ACE_ERROR_RETURN ((LM_ERROR, ACE_TEXT ("%C"), this->name ()), -1); else return 0; }
static void process_input(brl_t *brl) { unsigned char c; int mapped, type, in, n, diff; char out, *line, *hentry; while((n = read(brl->fd, &c, sizeof(c))) > 0) { if (brl->esc) { if (brl->seq_len < (int)sizeof(brl->seq)) brl->seq[brl->seq_len++] = c; if (brl->seq_len == 2) { if (c != '[') { mapped = map_esc_sequence(brl); brl->esc = FALSE; } else continue; } else { if (0x40 <= c && c <= 0x7e) { mapped = map_ctrl_sequence(brl); brl->esc = FALSE; } else { if (brl->seq_len == (int)sizeof(brl->seq)) { mapped = BRL_TYPE_INVALID; brl->esc = FALSE; } else continue; } } } else mapped = map_input(brl, c); type = BRL_INPUT_TYPE(mapped); in = BRL_INPUT_DATA(mapped); switch (type) { case BRL_TYPE_SELF: out = (char)(in & 0xff); insert_input(brl, &out, 1); redraw_prompt(brl); break; case BRL_TYPE_COMMAND: switch (in) { case BRL_CMD_PREV_LINE: if (brl->h.srch == 0) save_input(brl); hentry = ringbuf_search(&brl->h, -1, 0, (char *)brl->saved); debug(brl, "s:%d,'%s'", brl->h.srch, brl->saved ? brl->saved : "-"); if (hentry != NULL) { reset_input(brl); insert_input(brl, hentry, strlen(hentry)); redraw_prompt(brl); } else bell(brl); break; case BRL_CMD_NEXT_LINE: hentry = ringbuf_search(&brl->h, +1, 0, (char *)brl->saved); debug(brl, "s:%d,'%s'", brl->h.srch, brl->saved ? brl->saved : "-"); if (hentry != NULL) { if (hentry == brl->saved) restore_input(brl); else { reset_input(brl); insert_input(brl, hentry, strlen(hentry)); } redraw_prompt(brl); } else bell(brl); break; case BRL_CMD_BACKWARD: move_cursor(brl, -1); redraw_prompt(brl); break; case BRL_CMD_FORWARD: move_cursor(brl, +1); redraw_prompt(brl); break; case BRL_CMD_LINE_START: move_cursor(brl, -brl->offs); redraw_prompt(brl); break; case BRL_CMD_LINE_END: move_cursor(brl, brl->data - brl->offs); redraw_prompt(brl); break; case BRL_CMD_ERASE_BEFORE: erase_input(brl, -1); if (brl->offs < brl->data) move_cursor(brl, -1); redraw_prompt(brl); break; case BRL_CMD_ERASE_AT: erase_input(brl, 1); redraw_prompt(brl); break; case BRL_CMD_ERASE_REST: save_yank(brl, brl->offs, brl->data); erase_input(brl, brl->data - brl->offs); redraw_prompt(brl); break; case BRL_CMD_ERASE_ALL: save_yank(brl, 0, brl->data); reset_input(brl); redraw_prompt(brl); break; case BRL_CMD_YANK: insert_input(brl, (char *)brl->yank, brl->yank_data); redraw_prompt(brl); break; case BRL_CMD_PREV_WORD: diff = input_delimiter(brl, -1); move_cursor(brl, diff); redraw_prompt(brl); break; case BRL_CMD_NEXT_WORD: diff = input_delimiter(brl, +1); move_cursor(brl, diff); redraw_prompt(brl); break; case BRL_CMD_REDRAW: redraw_prompt(brl); break; case BRL_CMD_ENTER: dprintf(brl->fd, "\n\r"); if (brl->line_cb != NULL) { line = alloca(brl->data + 1); strncpy(line, (char *)brl->buf, brl->data); line[brl->data] = '\0'; reset_input(brl); restore_rawmode(brl); brl->line_cb(brl, line, brl->user_data); enable_rawmode(brl); ringbuf_reset_search(&brl->h); debug(brl, ""); redraw_prompt(brl); } else return; break; default: #if 0 printf("editing command 0x%x\n\r", in); #endif bell(brl); } break; case BRL_TYPE_CSEQ: brl->esc = TRUE; brl->seq[0] = c; brl->seq_len = 1; break; case BRL_TYPE_INVALID: default: bell(brl); break; } } }