4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 */
25
26 #ifndef _ZFS_PROP_H
27 #define _ZFS_PROP_H
28
29 #include <sys/fs/zfs.h>
30 #include <sys/types.h>
31
32 #ifdef __cplusplus
33 extern "C" {
34 #endif
35
36 /*
37 * For index types (e.g. compression and checksum), we want the numeric value
38 * in the kernel, but the string value in userland.
39 */
40 typedef enum {
41 PROP_TYPE_NUMBER, /* numeric value */
42 PROP_TYPE_STRING, /* string value */
43 PROP_TYPE_INDEX /* numeric value indexed by string */
79 /* defining the possible values */
80 size_t pd_table_size; /* number of entries in pd_table[] */
81 } zprop_desc_t;
82
83 /*
84 * zfs dataset property functions
85 */
86 void zfs_prop_init(void);
87 zprop_type_t zfs_prop_get_type(zfs_prop_t);
88 boolean_t zfs_prop_delegatable(zfs_prop_t prop);
89 zprop_desc_t *zfs_prop_get_table(void);
90
91 /*
92 * zpool property functions
93 */
94 void zpool_prop_init(void);
95 zprop_type_t zpool_prop_get_type(zpool_prop_t);
96 zprop_desc_t *zpool_prop_get_table(void);
97
98 /*
99 * Common routines to initialize property tables
100 */
101 void zprop_register_impl(int, const char *, zprop_type_t, uint64_t,
102 const char *, zprop_attr_t, int, const char *, const char *,
103 boolean_t, boolean_t, const zprop_index_t *);
104 void zprop_register_string(int, const char *, const char *,
105 zprop_attr_t attr, int, const char *, const char *);
106 void zprop_register_number(int, const char *, uint64_t, zprop_attr_t, int,
107 const char *, const char *);
108 void zprop_register_index(int, const char *, uint64_t, zprop_attr_t, int,
109 const char *, const char *, const zprop_index_t *);
110 void zprop_register_hidden(int, const char *, zprop_type_t, zprop_attr_t,
111 int, const char *);
112
113 /*
114 * Common routines for zfs and zpool property management
115 */
116 int zprop_iter_common(zprop_func, void *, boolean_t, boolean_t, zfs_type_t);
117 int zprop_name_to_prop(const char *, zfs_type_t);
118 int zprop_string_to_index(int, const char *, uint64_t *, zfs_type_t);
119 int zprop_index_to_string(int, uint64_t, const char **, zfs_type_t);
120 uint64_t zprop_random_value(int, uint64_t, zfs_type_t);
121 const char *zprop_values(int, zfs_type_t);
122 size_t zprop_width(int, boolean_t *, zfs_type_t);
123 boolean_t zprop_valid_for_type(int, zfs_type_t);
124
125 #ifdef __cplusplus
126 }
127 #endif
128
129 #endif /* _ZFS_PROP_H */
|
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21 /*
22 * Copyright 2010 Sun Microsystems, Inc. All rights reserved.
23 * Use is subject to license terms.
24 * Copyright 2017 Nexenta Systems, Inc. All rights reserved.
25 */
26
27 #ifndef _ZFS_PROP_H
28 #define _ZFS_PROP_H
29
30 #include <sys/fs/zfs.h>
31 #include <sys/types.h>
32
33 #ifdef __cplusplus
34 extern "C" {
35 #endif
36
37 /*
38 * For index types (e.g. compression and checksum), we want the numeric value
39 * in the kernel, but the string value in userland.
40 */
41 typedef enum {
42 PROP_TYPE_NUMBER, /* numeric value */
43 PROP_TYPE_STRING, /* string value */
44 PROP_TYPE_INDEX /* numeric value indexed by string */
80 /* defining the possible values */
81 size_t pd_table_size; /* number of entries in pd_table[] */
82 } zprop_desc_t;
83
84 /*
85 * zfs dataset property functions
86 */
87 void zfs_prop_init(void);
88 zprop_type_t zfs_prop_get_type(zfs_prop_t);
89 boolean_t zfs_prop_delegatable(zfs_prop_t prop);
90 zprop_desc_t *zfs_prop_get_table(void);
91
92 /*
93 * zpool property functions
94 */
95 void zpool_prop_init(void);
96 zprop_type_t zpool_prop_get_type(zpool_prop_t);
97 zprop_desc_t *zpool_prop_get_table(void);
98
99 /*
100 * vdev property functions
101 */
102 void vdev_prop_init(void);
103 zprop_type_t vdev_prop_get_type(vdev_prop_t);
104 zprop_desc_t *vdev_prop_get_table(void);
105
106 /*
107 * cos property functions
108 */
109 void cos_prop_init(void);
110 zprop_type_t cos_prop_get_type(cos_prop_t);
111 zprop_desc_t *cos_prop_get_table(void);
112
113 /*
114 * Common routines to initialize property tables
115 */
116 void zprop_register_impl(int, const char *, zprop_type_t, uint64_t,
117 const char *, zprop_attr_t, int, const char *, const char *,
118 boolean_t, boolean_t, const zprop_index_t *);
119 void zprop_register_string(int, const char *, const char *,
120 zprop_attr_t attr, int, const char *, const char *);
121 void zprop_register_number(int, const char *, uint64_t, zprop_attr_t, int,
122 const char *, const char *);
123 void zprop_register_index(int, const char *, uint64_t, zprop_attr_t, int,
124 const char *, const char *, const zprop_index_t *);
125 void zprop_register_hidden(int, const char *, zprop_type_t, zprop_attr_t,
126 int, const char *);
127 void zprop_register_index_hidden(int prop, const char *name, uint64_t def,
128 zprop_attr_t attr, int objset_types, const char *values,
129 const char *colname, const zprop_index_t *idx_tbl);
130
131 /*
132 * Common routines for zfs and zpool property management
133 */
134 int zprop_iter_common(zprop_func, void *, boolean_t, boolean_t, zfs_type_t);
135 int zprop_name_to_prop(const char *, zfs_type_t);
136 int zprop_string_to_index(int, const char *, uint64_t *, zfs_type_t);
137 int zprop_index_to_string(int, uint64_t, const char **, zfs_type_t);
138 uint64_t zprop_random_value(int, uint64_t, zfs_type_t);
139 const char *zprop_values(int, zfs_type_t);
140 size_t zprop_width(int, boolean_t *, zfs_type_t);
141 boolean_t zprop_valid_for_type(int, zfs_type_t);
142
143 #ifdef __cplusplus
144 }
145 #endif
146
147 #endif /* _ZFS_PROP_H */
|