svn commit: r357950 - head/sys/sys
Mateusz Guzik
mjg at FreeBSD.org
Sat Feb 15 01:28:06 UTC 2020
Author: mjg
Date: Sat Feb 15 01:28:06 2020
New Revision: 357950
URL: https://svnweb.freebsd.org/changeset/base/357950
Log:
capsicum: add cap_rights_init_zero, cap_rights_init_one, cap_rights_set_one
... which allow the compiler to generate relevant code in place without
resorting to calling to a routine at runtime.
Modified:
head/sys/sys/capsicum.h
Modified: head/sys/sys/capsicum.h
==============================================================================
--- head/sys/sys/capsicum.h Sat Feb 15 00:48:44 2020 (r357949)
+++ head/sys/sys/capsicum.h Sat Feb 15 01:28:06 2020 (r357950)
@@ -351,6 +351,27 @@ void __cap_rights_sysinit(void *arg);
_Static_assert(CAP_RIGHTS_VERSION == CAP_RIGHTS_VERSION_00,
"unsupported version of capsicum rights");
+#define cap_rights_init_zero(r) ({ \
+ cap_rights_t *_r = (r); \
+ CAP_NONE(_r); \
+ _r; \
+})
+
+#define cap_rights_init_one(r, right) ({ \
+ CTASSERT(CAPRVER(right) == CAP_RIGHTS_VERSION); \
+ cap_rights_t *_r = (r); \
+ CAP_NONE(_r); \
+ _r->cr_rights[CAPIDXBIT(right) - 1] |= right; \
+ _r; \
+})
+
+#define cap_rights_set_one(r, right) ({ \
+ CTASSERT(CAPRVER(right) == CAP_RIGHTS_VERSION); \
+ cap_rights_t *_r = (r); \
+ _r->cr_rights[CAPIDXBIT(right) - 1] |= right; \
+ _r; \
+})
+
/*
* Allow checking caps which are possibly getting modified at the same time.
* The caller is expected to determine whether the result is legitimate via
More information about the svn-src-all
mailing list