X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=util-vserver%2Flib%2Fgetctx.c;h=a4412ae6aeb08aea353ef3db095d136222747bbe;hb=77d217fe688830898ca2b89ebca32fc30aab0741;hp=211ca4199c24e8e2c352e0e31f5887cf76bce64a;hpb=10d5dfbce0061478737f211188e5c4f7db72b6f8;p=util-vserver.git diff --git a/util-vserver/lib/getctx.c b/util-vserver/lib/getctx.c index 211ca41..a4412ae 100644 --- a/util-vserver/lib/getctx.c +++ b/util-vserver/lib/getctx.c @@ -19,56 +19,23 @@ #ifdef HAVE_CONFIG_H # include #endif - #include "compat.h" #include "vserver.h" -#include "internal.h" -#include -#include -#include -#include - -#define CTX_TAG "\ns_context: " - -ctx_t -getctx(pid_t pid) -{ - static volatile size_t bufsize=4097; - // TODO: is this really race-free? - size_t cur_bufsize = bufsize; - int fd; - char status_name[ sizeof("/proc/01234/status") ]; - char buf[cur_bufsize]; - size_t len; - char *pos = 0; - - strcpy(status_name, "/proc/"); - len = utilvserver_uint2str(status_name+sizeof("/proc/")-1, - sizeof(status_name)-sizeof("/proc//status")+1, - pid, 10); - strcpy(status_name+sizeof("/proc/")+len-1, "/status"); +#include "vserver-internal.h" - fd = open(status_name, O_RDONLY); - if (fd==-1) return CTX_NOCTX; +#ifdef VC_ENABLE_API_COMPAT +# include "getctx-compat.hc" +#endif - len = read(fd, buf, cur_bufsize); - close(fd); +#ifdef VC_ENABLE_API_LEGACY +# include "getctx-legacy.hc" +#endif - if (len - if (pos!=0) return atoi(pos+sizeof(CTX_TAG)-1); - else return CTX_NOCTX; -} - -#if 0 -ctx_t -getcctx() +xid_t +vc_X_getctx(pid_t pid) { - return getctx(getpid()); + CALL_VC(CALL_VC_COMPAT(vc_X_getctx, pid), + CALL_VC_LEGACY(vc_X_getctx, pid)); } -#endif