File: log.h

package info (click to toggle)
open-vm-tools 1%3A8.4.2-261024-1%2Bbuild1
  • links: PTS, VCS
  • area: contrib
  • in suites: squeeze-lts
  • size: 20,376 kB
  • ctags: 30,043
  • sloc: ansic: 164,785; sh: 10,713; cpp: 6,525; makefile: 3,386
file content (132 lines) | stat: -rw-r--r-- 4,713 bytes parent folder | download | duplicates (2)
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
/*********************************************************
 * Copyright (C) 1998 VMware, Inc. All rights reserved.
 *
 * This program is free software; you can redistribute it and/or modify it
 * under the terms of the GNU Lesser General Public License as published
 * by the Free Software Foundation version 2.1 and no later version.
 *
 * This program is distributed in the hope that it will be useful, but
 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 * or FITNESS FOR A PARTICULAR PURPOSE.  See the Lesser GNU General Public
 * License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with this program; if not, write to the Free Software Foundation, Inc.,
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA.
 *
 *********************************************************/

#ifndef VMWARE_LOG_H
#define VMWARE_LOG_H

#define INCLUDE_ALLOW_USERLEVEL
#define INCLUDE_ALLOW_VMCORE
#define INCLUDE_ALLOW_VMMEXT
#include "includeCheck.h"

#include <stdarg.h>


typedef void (LogBasicFunc)(const char *fmt, va_list args);

typedef struct
{
   const char *fileName;             // File name, if known
   const char *config;               // Config variable to look up
   const char *suffix;               // Suffix to generate log file name
   const char *appName;              // App name for log header
   const char *appVersion;           // App version for log header
   Bool logging;                     // Logging is enabled or not
   Bool append;                      // Append to log file
   unsigned int keepOld;             // Number of old logs to keep
   unsigned int throttleThreshold;   // Threshold for throttling
   unsigned int throttleBytesPerSec; // BPS for throttle
   Bool switchFile;                  // Switch the initial log file
   unsigned int rotateSize;          // Size at which log should be rotated
} LogInitParams;

EXTERN void Log_GetInitDefaults(const char *fileName, const char *config,
                                const char *suffix, LogInitParams *params);

EXTERN Bool Log_Init(const char *fileName, const char *config,
                     const char *suffix);
EXTERN Bool Log_InitForApp(const char *fileName, const char *config,
                           const char *suffix, const char *appName,
                           const char *appVersion);
EXTERN Bool Log_InitEx(const LogInitParams *params);
EXTERN void Log_Exit(void);
EXTERN void Log_SetConfigDir(const char *configDir);
EXTERN void Log_SetLockFunc(void (*f)(Bool locking));
EXTERN void Log_WriteLogFile(const char *msg);

EXTERN Bool Log_Enabled(void);
EXTERN const char *Log_GetFileName(void);

EXTERN void Log_Flush(void);
EXTERN void Log_SetAlwaysKeep(Bool alwaysKeep);
EXTERN Bool Log_RemoveFile(Bool alwaysRemove);
EXTERN void Log_DisableThrottling(void);

EXTERN Bool Log_GetQuietWarning(void);
EXTERN void Log_SetQuietWarning(Bool quiet);
EXTERN void Log_RegisterBasicFunctions(LogBasicFunc *log,
                                       LogBasicFunc *warning);

EXTERN void Log_BackupOldFiles(const char *fileName);
EXTERN void Log_UpdateState(Bool enable, Bool append, unsigned keepOld,
                            size_t rotateSize, Bool fastRotation);
EXTERN Bool Log_SwitchFile(const char *fileName, const char *config, Bool copy);
EXTERN Bool Log_CopyFile(const char *fileName);

EXTERN size_t Log_MakeTimeString(Bool millisec, char *buf, size_t max);

/* Logging that uses the custom guest throttling configuration. */
EXTERN void GuestLog_Init(void);
EXTERN void GuestLog_Log(const char *fmt, ...) PRINTF_DECL(1, 2);

// I left DEFAULT_DEBUG in here because the vmx is still using it for now
#if defined(VMX86_DEVEL)
#define DEFAULT_MONITOR    "debug"
#define DEFAULT_DEBUG      1
#elif defined(VMX86_BETA)
#define DEFAULT_MONITOR    "debug"
#define DEFAULT_DEBUG      1
#else
#define DEFAULT_MONITOR    "release"
#define DEFAULT_DEBUG      0
#endif


/*
 * How many old log files to keep around.
 *
 * ESX needs more old log files for bug fixing (and vmotion).
 */

#ifdef VMX86_SERVER
#define LOG_DEFAULT_KEEPOLD 6
#else
#define LOG_DEFAULT_KEEPOLD 3
#endif

#define LOG_NO_BPS_LIMIT        0xFFFFFFFF

#ifdef VMX86_RELEASE
#define LOG_DEFAULT_THROTTLE_BPS       1000
#else
#define LOG_DEFAULT_THROTTLE_BPS       LOG_NO_BPS_LIMIT
#endif

#define LOG_DEFAULT_THROTTLE_THRESHOLD 1000000


/*
 * Debugging
 */

EXTERN void Log_HexDump(const char *prefix, const uint8 *data, int size);
EXTERN void Log_Time(VmTimeType *time, int count, const char *message);
EXTERN void Log_Histogram(uint32 n, uint32 histo[], int nbuckets,
			  const char *message, int *count, int limit);

#endif /* VMWARE_LOG_H */