#include #include #include #include #include #include #include #include static char filename[] = "/dev/fb0"; int main(int argc, char *argv[]) { int fd = -1; unsigned char *fbuf; struct stat buf; int i; int len; printf("Starting..[%s]\n", filename); fd = open(filename, O_RDWR); if (fd <= 0) { printf("Could not open; err: %d\n", errno); return errno; } if (stat(filename, &buf) != 0) { printf("Could not open; err: %d\n", errno); return errno; } printf("%s: %d\n", filename, buf.st_size); len = 2097152; if (buf.st_size) len = buf.st_size; fbuf = mmap(0, len, PROT_WRITE, MAP_SHARED, fd, 0); if (fbuf == MAP_FAILED) { printf("Could not map: error: %d\n", errno); return errno; } if (argc > 1) { int outfd; outfd = open(argv[1], O_RDWR|O_CREAT, 0644); if (outfd != -1) { write(outfd, fbuf, len); close(outfd); } } printf("(%lx): DATA:\n", fbuf); for (i = 0; i < len; i++) { if ((i % 4096) == 0) printf("\n%.4x: ", i); if (i == 0) printf("Whhhwww "); fbuf[i] = (i % 255); if (i == 0) printf(" AHA!\n"); /* if (isgraph(fbuf[i])) printf("%c", fbuf[i]); else printf("_");*/ } printf("Done!\n"); if (munmap(fbuf, len)) { printf("Could not unmap: %d\n", errno); return errno; } close(fd); return 0; }