/* * linux/kernel/vswitch.c * * Virtual Context Support * * Copyright (C) 2003 Herbert Pötzl * * V0.01 syscall switch * V0.02 added signal to context * */ #include #include #include #include static inline int vc_get_version(uint32_t id) { return VCI_VERSION; } extern int vc_new_s_context(uint32_t, void *); extern int vc_set_ipv4root(uint32_t, void *); extern int vc_get_rlimit(uint32_t, void *); extern int vc_set_rlimit(uint32_t, void *); extern int vc_get_rlimit_mask(uint32_t, void *); extern int vc_ctx_kill(uint32_t, void *); asmlinkage int sys_vserver(uint32_t cmd, uint32_t id, void *data) { int ret = -EINVAL; switch (cmd) { case VCMD_get_version: ret = vc_get_version(id); break; case VCMD_new_s_context: ret = vc_new_s_context(id, data); break; case VCMD_set_ipv4root: ret = vc_set_ipv4root(id, data); break; case VCMD_get_rlimit: ret = vc_get_rlimit(id, data); break; case VCMD_set_rlimit: ret = vc_set_rlimit(id, data); break; case VCMD_get_rlimit_mask: ret = vc_get_rlimit_mask(id, data); break; case VCMD_ctx_kill: ret = vc_ctx_kill(id, data); break; } return ret; }