Project

General

Profile

Statistics
| Revision:

root / lab4 / .minix-src / include / sys / quotactl.h @ 13

History | View | Annotate | Download (4.41 KB)

1
/*        $NetBSD: quotactl.h,v 1.38 2014/06/28 22:27:50 dholland Exp $        */
2
/*-
3
 * Copyright (c) 2011 The NetBSD Foundation, Inc.
4
 * All rights reserved.
5
 *
6
 * This code is derived from software contributed to The NetBSD Foundation
7
 * by David A. Holland.
8
 *
9
 * Redistribution and use in source and binary forms, with or without
10
 * modification, are permitted provided that the following conditions
11
 * are met:
12
 * 1. Redistributions of source code must retain the above copyright
13
 *    notice, this list of conditions and the following disclaimer.
14
 * 2. Redistributions in binary form must reproduce the above copyright
15
 *    notice, this list of conditions and the following disclaimer in the
16
 *    documentation and/or other materials provided with the distribution.
17
 *
18
 * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS
19
 * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
20
 * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
21
 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION OR CONTRIBUTORS
22
 * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
23
 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
24
 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
25
 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
26
 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
27
 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
28
 * POSSIBILITY OF SUCH DAMAGE.
29
 */
30

    
31
#ifndef _SYS_QUOTACTL_H_
32
#define _SYS_QUOTACTL_H_
33

    
34
#include <sys/stdint.h>
35

    
36
/*
37
 * Note - this is an internal interface. Application code (and,
38
 * really, anything that isn't libquota or inside the kernel) should
39
 * use the <quota.h> API instead.
40
 */
41

    
42
/* Size of random quota strings */
43
#define QUOTA_NAMELEN   32
44

    
45
/*              
46
 * Structure for QUOTACTL_STAT.
47
 */             
48
struct quotastat {
49
        char qs_implname[QUOTA_NAMELEN];
50
        int qs_numidtypes;
51
        int qs_numobjtypes;
52
        unsigned qs_restrictions;        /* semantic restriction codes */
53
};
54

    
55
/*
56
 * Structures for QUOTACTL_IDTYPESTAT and QUOTACTL_OBJTYPESTAT.
57
 */
58
struct quotaidtypestat {
59
        char qis_name[QUOTA_NAMELEN];
60
};
61
struct quotaobjtypestat {
62
        char qos_name[QUOTA_NAMELEN];
63
        int qos_isbytes;
64
};
65
                        
66
/*
67
 * Semi-opaque structure for cursors. This holds the cursor state in
68
 * userland; the size is exposed only to libquota, not to client code,
69
 * and is meant to be large enough to accommodate all likely future
70
 * expansion without being unduly bloated, as it will need to be
71
 * copied in and out for every call using it.
72
 */
73
struct quotakcursor {
74
        union {
75
                char qkc_space[64];
76
                uintmax_t __qkc_forcealign;
77
        } u;
78
};
79

    
80
/* Command codes. */
81
#define QUOTACTL_STAT                0
82
#define QUOTACTL_IDTYPESTAT        1
83
#define QUOTACTL_OBJTYPESTAT        2
84
#define QUOTACTL_GET                3
85
#define QUOTACTL_PUT                4
86
#define QUOTACTL_DEL                5
87
#define QUOTACTL_CURSOROPEN        6
88
#define QUOTACTL_CURSORCLOSE        7
89
#define QUOTACTL_CURSORSKIPIDTYPE 8
90
#define QUOTACTL_CURSORGET        9
91
#define QUOTACTL_CURSORATEND        10
92
#define QUOTACTL_CURSORREWIND        11
93
#define QUOTACTL_QUOTAON        12
94
#define QUOTACTL_QUOTAOFF        13
95

    
96
/* Argument encoding. */
97
struct quotactl_args {
98
        unsigned qc_op;
99
        union {
100
                struct {
101
                        struct quotastat *qc_info;
102
                } stat;
103
                struct {
104
                        int qc_idtype;
105
                        struct quotaidtypestat *qc_info;
106
                } idtypestat;
107
                struct {
108
                        int qc_objtype;
109
                        struct quotaobjtypestat *qc_info;
110
                } objtypestat;
111
                struct {
112
                        const struct quotakey *qc_key;
113
                        struct quotaval *qc_val;
114
                } get;
115
                struct {
116
                        const struct quotakey *qc_key;
117
                        const struct quotaval *qc_val;
118
                } put;
119
                struct {
120
                        const struct quotakey *qc_key;
121
                } del;
122
                struct {
123
                        struct quotakcursor *qc_cursor;
124
                } cursoropen;
125
                struct {
126
                        struct quotakcursor *qc_cursor;
127
                } cursorclose;
128
                struct {
129
                        struct quotakcursor *qc_cursor;
130
                        int qc_idtype;
131
                } cursorskipidtype;
132
                struct {
133
                        struct quotakcursor *qc_cursor;
134
                        struct quotakey *qc_keys;
135
                        struct quotaval *qc_vals;
136
                        unsigned qc_maxnum;
137
                        unsigned *qc_ret;
138
                } cursorget;
139
                struct {
140
                        struct quotakcursor *qc_cursor;
141
                        int *qc_ret; /* really boolean */
142
                } cursoratend;
143
                struct {
144
                        struct quotakcursor *qc_cursor;
145
                } cursorrewind;
146
                struct {
147
                        int qc_idtype;
148
                        const char *qc_quotafile;
149
                } quotaon;
150
                struct {
151
                        int qc_idtype;
152
                } quotaoff;
153
        } u;
154
};
155

    
156
#if !defined(_KERNEL) && !defined(_STANDALONE)
157
__BEGIN_DECLS
158
int __quotactl(const char *, struct quotactl_args *);
159
__END_DECLS
160
#endif
161

    
162
#endif /* _SYS_QUOTACTL_H_ */