Added implementation for syslog related functionality.

On Unix, the syslog facility will connect to the syslogd through
the Unix socket /dev/log. On Windows it uses the event logging
API (ReportEvent).
Had to add the constants for the LOG_xxxx values for Windows.
This commit is contained in:
Fabrizio Bertocci 2021-03-25 10:00:19 -04:00
parent 6b90ff60cd
commit 87f5e7e731
43 changed files with 148 additions and 67 deletions

View file

@ -1,2 +1,15 @@
.include "o/libc/nt/codegen.inc"
.imp advapi32,__imp_DeregisterEventSource,DeregisterEventSource,1239
.text.windows
DeregisterEventSource:
push %rbp
mov %rsp,%rbp
.profilable
mov %rdi,%rcx
sub $32,%rsp
call *__imp_DeregisterEventSource(%rip)
leave
ret
.endfn DeregisterEventSource,globl
.previous

View file

@ -1,2 +1,12 @@
.include "o/libc/nt/codegen.inc"
.imp advapi32,__imp_RegisterEventSourceA,RegisterEventSourceA,1686
.text.windows
RegisterEventSourceA:
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_RegisterEventSourceA(%rip),%rax
jmp __sysv2nt
.endfn RegisterEventSourceA,globl
.previous

View file

@ -1,2 +1,12 @@
.include "o/libc/nt/codegen.inc"
.imp advapi32,__imp_RegisterEventSourceW,RegisterEventSourceW,1687
.text.windows
RegisterEventSourceW:
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_RegisterEventSourceW(%rip),%rax
jmp __sysv2nt
.endfn RegisterEventSourceW,globl
.previous

View file

@ -1,2 +1,12 @@
.include "o/libc/nt/codegen.inc"
.imp advapi32,__imp_ReportEventA,ReportEventA,1704
.text.windows
ReportEventA:
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_ReportEventA(%rip),%rax
jmp __sysv2nt8
.endfn ReportEventA,globl
.previous

View file

@ -1,2 +1,12 @@
.include "o/libc/nt/codegen.inc"
.imp advapi32,__imp_ReportEventW,ReportEventW,1705
.text.windows
ReportEventW:
push %rbp
mov %rsp,%rbp
.profilable
mov __imp_ReportEventW(%rip),%rax
jmp __sysv2nt8
.endfn ReportEventW,globl
.previous

View file

@ -39,6 +39,19 @@ bool32 GetCursorPos(struct NtPoint *lpPoint);
int64_t SendMessage(int64_t hWnd, uint32_t Msg, uint64_t wParam,
int64_t lParam);
#define EVENTLOG_SUCCESS 0x00000000
#define EVENTLOG_ERROR_TYPE 0x00000001
#define EVENTLOG_WARNING_TYPE 0x00000002
#define EVENTLOG_INFORMATION_TYPE 0x00000004
#define EVENTLOG_AUDIT_SUCCESS 0x00000008
#define EVENTLOG_AUDIT_FAILURE 0x00000010
int32_t ReportEventA(int64_t handle, uint16_t wType, uint16_t wCategory,
uint32_t dwEventID, const char *lpUserId, uint16_t wNumStrings,
uint32_t dwDataSize, const char **lpStrings, void **lpRawData);
int64_t RegisterEventSourceA(const char *lpUNCServerName, const char *lpSourceName);
int32_t DeregisterEventSource(uint64_t handle);
COSMOPOLITAN_C_END_
#endif /* !(__ASSEMBLER__ + __LINKER__ + 0) */
#endif /* COSMOPOLITAN_LIBC_NT_EVENTS_H_ */

View file

