Mercurial > mplayer.hg
view TOOLS/mem2dump.c @ 11376:70b1673fe399
proper fix for 'some chipsets can't handle buffers > 128kB', vo_zr used
to ignore information about the _actual_ buffer size returned by the
kernel and continued to use the requested buffer size (the old fix was
to request smaller buffers, but not ignoring information about the
actual buffer size is way better)
author | rik |
---|---|
date | Mon, 03 Nov 2003 17:38:50 +0000 |
parents | 04c80ace9581 |
children | 51276a7f4ea1 |
line wrap: on
line source
/* bios2dump.c - Was designed to dump memory block to file. Usage: as argument requires absolute address of memory dump and its lenght (int hexadecimal form). as output - will write file which will named: memADDR_LEN.dump where: ADDR - given address of memory LEN - given length of memory Licence: GNU GPL v2 Copyright: Nick Kurshev <nickols_k@mail.ru> */ #include <stdio.h> #include <stdlib.h> int main( int argc, char *argv[]) { FILE * fd_mem, *fd_out; unsigned long i,addr,len; int int_no; char outname[80]; unsigned char ch; if(argc < 3) { printf("Usage: %s address length (in hex)\n",argv[0]); return EXIT_FAILURE; } addr = strtol(argv[1],NULL,16); len = strtol(argv[2],NULL,16); if(!(fd_mem = fopen("/dev/mem","rb"))) { perror("Can't open file - /dev/mem"); return EXIT_FAILURE; } sprintf(outname,"mem%08X_%08X.dump",addr,len); if(!(fd_out = fopen(outname,"wb"))) { perror("Can't open output file"); fclose(fd_mem); return EXIT_FAILURE; } fseek(fd_mem,addr,SEEK_SET); for(i=0;i<len;i++) { fread(&ch,1,1,fd_mem); fwrite(&ch,1,1,fd_out); } fclose(fd_out); fclose(fd_mem); return EXIT_SUCCESS; }