X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fplanetlab.h;h=246f66bde406630b522951a9e6674f70934e3e3f;hb=5594cc4c22c895396adc5c59d39b294f7b171de1;hp=e4d6ae4b3c276a0988c878cf82388b8b817c8431;hpb=6bbeb3e9837789f7813f1a38d39ac2e4df3a570b;p=util-vserver.git diff --git a/lib/planetlab.h b/lib/planetlab.h index e4d6ae4..246f66b 100644 --- a/lib/planetlab.h +++ b/lib/planetlab.h @@ -36,8 +36,18 @@ POSSIBILITY OF SUCH DAMAGE. #define VC_VXF_SCHED_FLAGS (VC_VXF_SCHED_HARD | VC_VXF_SCHED_SHARE) +struct sliver_resources { + unsigned long long vs_cpu; + struct vc_rlimit vs_rss; + struct vc_rlimit vs_as; + struct vc_rlimit vs_nproc; + struct vc_rlimit vs_openfd; +}; + +int adjust_lim(const struct vc_rlimit *vcr, struct rlimit *lim); + int -pl_chcontext(xid_t ctx, uint32_t flags, uint64_t bcaps); +pl_chcontext(xid_t ctx, uint64_t bcaps, const struct sliver_resources *slr); int pl_setup_done(xid_t ctx); @@ -48,4 +58,27 @@ pl_setsched(xid_t ctx, uint32_t cpu_share, uint32_t cpu_sched_flags); /* scheduler flags */ #define VS_SCHED_CPU_GUARANTEED 1 +/* Null byte made explicit */ +#define NULLBYTE_SIZE 1 + +void pl_get_limits(const char *, struct sliver_resources *); +void pl_set_ulimits(const struct sliver_resources *); + +static int +_PERROR(const char *format, char *file, int line, int _errno, ...) +{ + va_list ap; + + va_start(ap, _errno); + fprintf(stderr, "%s:%d: ", file, line); + vfprintf(stderr, format, ap); + if (_errno) + fprintf(stderr, ": %s (%d)", strerror(_errno), _errno); + fputs("\n", stderr); + fflush(stderr); + + return _errno; +} + +#define PERROR(format, args...) _PERROR(format, __FILE__, __LINE__, errno, ## args) #endif