1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License, Version 1.0 only
* (the "License"). You may not use this file except in compliance
* with the License.
*
* You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
* or http://www.opensolaris.org/os/licensing.
* See the License for the specific language governing permissions
* and limitations under the License.
*
* When distributing Covered Code, include this CDDL HEADER in each
* file and include the License file at usr/src/OPENSOLARIS.LICENSE.
* If applicable, add the following below this CDDL HEADER, with the
* fields enclosed by brackets "[]" replaced with your own identifying
* information: Portions Copyright [yyyy] [name of copyright owner]
*
* CDDL HEADER END
*/
/* Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T */
/* All Rights Reserved */
/*
* Copyright 2004 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _SYS_STRLOG_H
#define _SYS_STRLOG_H
#pragma ident "%Z%%M% %I% %E% SMI"
#include <sys/types.h>
#include <sys/types32.h>
#ifdef __cplusplus
extern "C" {
#endif
/*
* Streams Log Driver Interface Definitions
*/
/*
* structure of control portion of log message
*/
typedef struct log_ctl {
short mid;
short sid;
char level; /* level of message for tracing */
short flags; /* message disposition */
#if defined(_LP64) || defined(_I32LPx)
clock32_t ltime; /* time in machine ticks since boot */
time32_t ttime; /* time in seconds since 1970 */
#else
clock_t ltime;
time_t ttime;
#endif
int seq_no; /* sequence number */
int pri; /* priority = (facility|level) */
} log_ctl_t;
/*
* Public flags for log messages
*/
#define SL_FATAL 0x01 /* indicates fatal error */
#define SL_NOTIFY 0x02 /* logger must notify administrator */
#define SL_ERROR 0x04 /* include on the error log */
#define SL_TRACE 0x08 /* include on the trace log */
#define SL_CONSOLE 0x10 /* include on the console log */
#define SL_WARN 0x20 /* warning message */
#define SL_NOTE 0x40 /* notice message */
/*
* Private flags for log messages -- used by internal implementation only
*/
#define SL_CONSONLY 0x1000 /* send message only to /dev/console */
#define SL_LOGONLY 0x2000 /* send message only to /var/adm/messages */
#define SL_USER 0x4000 /* send message to user's terminal */
#define SL_PANICMSG 0x8000 /* message was created while panicking */
/*
* Structure defining ids and levels desired by the tracer (I_TRCLOG).
*/
typedef struct trace_ids {
short ti_mid;
short ti_sid;
int8_t ti_level;
} trace_ids_t;
/*
* Log Driver I_STR ioctl commands
*/
#define LOGCTL (('L')<<8)
#define I_TRCLOG (LOGCTL|1) /* process is tracer */
#define I_ERRLOG (LOGCTL|2) /* process is error logger */
#define I_CONSLOG (LOGCTL|3) /* process is console logger */
#define STRLOG_MAKE_MSGID(fmt, msgid) \
{ \
uchar_t *__cp = (uchar_t *)fmt; \
uchar_t __c; \
uint32_t __id = 0; \
while ((__c = *__cp++) != '\0') \
if (__c >= ' ') \
__id = (__id >> 5) + (__id << 27) + __c; \
msgid = (__id % 899981) + 100000; \
}
#ifdef _KERNEL
#ifndef _ASM
#include <sys/va_list.h>
#endif
/*PRINTFLIKE5*/
extern int strlog(short, short, char, unsigned short, char *, ...)
__KPRINTFLIKE(5);
extern int vstrlog(short, short, char, unsigned short, char *, __va_list)
__KVPRINTFLIKE(5);
/*
* STRLOG(mid,sid,level,flags,fmt,args) should be used for those trace
* calls that are only to be made during debugging.
*/
#if defined(DEBUG) || defined(__lint)
#define STRLOG strlog
#else
#define STRLOG 0 && strlog
#endif /* DEBUG || __lint */
#endif /* _KERNEL */
#ifdef __cplusplus
}
#endif
#endif /* _SYS_STRLOG_H */
|