#include #include #include #include #include #include #include #include #define BUF1_LEN 0x2000 #define BUF2_LEN 0x3000 #define BUF3_LEN (BUF1_LEN + BUF2_LEN) int main(int argc, char *argv[]) { int fd; static char buf1[BUF1_LEN], buf2[BUF2_LEN], buf3[BUF3_LEN]; fd = open("/proc/kcore", O_RDONLY); if (fd == -1) { fprintf(stderr, "open(), errno=%d (%s)\n", errno, strerror(errno)); exit(1); } if (read(fd, buf1, BUF1_LEN) != BUF1_LEN) { fprintf(stderr, "read(buf1, BUF1_LEN), errno=%d (%s)\n", errno, strerror(errno)); exit(1); } if (read(fd, buf2, BUF2_LEN) != BUF2_LEN) { fprintf(stderr, "read(buf2, BUF2_LEN), errno=%d (%s)\n", errno, strerror(errno)); exit(1); } if (lseek(fd, 0, SEEK_SET) == -1) { fprintf(stderr, "lseek(0), errno=%d (%s)\n", errno, strerror(errno)); exit(1); } if (read(fd, buf3, BUF3_LEN) != BUF3_LEN) { fprintf(stderr, "read(buf3, BUF3_LEN), errno=%d (%s)\n", errno, strerror(errno)); exit(1); } if (memcmp(buf3, buf1, BUF1_LEN) != 0) fprintf(stderr, "Error: buf3 != buf1\n"); if (memcmp(buf3+BUF1_LEN, buf2, BUF2_LEN) != 0) fprintf(stderr, "Error: buf3+BUF1_LEN != buf2\n"); (void)close(fd); return 0; }