@ -40,6 +40,11 @@ struct sockaddr_in { /* Linux+NT ABI */
uint8_t sin_zero[8];
};
struct sockaddr_un {
uint16_t sun_family; /* AF_UNIX */
char sun_path[14];/* path */
};
struct sockaddr_storage {
union {
uint16_t ss_family;

View file

@ -24,8 +24,11 @@ LIBC_SOCK_A_DIRECTDEPS = \
LIBC_FMT \
LIBC_INTRIN \
LIBC_MEM \
LIBC_TIME \
LIBC_STR \
LIBC_UNICODE \
LIBC_NEXGEN32E \
LIBC_NT_KERNEL32 \
LIBC_NT_ADVAPI32 \
LIBC_NT_KERNEL32 \
LIBC_NT_MSWSOCK \
LIBC_NT_NTDLL \

View file

@ -842,41 +842,41 @@ syscon pr PR_SET_PTRACER 0x59616d61 0 0 0 0 0
syscon log LOG_EMERG 0 0 0 0 0 0 # consensus
syscon log LOG_KERN 0 0 0 0 0 0 # consensus
syscon log LOG_ALERT 1 1 1 1 1 0 # unix consensus
syscon log LOG_PID 1 1 1 1 1 0 # unix consensus
syscon log LOG_CONS 2 2 2 2 2 0 # unix consensus
syscon log LOG_CRIT 2 2 2 2 2 0 # unix consensus
syscon log LOG_ERR 3 3 3 3 3 0 # unix consensus
syscon log LOG_ODELAY 4 4 4 4 4 0 # unix consensus
syscon log LOG_WARNING 4 4 4 4 4 0 # unix consensus
syscon log LOG_NOTICE 5 5 5 5 5 0 # unix consensus
syscon log LOG_INFO 6 6 6 6 6 0 # unix consensus
syscon log LOG_DEBUG 7 7 7 7 7 0 # unix consensus
syscon log LOG_PRIMASK 7 7 7 7 7 0 # unix consensus
syscon log LOG_NDELAY 8 8 8 8 8 0 # unix consensus
syscon log LOG_USER 8 8 8 8 8 0 # unix consensus
syscon log LOG_MAIL 0x10 0x10 0x10 0x10 0x10 0 # unix consensus
syscon log LOG_NOWAIT 0x10 0x10 0x10 0x10 0x10 0 # unix consensus
syscon log LOG_DAEMON 24 24 24 24 24 0 # unix consensus
syscon log LOG_NFACILITIES 24 25 24 24 24 0
syscon log LOG_AUTH 0x20 0x20 0x20 0x20 0x20 0 # unix consensus
syscon log LOG_PERROR 0x20 0x20 0x20 0x20 0x20 0 # unix consensus
syscon log LOG_SYSLOG 40 40 40 40 40 0 # unix consensus
syscon log LOG_LPR 48 48 48 48 48 0 # unix consensus
syscon log LOG_NEWS 56 56 56 56 56 0 # unix consensus
syscon log LOG_UUCP 0x40 0x40 0x40 0x40 0x40 0 # unix consensus
syscon log LOG_CRON 72 72 72 72 72 0 # unix consensus
syscon log LOG_ALERT 1 1 1 1 1 1 # unix consensus
syscon log LOG_PID 1 1 1 1 1 1 # unix consensus
syscon log LOG_CONS 2 2 2 2 2 2 # unix consensus
syscon log LOG_CRIT 2 2 2 2 2 2 # unix consensus
syscon log LOG_ERR 3 3 3 3 3 3 # unix consensus
syscon log LOG_ODELAY 4 4 4 4 4 4 # unix consensus
syscon log LOG_WARNING 4 4 4 4 4 4 # unix consensus
syscon log LOG_NOTICE 5 5 5 5 5 5 # unix consensus
syscon log LOG_INFO 6 6 6 6 6 6 # unix consensus
syscon log LOG_DEBUG 7 7 7 7 7 7 # unix consensus
syscon log LOG_PRIMASK 7 7 7 7 7 7 # unix consensus
syscon log LOG_NDELAY 8 8 8 8 8 8 # unix consensus
syscon log LOG_USER 8 8 8 8 8 8 # unix consensus
syscon log LOG_MAIL 0x10 0x10 0x10 0x10 0x10 0x10 # unix consensus
syscon log LOG_NOWAIT 0x10 0x10 0x10 0x10 0x10 0x10 # unix consensus
syscon log LOG_DAEMON 24 24 24 24 24 24 # unix consensus
syscon log LOG_NFACILITIES 24 25 24 24 24 24
syscon log LOG_AUTH 0x20 0x20 0x20 0x20 0x20 0x20 # unix consensus
syscon log LOG_PERROR 0x20 0x20 0x20 0x20 0x20 0x20 # unix consensus
syscon log LOG_SYSLOG 40 40 40 40 40 40 # unix consensus
syscon log LOG_LPR 48 48 48 48 48 48 # unix consensus
syscon log LOG_NEWS 56 56 56 56 56 56 # unix consensus
syscon log LOG_UUCP 0x40 0x40 0x40 0x40 0x40 40 # unix consensus
syscon log LOG_CRON 72 72 72 72 72 72 # unix consensus
syscon log LOG_SELECT 76 0 0 0 0 0
syscon log LOG_SENSE 77 0 0 0 0 0
syscon log LOG_LOCAL0 0x80 0x80 0x80 0x80 0x80 0 # unix consensus
syscon log LOG_LOCAL1 136 136 136 136 136 0 # unix consensus
syscon log LOG_LOCAL2 144 144 144 144 144 0 # unix consensus
syscon log LOG_LOCAL3 152 152 152 152 152 0 # unix consensus
syscon log LOG_LOCAL4 160 160 160 160 160 0 # unix consensus
syscon log LOG_LOCAL5 168 168 168 168 168 0 # unix consensus
syscon log LOG_LOCAL6 176 176 176 176 176 0 # unix consensus
syscon log LOG_LOCAL7 184 184 184 184 184 0 # unix consensus
syscon log LOG_FACMASK 0x03f8 0x03f8 0x03f8 0x03f8 0x03f8 0 # unix consensus
syscon log LOG_LOCAL0 0x80 0x80 0x80 0x80 0x80 0x80 # unix consensus
syscon log LOG_LOCAL1 136 136 136 136 136 136 # unix consensus
syscon log LOG_LOCAL2 144 144 144 144 144 144 # unix consensus
syscon log LOG_LOCAL3 152 152 152 152 152 152 # unix consensus
syscon log LOG_LOCAL4 160 160 160 160 160 160 # unix consensus
syscon log LOG_LOCAL5 168 168 168 168 168 168 # unix consensus
syscon log LOG_LOCAL6 176 176 176 176 176 176 # unix consensus
syscon log LOG_LOCAL7 184 184 184 184 184 184 # unix consensus
syscon log LOG_FACMASK 0x03f8 0x03f8 0x03f8 0x03f8 0x03f8 0x03f8 # unix consensus
syscon sg SG_DXFER_TO_FROM_DEV -4 0 0 0 0 0
syscon sg SG_DXFER_FROM_DEV -3 0 0 0 0 0

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_ALERT,1,1,1,1,1,0
.syscon log,LOG_ALERT,1,1,1,1,1,1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_AUTH,0x20,0x20,0x20,0x20,0x20,0
.syscon log,LOG_AUTH,0x20,0x20,0x20,0x20,0x20,0x20

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_CONS,2,2,2,2,2,0
.syscon log,LOG_CONS,2,2,2,2,2,2

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_CRIT,2,2,2,2,2,0
.syscon log,LOG_CRIT,2,2,2,2,2,2

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_CRON,72,72,72,72,72,0
.syscon log,LOG_CRON,72,72,72,72,72,72

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_DAEMON,24,24,24,24,24,0
.syscon log,LOG_DAEMON,24,24,24,24,24,24

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_DEBUG,7,7,7,7,7,0
.syscon log,LOG_DEBUG,7,7,7,7,7,7

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_ERR,3,3,3,3,3,0
.syscon log,LOG_ERR,3,3,3,3,3,3

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_FACMASK,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0
.syscon log,LOG_FACMASK,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8,0x03f8

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_INFO,6,6,6,6,6,0
.syscon log,LOG_INFO,6,6,6,6,6,6

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL0,0x80,0x80,0x80,0x80,0x80,0
.syscon log,LOG_LOCAL0,0x80,0x80,0x80,0x80,0x80,0x80

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL1,136,136,136,136,136,0
.syscon log,LOG_LOCAL1,136,136,136,136,136,136

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL2,144,144,144,144,144,0
.syscon log,LOG_LOCAL2,144,144,144,144,144,144

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL3,152,152,152,152,152,0
.syscon log,LOG_LOCAL3,152,152,152,152,152,152

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL4,160,160,160,160,160,0
.syscon log,LOG_LOCAL4,160,160,160,160,160,160

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL5,168,168,168,168,168,0
.syscon log,LOG_LOCAL5,168,168,168,168,168,168

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL6,176,176,176,176,176,0
.syscon log,LOG_LOCAL6,176,176,176,176,176,176

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LOCAL7,184,184,184,184,184,0
.syscon log,LOG_LOCAL7,184,184,184,184,184,184

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_LPR,48,48,48,48,48,0
.syscon log,LOG_LPR,48,48,48,48,48,48

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_MAIL,0x10,0x10,0x10,0x10,0x10,0
.syscon log,LOG_MAIL,0x10,0x10,0x10,0x10,0x10,0x10

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_NDELAY,8,8,8,8,8,0
.syscon log,LOG_NDELAY,8,8,8,8,8,8

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_NEWS,56,56,56,56,56,0
.syscon log,LOG_NEWS,56,56,56,56,56,56

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_NFACILITIES,24,25,24,24,24,0
.syscon log,LOG_NFACILITIES,24,25,24,24,24,24

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_NOTICE,5,5,5,5,5,0
.syscon log,LOG_NOTICE,5,5,5,5,5,5

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_NOWAIT,0x10,0x10,0x10,0x10,0x10,0
.syscon log,LOG_NOWAIT,0x10,0x10,0x10,0x10,0x10,0x10

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_ODELAY,4,4,4,4,4,0
.syscon log,LOG_ODELAY,4,4,4,4,4,4

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_PERROR,0x20,0x20,0x20,0x20,0x20,0
.syscon log,LOG_PERROR,0x20,0x20,0x20,0x20,0x20,0x20

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_PID,1,1,1,1,1,0
.syscon log,LOG_PID,1,1,1,1,1,1

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_PRIMASK,7,7,7,7,7,0
.syscon log,LOG_PRIMASK,7,7,7,7,7,7

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_SYSLOG,40,40,40,40,40,0
.syscon log,LOG_SYSLOG,40,40,40,40,40,40

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_USER,8,8,8,8,8,0
.syscon log,LOG_USER,8,8,8,8,8,8

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_UUCP,0x40,0x40,0x40,0x40,0x40,0
.syscon log,LOG_UUCP,0x40,0x40,0x40,0x40,0x40,40

View file

@ -1,2 +1,2 @@
#include "libc/sysv/consts/syscon.internal.h"
.syscon log,LOG_WARNING,4,4,4,4,4,0
.syscon log,LOG_WARNING,4,4,4,4,4,4

View file

@ -40,6 +40,13 @@
#define LOG_UUCP SYMBOLIC(LOG_UUCP)
#define LOG_WARNING SYMBOLIC(LOG_WARNING)
/*
* arguments to setlogmask.
*/
#define LOG_MASK(pri) (1 << (pri)) /* mask for one priority */
#define LOG_UPTO(pri) ((1 << ((pri)+1)) - 1) /* all priorities through pri */
#if !(__ASSEMBLER__ + __LINKER__ + 0)
COSMOPOLITAN_C_START_