]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - sys/dev/vinum/vinumkw.h
Bmake bits for Gcc 3.1.
[FreeBSD/FreeBSD.git] / sys / dev / vinum / vinumkw.h
1 /*-
2  * Copyright (c) 1997, 1998
3  *      Nan Yang Computer Services Limited.  All rights reserved.
4  *
5  *  This software is distributed under the so-called ``Berkeley
6  *  License'':
7  *
8  * Redistribution and use in source and binary forms, with or without
9  * modification, are permitted provided that the following conditions
10  * are met:
11  * 1. Redistributions of source code must retain the above copyright
12  *    notice, this list of conditions and the following disclaimer.
13  * 2. Redistributions in binary form must reproduce the above copyright
14  *    notice, this list of conditions and the following disclaimer in the
15  *    documentation and/or other materials provided with the distribution.
16  * 3. Neither the name of the Company nor the names of its contributors
17  *    may be used to endorse or promote products derived from this software
18  *    without specific prior written permission.
19  *
20  * This software is provided ``as is'', and any express or implied
21  * warranties, including, but not limited to, the implied warranties of
22  * merchantability and fitness for a particular purpose are disclaimed.
23  * In no event shall the company or contributors be liable for any
24  * direct, indirect, incidental, special, exemplary, or consequential
25  * damages (including, but not limited to, procurement of substitute
26  * goods or services; loss of use, data, or profits; or business
27  * interruption) however caused and on any theory of liability, whether
28  * in contract, strict liability, or tort (including negligence or
29  * otherwise) arising in any way out of the use of this software, even if
30  * advised of the possibility of such damage.
31  *
32  * $Id: vinumkw.h,v 1.17 2000/05/20 08:23:07 grog Exp grog $
33  * $FreeBSD$
34  */
35
36 /*
37  * Command keywords that vinum knows.  These include both user-level
38  * and kernel-level stuff
39  */
40
41 /*
42  * Our complete vocabulary.  The names of the commands are
43  * the same as the identifier without the kw_ at the beginning
44  * (i.e. kw_create defines the "create" keyword).  Preprocessor
45  * magic in parser.c does the rest.
46  *
47  * To add a new word: put it in the table below and one of the
48  * lists in vinumparser.c (probably keywords).
49  */
50 enum keyword {
51     kw_create,
52     kw_modify,
53     kw_list,
54     kw_l = kw_list,
55     kw_ld,                                                  /* list drive */
56     kw_ls,                                                  /* list subdisk */
57     kw_lp,                                                  /* list plex */
58     kw_lv,                                                  /* list volume */
59     kw_set,
60     kw_rm,
61     kw_mv,                                                  /* move object */
62     kw_move,                                                /* synonym for mv */
63     kw_start,
64     kw_stop,
65     kw_makedev,                                             /* make /dev/vinum devices */
66     kw_setdaemon,                                           /* set daemon flags */
67     kw_getdaemon,                                           /* set daemon flags */
68     kw_help,
69     kw_drive,
70     kw_partition,
71     kw_sd,
72     kw_subdisk = kw_sd,
73     kw_plex,
74     kw_volume,
75     kw_vol = kw_volume,
76     kw_read,
77     kw_readpol,
78     kw_org,
79     kw_name,
80     kw_concat,
81     kw_striped,
82     kw_raid4,
83     kw_raid5,
84     kw_driveoffset,
85     kw_plexoffset,
86     kw_len,
87     kw_length = kw_len,
88     kw_size = kw_len,
89     kw_state,
90     kw_setupstate,
91     kw_d,                                                   /* flag names */
92     kw_f,
93     kw_r,
94     kw_s,
95     kw_v,
96     kw_w,
97     kw_round,                                               /* round robin */
98     kw_prefer,                                              /* prefer plex */
99     kw_device,
100     kw_init,
101     kw_label,
102     kw_resetconfig,
103     kw_writethrough,
104     kw_writeback,
105     kw_raw,
106     kw_replace,
107     kw_resetstats,
108     kw_attach,
109     kw_detach,
110     kw_rename,
111     kw_printconfig,
112     kw_saveconfig,
113     kw_hotspare,
114     kw_detached,
115 #ifdef VINUMDEBUG
116     kw_debug,                                               /* go into debugger */
117 #endif
118     kw_stripe,
119     kw_mirror,
120     kw_info,
121     kw_quit,
122     kw_max,
123     kw_setstate,
124     kw_checkparity,
125     kw_rebuildparity,
126     kw_dumpconfig,
127     kw_retryerrors,
128     kw_invalid_keyword = -1
129 };
130
131 struct _keywords {
132     char *name;
133     enum keyword keyword;
134 };
135
136 struct keywordset {
137     int size;
138     struct _keywords *k;
139 };
140
141 extern struct _keywords keywords[];
142 extern struct _keywords flag_keywords[];
143
144 extern struct keywordset keyword_set;
145 extern struct keywordset flag_set;
146
147 /* Parser functions */
148
149 enum keyword get_keyword(char *, struct keywordset *);
150 int tokenize(char *, char *[], int);