X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fvserver.h;h=42b0e5ff7827ac8cdab855f72bd8743c3b0c20c6;hb=b3ff38bc5349de0f78d90bd461605876dd3f93da;hp=4f77ea39aef150bb186b1c37b35bbacca7698053;hpb=077d2b2252fe44248ca4d1916bb7d480b3c9fd9b;p=util-vserver.git diff --git a/util-vserver/lib/vserver.h b/util-vserver/lib/vserver.h index 4f77ea3..42b0e5f 100644 --- a/util-vserver/lib/vserver.h +++ b/util-vserver/lib/vserver.h @@ -33,14 +33,15 @@ #if defined(__GNUC__) # define VC_ATTR_UNUSED __attribute__((__unused__)) # define VC_ATTR_NORETURN __attribute__((__noreturn__)) -# if __GNUC__>3 || (__GNUC__==3 && __GNUC_MINOR__>=3) +# define VC_ATTR_CONST __attribute__((__const__)) +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30300 # define VC_ATTR_NONNULL(ARGS) __attribute__((__nonnull__ ARGS)) # define VC_ATTR_ALWAYSINLINE __attribute__((__always_inline__)) # else # define VC_ATTR_NONNULL(ARGS) # define VC_ATTR_ALWAYSINLINE # endif -# if __GNUC__>3 +# if __GNUC__*0x10000 + __GNUC_MINOR__*0x100 + __GNUC_PATCHLEVEL__ >= 0x30303 # define VC_ATTR_PURE __attribute__((__pure__)) # else # define VC_ATTR_PURE @@ -51,6 +52,7 @@ # define VC_ATTR_NORETURN # define VC_ATTR_ALWAYSINLINE # define VC_ATTR_PURE +# define VC_ATTR_CONST #endif #endif // IS_DOXYGEN @@ -143,6 +145,28 @@ #define VC_IATTR_IUNLINK 0x00020000 #define VC_IATTR_IMMUTABLE 0x00040000 + +// the flags +#define VC_VXF_INFO_LOCK 0x00000001 +#define VC_VXF_INFO_NPROC 0x00000002 +#define VC_VXF_INFO_PRIVATE 0x00000004 +#define VC_VXF_INFO_INIT 0x00000008 + +#define VC_VXF_INFO_HIDE 0x00000010 +#define VC_VXF_INFO_ULIMIT 0x00000020 +#define VC_VXF_INFO_NSPACE 0x00000040 + +#define VC_VXF_SCHED_HARD 0x00000100 +#define VC_VXF_SCHED_PRIO 0x00000200 +#define VC_VXF_SCHED_PAUSE 0x00000400 + +#define VC_VXF_VIRT_MEM 0x00010000 +#define VC_VXF_VIRT_UPTIME 0x00020000 + +#define VC_VXF_STATE_SETUP (1ULL<<32) +#define VC_VXF_STATE_INIT (1ULL<<33) + + /** \defgroup syscalls Syscall wrappers * Functions which are calling the vserver syscall directly. */ @@ -196,6 +220,14 @@ extern "C" { int vc_set_ipv4root(uint32_t bcast, size_t nb, struct vc_ip_mask_pair const *ips) VC_ATTR_NONNULL((3)); + /** \brief Returns the value of NB_IPV4ROOT. + * \ingroup helper + * + * This function returns the value of NB_IPV4ROOT which was used when the + * library was built, but \b not the value which is used by the currently + * running kernel. */ + size_t vc_get_nb_ipv4root() VC_ATTR_CONST VC_ATTR_PURE; + /** \brief Creates a context without starting it. * \ingroup syscalls * @@ -226,8 +258,7 @@ extern "C" { * modified by the vc_set_rlimit() operation. * * Else, the interpretation of the value depends on the corresponding - * resource; it might be bytes, pages, seconds or litres of beer. - */ + * resource; it might be bytes, pages, seconds or litres of beer. */ typedef uint_least64_t vc_limit_t; /** \brief The limits of a resources. @@ -325,6 +356,8 @@ extern "C" { int vc_get_vhi_name(xid_t xid, vc_uts_type type, char *val, size_t len) VC_ATTR_NONNULL((3)); + /** Returns true iff \a xid is a dynamic xid */ + bool vc_is_dynamic_xid(xid_t xid); int vc_enter_namespace(xid_t xid); int vc_set_namespace(); @@ -337,6 +370,7 @@ extern "C" { struct vc_ctx_caps { uint_least64_t bcaps; + uint_least64_t bmask; uint_least64_t ccaps; uint_least64_t cmask; }; @@ -378,7 +412,7 @@ extern "C" { int vc_text2cap(char const *); char const * vc_cap2text(unsigned int); - inline static uint_least32_t vc_get_securecaps() { + inline static uint_least32_t vc_get_insecurecaps() { return ( (1<