Linux x86_64Sistema & diversos#103
syslog
Lê ou controla o buffer de mensagens do kernel (dmesg) e o nível de log do console.
Descrição
É a syscall por trás de `dmesg(1)` e `klogd`; não deve ser confundida com a função de biblioteca `syslog(3)`, que envia mensagens ao daemon de log via socket, sem relação direta com esta chamada.
man 2
Nota
Acesso restrito por padrão a processos com CAP_SYSLOG (ou controlado pelo sysctl `kernel.dmesg_restrict`), já que o buffer pode conter endereços de memória do kernel úteis para atacantes.
Assinatura
int syslog(int type, char * bufp, int len);Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
| type | int | Ação: SYSLOG_ACTION_READ, SYSLOG_ACTION_READ_ALL, SYSLOG_ACTION_CLEAR, etc. |
| bufp | char * | Buffer de destino, quando `type` envolve leitura. |
| len | int | Tamanho de `bufp`. |
Registradores (x86_64)
| Registrador | Papel | Argumento |
|---|---|---|
| rax | número da syscall (chamada) / valor de retorno (após SYSCALL) | — |
| rdi | argumento 1 | typeint |
| rsi | argumento 2 | bufpchar * |
| rdx | argumento 3 | lenint |
Valor de retorno
Depende de `type`; em geral o número de bytes lidos/disponíveis em sucesso, -1 em erro, com errno definido.
Códigos de erro (errno)
- EINVAL(22)
- Argumento inválido.
- ENOSYS(38)
- Chamada de sistema não implementada nesta versão do kernel.
- EPERM(1)
- Operação não permitida (falta de privilégio).