LINUX: afs_create infinite fetchStatus loop
[pkg-k5-afs_openafs.git] / src / WINNT / client_osi / osilog.h
blob559c8440d2af519e02302094b2afc6326e70d315
1 /*
2 * Copyright (C) 1998, 1989 Transarc Corporation - All rights reserved
4 * (C) COPYRIGHT IBM CORPORATION 1987, 1988
5 * LICENSED MATERIALS - PROPERTY OF IBM
7 */
9 #ifndef _OSI_LOG_H__
10 #define _OSI_LOG_H__ 1
12 #include "osi.h"
13 #include "osisleep.h"
14 #include "osibasel.h"
15 #include "osistatl.h"
16 #include "osifd.h"
17 #include "osiqueue.h"
19 #define OSI_LOG_DEFAULTSIZE 1000
20 #define OSI_LOG_STRINGSIZE 256
21 #define OSI_LOG_MAXPARMS 5 /* max # of int parms */
23 typedef struct osi_logEntry {
24 size_t tid; /* thread ID */
25 unsigned long micros; /* microsecond-based time stamp */
26 char *formatp; /* format string */
27 size_t parms[OSI_LOG_MAXPARMS]; /* parms */
28 } osi_logEntry_t;
30 typedef struct osi_log {
31 osi_queue_t q; /* queue of all logs */
32 char *namep; /* name */
33 long alloc; /* allocated size */
34 long nused; /* number currently in use */
35 long first; /* index of first entry */
36 Crit_Sec cs; /* use this, rather than a higher-level
37 * lock, so we can log stuff from
38 * osi lock pkg */
39 osi_logEntry_t *datap; /* data for the log */
40 int stringindex; /* where to put new strings */
41 int maxstringindex; /* size of string array */
42 char (*stringsp)[OSI_LOG_STRINGSIZE]; /* string array */
43 int enabled; /* true if enabled */
44 } osi_log_t;
46 typedef struct osi_logFD {
47 osi_fd_t fd; /* FD header */
48 osi_log_t *logp; /* logp */
49 long first; /* first index at time we started */
50 long nused; /* nused at tiem we started */
51 long current; /* counter we're at */
52 } osi_logFD_t;
54 extern long osi_logSize;
56 extern osi_log_t *osi_LogCreate(char *, size_t);
58 extern void osi_LogFree(osi_log_t *);
60 extern void osi_LogAdd(osi_log_t *, char *, size_t, size_t, size_t, size_t, size_t);
62 extern void osi_DebugAdd(osi_log_t *, char *, size_t, size_t, size_t, size_t, size_t);
64 extern void osi_LogReset(osi_log_t *);
66 extern long osi_LogFDCreate(osi_fdType_t *, osi_fd_t **);
68 extern long osi_LogFDGetInfo(osi_fd_t *, osi_remGetInfoParms_t *);
70 extern long osi_LogFDClose(osi_fd_t *);
72 extern void osi_LogEnable(osi_log_t *);
74 extern void osi_LogDisable(osi_log_t *);
76 extern void osi_LogPanic(char *msgp, char *filep, size_t line);
78 extern void osi_LogPrint(osi_log_t *logp, FILE_HANDLE handle);
80 extern wchar_t *osi_LogSaveStringW(osi_log_t *logp, wchar_t *s);
81 extern char *osi_LogSaveString(osi_log_t *logp, char *s);
82 extern void osi_InitTraceOption();
83 extern void osi_LogEvent0(char *a,char *b);
84 extern void osi_LogEvent(char *a,char *b,char *c,...);
85 extern char *osi_HexifyString(char *s);
87 /* define macros */
88 #define osi_Log0(l,f) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), 0, 0, 0, 0, 0); } while(0)
89 #define osi_Log1(l,f,a) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), (size_t) (a), 0, 0, 0, 0); } while(0)
90 #define osi_Log2(l,f,a,b) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), (size_t) (a), (size_t) (b), 0, 0, 0); } while(0)
91 #define osi_Log3(l,f,a,b,c) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), 0, 0); } while(0)
92 #define osi_Log4(l,f,a,b,c,d) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), (size_t) (d), 0); } while(0)
93 #define osi_Log5(l,f,a,b,c,d,e) do { if ((l) && (l)->enabled) osi_LogAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), (size_t) (d), (size_t) (e)); } while(0)
95 #define osi_Debug0(l,f) osi_DebugAdd((l), (f), 0, 0, 0, 0, 0)
96 #define osi_Debug1(l,f,a) osi_DebugAdd((l), (f), (size_t) (a), 0, 0, 0, 0)
97 #define osi_Debug2(l,f,a,b) osi_DebugAdd((l), (f), (size_t) (a), (size_t) (b), 0, 0, 0)
98 #define osi_Debug3(l,f,a,b,c) osi_DebugAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), 0, 0)
99 #define osi_Debug4(l,f,a,b,c,d) osi_DebugAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), (size_t) (d), 0)
100 #define osi_Debug5(l,f,a,b,c,d,e) osi_DebugAdd((l), (f), (size_t) (a), (size_t) (b), (size_t) (c), (size_t) (d), (size_t) (e))
104 #ifdef DEBUG_VERBOSE
105 #define DEBUG_EVENT1(a,b,c) {HANDLE h; char *ptbuf[1],buf[132];\
106 h = RegisterEventSource(NULL, a);\
107 sprintf(buf, b,c);\
108 ptbuf[0] = buf;\
109 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0, (const char **)ptbuf, NULL);\
110 DeregisterEventSource(h);}
111 #define DEBUG_EVENT0(a) {HANDLE h; char *ptbuf[1];\
112 h = RegisterEventSource(NULL, a);\
113 ptbuf[0] = "";\
114 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **) ptbuf, NULL);\
115 DeregisterEventSource(h);}
116 #define DEBUG_EVENT2(a,b,c,d) {HANDLE h; char *ptbuf[1],buf[132];\
117 h = RegisterEventSource(NULL, a);\
118 sprintf(buf, b,c,d);\
119 ptbuf[0] = buf;\
120 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **) ptbuf, NULL);\
121 DeregisterEventSource(h);}
122 #define DEBUG_EVENT3(a,b,c,d,e) {HANDLE h; char *ptbuf[1],buf[132];\
123 h = RegisterEventSource(NULL, a);\
124 sprintf(buf, b,c,d,e);\
125 ptbuf[0] = buf;\
126 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **)ptbuf, NULL);\
127 DeregisterEventSource(h);}
128 #define DEBUG_EVENT4(a,b,c,d,e,f) {HANDLE h; char *ptbuf[1],buf[132];\
129 h = RegisterEventSource(NULL, a);\
130 sprintf(buf, b,c,d,e,f);\
131 ptbuf[0] = buf;\
132 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **) ptbuf, NULL);\
133 DeregisterEventSource(h);}
134 #define DEBUG_EVENT5(a,b,c,d,e,f,g) {HANDLE h; char *ptbuf[1],buf[132];\
135 h = RegisterEventSource(NULL, a);\
136 sprintf(buf, b,c,d,e,f,g);\
137 ptbuf[0] = buf;\
138 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **) ptbuf, NULL);\
139 DeregisterEventSource(h);}
140 #define DEBUG_EVENT6(a,b,c,d,e,f,g,h) {HANDLE h; char *ptbuf[1],buf[132];\
141 h = RegisterEventSource(NULL, a);\
142 sprintf(buf,b,c,d,e,f,g,h);\
143 ptbuf[0] = buf;\
144 ReportEvent(h, EVENTLOG_INFORMATION_TYPE, 0, 0, NULL, 1, 0,(const char **) ptbuf, NULL);\
145 DeregisterEventSource(h);}
146 #else
147 #define DEBUG_EVENT0(a)
148 #define DEBUG_EVENT1(a,b,c)
149 #define DEBUG_EVENT2(a,b,c,d)
150 #define DEBUG_EVENT3(a,b,c,d,e)
151 #define DEBUG_EVENT4(a,b,c,d,e,f)
152 #define DEBUG_EVENT5(a,b,c,d,e,f,g)
153 #define DEBUG_EVENT6(a,b,c,d,e,f,g,h)
154 #endif
156 #endif /* _OSI_LOG_H__ */