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
143
144
145
|
/*
* CDDL HEADER START
*
* The contents of this file are subject to the terms of the
* Common Development and Distribution License (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 2007 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
#ifndef _PMCONFIG_H
#define _PMCONFIG_H
#pragma ident "%Z%%M% %I% %E% SMI"
#ifdef __cplusplus
extern "C" {
#endif
#include <sys/types.h>
#include <sys/stat.h>
#include <sys/cpr.h>
#include <sys/pm.h>
#include <strings.h>
#include <limits.h>
#include <libintl.h>
#include <stdlib.h>
#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <errno.h>
#define LINEARG(an) *(line_args + an)
#define LINELEN 80
#define MOREARGS 4
#define ESTAR_VNONE 0
#define ESTAR_V2 '2'
#define ESTAR_V3 '3'
#define LPAREN '('
#define RPAREN ')'
#define MDEBUG 0
#define MEXIT 1
#define MERR -1
/*
* return values from handler routines;
* chosen to match syscall return values
*/
#define NOUP -1
#define OKUP 0
#define DFLT_THOLD 0.04
struct perm_update {
int perm; /* cpr or pm permission */
int update; /* flag updates from cpr/pm data */
char *set; /* "cpr" or "pm" */
};
typedef struct perm_update prmup_t;
struct cinfo {
char *keyword; /* keyword string */
int (*handler)(void); /* keyword handler routine */
prmup_t *status; /* permission and update status */
char *cmt; /* config file comment */
short argc; /* config line arg count */
uint8_t any; /* 0: match argc, 1: at least argc */
uint8_t alt; /* conf line OK from an alt source */
};
typedef struct cinfo cinfo_t;
typedef void (*vact_t)(char *, size_t, cinfo_t *);
/* Suspend/Resume flags */
extern int whitelist_only;
extern int verify;
/*
* "conf.c"
*/
extern prmup_t cpr_status, pm_status;
extern struct cprconfig new_cc;
extern struct stat def_info;
extern char estar_vers;
extern int pm_fd, ua_err;
extern uid_t ruid;
extern int def_src;
extern void mesg(int, char *, ...);
/*
* "parse.c"
*/
extern int lineno;
extern char **line_args;
extern void lookup_estar_vers(void);
extern void lookup_perms(void);
extern void parse_conf_file(char *, vact_t);
/*
* handlers.c
*/
extern int S3_helper(char *, char *, int, int, char *, char *, int *, int);
extern int S3sup(void);
extern int autoS3(void);
extern int autopm(void);
extern int autosd(void);
extern int cpupm(void);
extern int cputhr(void);
extern int ddprop(void);
extern int devdep(void);
extern int devthr(void);
extern int dreads(void);
extern int idlechk(void);
extern int loadavg(void);
extern int nfsreq(void);
extern int sfpath(void);
extern int systhr(void);
extern int tchars(void);
#ifdef __cplusplus
}
#endif
#endif /* _PMCONFIG_H */
|