diff options
| author | Rich Felker <dalias@aerifal.cx> | 2013-12-20 11:52:10 -0500 | 
|---|---|---|
| committer | Rich Felker <dalias@aerifal.cx> | 2013-12-20 11:52:10 -0500 | 
| commit | e36d8a1d74a00e56990728508635296440ddce1c (patch) | |
| tree | 0839c2bbef499685b4822ff0191986976bb5b317 /include | |
| parent | c91ad4f7167bad8314b06c487ddd1c638981fc24 (diff) | |
| download | musl-e36d8a1d74a00e56990728508635296440ddce1c.tar.gz | |
add sys/quota.h and quotactl syscall wrapper
based on patch by Timo Teräs.
Diffstat (limited to 'include')
| -rw-r--r-- | include/sys/quota.h | 104 | 
1 files changed, 104 insertions, 0 deletions
| diff --git a/include/sys/quota.h b/include/sys/quota.h new file mode 100644 index 00000000..a06f335a --- /dev/null +++ b/include/sys/quota.h @@ -0,0 +1,104 @@ +#ifndef _SYS_QUOTA_H +#define _SYS_QUOTA_H + +#ifdef __cplusplus +extern "C" { +#endif + +#include <stdint.h> + +#define _LINUX_QUOTA_VERSION 2 + +#define dbtob(num) ((num) << 10) +#define btodb(num) ((num) >> 10) +#define fs_to_dq_blocks(num, blksize) (((num) * (blksize)) / 1024) + +#define MAX_IQ_TIME 604800 +#define MAX_DQ_TIME 604800 + +#define MAXQUOTAS 2 +#define USRQUOTA  0 +#define GRPQUOTA  1 + +#define INITQFNAMES { "user", "group", "undefined" }; + +#define QUOTAFILENAME "quota" +#define QUOTAGROUP "staff" + +#define NR_DQHASH 43 +#define NR_DQUOTS 256 + +#define SUBCMDMASK       0x00ff +#define SUBCMDSHIFT      8 +#define QCMD(cmd, type)  (((cmd) << SUBCMDSHIFT) | ((type) & SUBCMDMASK)) + +#define Q_SYNC     0x800001 +#define Q_QUOTAON  0x800002 +#define Q_QUOTAOFF 0x800003 +#define Q_GETFMT   0x800004 +#define Q_GETINFO  0x800005 +#define Q_SETINFO  0x800006 +#define Q_GETQUOTA 0x800007 +#define Q_SETQUOTA 0x800008 + +#define	QFMT_VFS_OLD 1 +#define	QFMT_VFS_V0 2 +#define QFMT_OCFS2 3 +#define	QFMT_VFS_V1 4 + +#define QIF_BLIMITS	1 +#define QIF_SPACE	2 +#define QIF_ILIMITS	4 +#define QIF_INODES	8 +#define QIF_BTIME	16 +#define QIF_ITIME	32 +#define QIF_LIMITS	(QIF_BLIMITS | QIF_ILIMITS) +#define QIF_USAGE	(QIF_SPACE | QIF_INODES) +#define QIF_TIMES	(QIF_BTIME | QIF_ITIME) +#define QIF_ALL		(QIF_LIMITS | QIF_USAGE | QIF_TIMES) + +struct dqblk +{ +	uint64_t dqb_bhardlimit; +	uint64_t dqb_bsoftlimit; +	uint64_t dqb_curspace; +	uint64_t dqb_ihardlimit; +	uint64_t dqb_isoftlimit; +	uint64_t dqb_curinodes; +	uint64_t dqb_btime; +	uint64_t dqb_itime; +	uint32_t dqb_valid; +}; + +#define	dq_bhardlimit	dq_dqb.dqb_bhardlimit +#define	dq_bsoftlimit	dq_dqb.dqb_bsoftlimit +#define dq_curspace	dq_dqb.dqb_curspace +#define dq_valid	dq_dqb.dqb_valid +#define	dq_ihardlimit	dq_dqb.dqb_ihardlimit +#define	dq_isoftlimit	dq_dqb.dqb_isoftlimit +#define	dq_curinodes	dq_dqb.dqb_curinodes +#define	dq_btime	dq_dqb.dqb_btime +#define	dq_itime	dq_dqb.dqb_itime + +#define dqoff(UID)      ((long long)(UID) * sizeof (struct dqblk)) + +#define IIF_BGRACE	1 +#define IIF_IGRACE	2 +#define IIF_FLAGS	4 +#define IIF_ALL		(IIF_BGRACE | IIF_IGRACE | IIF_FLAGS) + +struct dqinfo +{ +	uint64_t dqi_bgrace; +	uint64_t dqi_igrace; +	uint32_t dqi_flags; +	uint32_t dqi_valid; +}; + +int quotactl(int, const char *, int, char *); + +#ifdef __cplusplus +} +#endif + +#endif | 
