#ifndef TOKSVC_LOG_IMPL_H
#define TOKSVC_LOG_IMPL_H
#include <psxtypes/psxtypes.h>
#include <ntapi/nt_tty.h>
#define TOKS_LOG_LEVEL(dctx,x) \
if (dctx->cctx->loglevel < x) \
return
#define TOKS_LOG_CHILD_EXIT_STATUS(x) (((x) & 0xff00) >> 8)
#define TOKS_LOG_CHILD_KILL_STATUS(x) (((x) & 0x7f))
enum toks_log_entry_type {
TOKS_LOG_ENTRY_SERVER_STATUS,
TOKS_LOG_ENTRY_SERVER_INFO,
TOKS_LOG_ENTRY_SERVER_ERROR,
TOKS_LOG_ENTRY_CLIENT_STATUS,
TOKS_LOG_ENTRY_CLIENT_INFO,
TOKS_LOG_ENTRY_CLIENT_ERROR,
TOKS_LOG_ENTRY_SUB_LEVEL_1,
TOKS_LOG_ENTRY_SUB_LEVEL_2,
TOKS_LOG_ENTRY_SUB_LEVEL_3,
TOKS_LOG_ENTRY_SUB_LEVEL_4,
TOKS_LOG_ENTRY_SUB_LEVEL_5,
TOKS_LOG_ENTRY_SUB_LEVEL_6,
};
const char * toks_log_basename(const char * path);
void toks_log_header(
const struct toks_driver_ctx *,
enum toks_log_entry_type,
const char *,
...);
void toks_log_write(
const struct toks_driver_ctx *,
enum toks_log_entry_type,
const char *,
...);
void toks_log_get_process_name(
void *, char *, size_t);
void toks_log_get_arbitrary_process_name(
nt_cid *, char *, size_t);
void toks_log_lpc_request(
const struct toks_driver_ctx *,
const nt_tty_port_msg *);
#endif