8#include <sys/syscall.h>
10int main(
int argc,
char* argv[]) {
12 int help = argc == 2 && !strcmp(argv[1],
"--help");
13 fprintf(help ? stdout : stderr,
"Usage: dmesg\nPrint the kernel log.\n");
16 long capacity = syscall(SYS_syslog, 10, NULL, 0);
18 perror(
"dmesg: log size");
21 char* buffer = malloc(capacity ? (
size_t)capacity : 1);
26 long count = syscall(SYS_syslog, 3, buffer, capacity);
28 perror(
"dmesg: read log");
32 int failed = fwrite(buffer, 1, (
size_t)count, stdout) != (size_t)count;
34 if (fflush(stdout) || ferror(stdout))