#define VC_VXF_VIRT_MEM 0x00010000ull
#define VC_VXF_VIRT_UPTIME 0x00020000ull
#define VC_VXF_VIRT_CPU 0x00040000ull
+#define VC_VXF_VIRT_LOAD 0x00080000ull
#define VC_VXF_HIDE_MOUNT 0x01000000ull
#define VC_VXF_HIDE_NETIF 0x02000000ull
#define VC_VXF_STATE_SETUP (1ULL<<32)
#define VC_VXF_STATE_INIT (1ULL<<33)
+#define VC_VXF_FORK_RSS (1ULL<<48)
+#define VC_VXF_PROLIFIC (1ULL<<49)
+
+#define VC_VXF_IGNEG_NICE (1ULL<<52)
+
+
// the ccapabilities
#define VC_VXC_SET_UTSNAME 0x00000001ull
#define VC_VXC_SET_RLIMIT 0x00000002ull
-#define VC_VXC_ICMP_PING 0x00000100ull
+#define VC_VXC_RAW_ICMP 0x00000100ull
#define VC_VXC_SECURE_MOUNT 0x00010000ull
+#define VC_VXC_SECURE_REMOUNT 0x00020000ull
+
+
+#define VC_VXSM_FILL_RATE 0x0001
+#define VC_VXSM_INTERVAL 0x0002
+#define VC_VXSM_TOKENS 0x0010
+#define VC_VXSM_TOKENS_MIN 0x0020
+#define VC_VXSM_TOKENS_MAX 0x0040
+#define VC_VXSM_PRIO_BIAS 0x0100
+
/** \defgroup syscalls Syscall wrappers
* correct syscallnumber (which may differ between the different
* architectures).
*
- * \params cmd the command to be executed
- * \params xid the xid on which the cmd shall be applied
- * \params data additional arguments; depends on \c cmd
+ * \param cmd the command to be executed
+ * \param xid the xid on which the cmd shall be applied
+ * \param data additional arguments; depends on \c cmd
* \returns depends on \c cmd; usually, -1 stands for an error
*/
int vc_syscall(uint32_t cmd, xid_t xid, void *data);
* \param remove_cap The linux capabilities which will be \b removed.
* \param flags Special flags which will be set.
*
- * \returns The new context-id, or VC_NOCTX on errors; errno
+ * \returns The new context-id, or VC_NOCTX on errors; \c errno
* will be set appropriately
*
* See http://vserver.13thfloor.at/Stuff/Logic.txt for details */
* \param xid The new context; special values are:
* - VC_DYNAMIC_XID which means to create a dynamic context
*
- * \returns the xid of the created context, or VC_NOCTX on errors. errno
+ * \returns the xid of the created context, or VC_NOCTX on errors. \c errno
* will be set appropriately. */
xid_t vc_ctx_create(xid_t xid);
int vc_set_iattr(char const *filename, xid_t xid,
uint_least32_t flags, uint_least32_t mask) VC_ATTR_NONNULL((1));
+
+ /** \brief Returns information about attributes and assigned context of a file.
+ * \ingroup syscalls
+ *
+ * This function returns the VC_IATTR_XXX flags and about the assigned
+ * context of a file. To request an information, the appropriate bit in
+ * \c mask must be set and the corresponding parameter (\a xid or \a
+ * flags) must not be NULL.
+ *
+ * E.g. to receive the assigned context, the \c VC_IATTR_XID bit must be
+ * set in \a mask, and \a xid must point to valid memory.
+ *
+ * Possible flags are \c VC_IATTR_ADMIN, \c VC_IATTR_WATCH , \c VC_IATTR_HIDE,
+ * \c VC_IATTR_BARRIER, \c VC_IATTR_IUNLINK and \c VC_IATTR_IMMUTABLE.
+ *
+ * \param filename The name of the file whose attributes shall be determined.
+
+ * \param xid When non-zero and the VC_IATTR_XID bit is set in \a mask,
+ * the assigned context of \a filename will be stored there.
+ * \param flags When non-zero, a bitmask of current attributes will be
+ * stored there. These attributes must be requested explicitly
+ * by setting the appropriate bit in \a mask
+ * \param mask Points to a bitmask which tells which attributes shall be
+ * determined. On return, it will masquerade the attributes
+ * which were determined.
+ *
+ * \pre mask!=0 && !((*mask&VC_IATTR_XID) && xid==0) && !((*mask&~VC_IATTR_XID) && flags==0) */
int vc_get_iattr(char const *filename, xid_t * /*@null@*/ xid,
uint_least32_t * /*@null@*/ flags,
uint_least32_t * /*@null@*/ mask) VC_ATTR_NONNULL((1));
pid_t initpid;
};
- /** \brief Returns the context of the given process.
+ /** \brief Returns the context of the given process.
+ * \ingroup syscalls
*
- * \params pid the process-id whose xid shall be determined;
+ * \param pid the process-id whose xid shall be determined;
* pid==0 means the current process.
* \returns the xid of process \c pid or -1 on errors
*/
uint_least64_t vc_get_insecurebcaps() VC_ATTR_CONST;
inline static uint_least64_t vc_get_insecureccaps() {
- return ~(VC_VXC_SET_UTSNAME|VC_VXC_ICMP_PING);
+ return ~(VC_VXC_SET_UTSNAME|VC_VXC_RAW_ICMP);
}
inline static int vc_setfilecontext(char const *filename, xid_t xid) {
return vc_set_iattr(filename, xid, 0, VC_IATTR_XID);
}
- inline static xid_t vc_getfilecontext(char const *filename) {
- xid_t res;
- if (vc_get_iattr(filename, &res, 0,0)==-1) return VC_NOCTX;
- return res;
- }
+ /** \brief Returns the context of \c filename
+ * \ingroup syscalls
+ *
+ * This function calls vc_get_iattr() with appropriate arguments to
+ * determine the context of \c filename. In error-case or when no context
+ * is assigned, \c VC_NOCTX will be returned. To differ between both cases,
+ * \c errno must be examined.
+ *
+ * \b WARNING: this function can modify \c errno although no error happened.
+ *
+ * \param filename The file to check
+ * \returns The assigned context, or VC_NOCTX when an error occured or no
+ * such assignment exists. \c errno will be 0 in the latter case */
+ xid_t vc_getfilecontext(char const *filename) VC_ATTR_NONNULL((1));
struct vc_set_sched {
- int32_t fill_rate;
- int32_t interval;
- int32_t tokens;
- int32_t tokens_min;
- int32_t tokens_max;
- uint64_t cpu_mask;
+ uint_least32_t set_mask;
+ int_least32_t fill_rate;
+ int_least32_t interval;
+ int_least32_t tokens;
+ int_least32_t tokens_min;
+ int_least32_t tokens_max;
+ int_least32_t priority_bias;
};
int vc_set_sched(xid_t xid, struct vc_set_sched const *);