X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fvserver.h;h=2f9c62a0cc0c47e347b6852ec66649433c078b04;hb=b7f5a9929571a3c1248c3365710e58556598020c;hp=b704b172376dc946143c446b284d4522c2165ab1;hpb=de1587ade0cb90cefe81838fa3e5480a4b90e08e;p=util-vserver.git diff --git a/lib/vserver.h b/lib/vserver.h index b704b17..2f9c62a 100644 --- a/lib/vserver.h +++ b/lib/vserver.h @@ -230,6 +230,11 @@ // the network flags #define VC_NXF_INFO_LOCK 0x00000001ull +#define VC_NXF_INFO_PRIVATE 0x00000008ull + +#define VC_NXF_SINGLE_IP 0x00000100ull + +#define VC_NXF_HIDE_NETIF 0x02000000ull #define VC_NXF_STATE_SETUP (1ULL<<32) #define VC_NXF_STATE_ADMIN (1ULL<<34) @@ -238,6 +243,17 @@ #define VC_NXF_PERSISTENT (1ULL<<38) +// the vserver specific limits +#define VC_VLIMIT_NSOCK 16 +#define VC_VLIMIT_OPENFD 17 +#define VC_VLIMIT_ANON 18 +#define VC_VLIMIT_SHMEM 19 +#define VC_VLIMIT_SEMARY 20 +#define VC_VLIMIT_NSEMS 21 +#define VC_VLIMIT_DENTRY 22 +#define VC_VLIMIT_MAPPED 23 + + #define VC_BAD_PERSONALITY ((uint_least32_t)(-1)) @@ -284,6 +300,12 @@ extern "C" { * \returns The versionnumber of the kernel API */ int vc_get_version(); + + /** \brief Returns the kernel configuration bits + * \ingroup syscalls + * \returns The kernel configuration bits + */ + int vc_get_vci(); /** \brief Moves current process into a context * \ingroup syscalls @@ -337,6 +359,42 @@ extern "C" { * \param xid The new context * \returns 0 on success, -1 on errors */ int vc_ctx_migrate(xid_t xid); + + /** \brief Statistics about a context */ + struct vc_ctx_stat { + uint_least32_t usecnt; ///< number of uses + uint_least32_t tasks; ///< number of tasks + }; + + /** \brief Get some statistics about a context. + * \ingroup syscalls + * + * \param xid The context to get stats about + * \param stat Where to store the result + * + * \returns 0 on success, -1 on errors. */ + int vc_ctx_stat(xid_t xid, struct vc_ctx_stat /*@out@*/ *stat) VC_ATTR_NONNULL((2)); + + /** \brief Contains further statistics about a context. */ + struct vc_virt_stat { + uint_least64_t offset; + uint_least32_t uptime; + uint_least32_t nr_threads; + uint_least32_t nr_running; + uint_least32_t nr_uninterruptible; + uint_least32_t nr_onhold; + uint_least32_t nr_forks; + uint_least32_t load[3]; + }; + + /** \brief Get more statistics about a context. + * \ingroup syscalls + * + * \param xid The context to get stats about + * \param stat Where to store the result + * + * \returns 0 on success, -1 on errors. */ + int vc_virt_stat(xid_t xid, struct vc_virt_stat /*@out@*/ *stat) VC_ATTR_NONNULL((2)); /* rlimit related functions */ @@ -367,6 +425,14 @@ extern "C" { uint_least32_t hard; ///< masks the resources supporting a hard limit }; + /** \brief Statistics for a resource limit. */ + struct vc_rlimit_stat { + uint_least32_t hits; ///< number of hits on the limit + uint_least64_t value; ///< current value + uint_least64_t minimum; ///< minimum value observed + uint_least64_t maximum; ///< maximum value observed + }; + /** \brief Returns the limits of \a resource. * \ingroup syscalls * @@ -389,6 +455,23 @@ extern "C" { struct vc_rlimit const /*@in@*/ *lim) VC_ATTR_NONNULL((3)); int vc_get_rlimit_mask(xid_t xid, struct vc_rlimit_mask *lim) VC_ATTR_NONNULL((2)); + /** \brief Returns the current stats of \a resource. + * \ingroup syscalls + * + * \param xid The id of the context + * \param resource The resource which will be queried + * \param stat The result which will be filled with the stats + * + * \returns 0 on success, and -1 on errors. */ + int vc_rlimit_stat(xid_t xid, int resource, + struct vc_rlimit_stat /*@out@*/ *stat) VC_ATTR_NONNULL((3)); + /** \brief Resets the minimum and maximum observed values for all resources. + * \ingroup syscalls + * + * \param xid The id of the context + * + * \returns 0 on success, and -1 on errors. */ + int vc_reset_minmax(xid_t xid); /** \brief Parses a string describing a limit * \ingroup helper * @@ -706,6 +789,8 @@ extern "C" { uint_least32_t set_mask; int_least32_t fill_rate; int_least32_t interval; + int_least32_t fill_rate2; + int_least32_t interval2; int_least32_t tokens; int_least32_t tokens_min; int_least32_t tokens_max; @@ -776,6 +861,8 @@ extern "C" { /** Maps an xid given at '--xid' options to an xid_t */ xid_t vc_xidopt2xid(char const *, bool honor_static, char const **err_info); + /** Maps a nid given at '--nid' options to a nid_t */ + nid_t vc_nidopt2nid(char const *, bool honor_static, char const **err_info); vcCfgStyle vc_getVserverCfgStyle(char const *id);