#define _GNU_SOURCE #include #include #include #include #include #define BUF_SIZE 128 int main(int argc, char *argv[]) { char buf[BUF_SIZE]; const char def_filename[] = "/sys/kernel/debug/bluetooth/6lowpan_enable"; char *filename = (char *)def_filename; int pipefd[2], dfs_fd; struct iovec iov; if (argc > 1) filename = argv[1]; pipe(pipefd); iov.iov_base = mmap(NULL, 0x1000, 3, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); iov.iov_len = 0x1; vmsplice(pipefd[1], &iov, 1, 1); dfs_fd = open(filename, O_RDWR); splice(pipefd[0], 0, dfs_fd, 0, 0x1, SPLICE_F_NONBLOCK); memset(buf, 0, BUF_SIZE); read(dfs_fd, buf, BUF_SIZE); printf("'%s'\n", buf); return 0; }