From ab2b7b6f8021a11c22f345b9c9870e793daeeb84 Mon Sep 17 00:00:00 2001 From: Daniel Hokka Zakrisson Date: Thu, 19 Jul 2007 20:56:25 +0000 Subject: [PATCH] Add vc_get_sched. git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@2568 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- lib/Makefile-files | 4 +++- lib/syscall_getsched-v21.hc | 47 +++++++++++++++++++++++++++++++++++++++++++++ lib/syscall_getsched.c | 37 +++++++++++++++++++++++++++++++++++ lib/vserver.h | 1 + 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 lib/syscall_getsched-v21.hc create mode 100644 lib/syscall_getsched.c diff --git a/lib/Makefile-files b/lib/Makefile-files index d511f20..9d5b6df 100644 --- a/lib/Makefile-files +++ b/lib/Makefile-files @@ -131,7 +131,9 @@ lib_v21_SRCS = lib/syscall_setccaps-v21.hc \ lib/syscall_setmapping-v21.hc \ lib/syscall_schedinfo.c \ lib/syscall_schedinfo-v21.hc \ - lib/syscall_getccaps-v21.hc + lib/syscall_getccaps-v21.hc \ + lib/syscall_getsched.c \ + lib/syscall_getsched-v21.hc if ENSC_HAVE_C99_COMPILER lib_v13_SRCS += lib/syscall_adddlimit-v13.hc \ diff --git a/lib/syscall_getsched-v21.hc b/lib/syscall_getsched-v21.hc new file mode 100644 index 0000000..c1b9a11 --- /dev/null +++ b/lib/syscall_getsched-v21.hc @@ -0,0 +1,47 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2007 Daniel Hokka Zakrisson +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +static inline ALWAYSINLINE int +vc_get_sched_v21(xid_t xid, struct vc_set_sched *data) +{ + struct vcmd_sched_v5 k_data = { + .mask = data->set_mask, + .cpu_id = data->cpu_id, + .bucket_id = data->bucket_id, + }; + int ret; + + ret = vserver(VCMD_get_sched, xid, &k_data); + data->set_mask = k_data.mask; + data->cpu_id = k_data.cpu_id; + data->bucket_id = k_data.bucket_id; + data->fill_rate = k_data.fill_rate[0]; + data->fill_rate2 = k_data.fill_rate[1]; + data->interval = k_data.interval[0]; + data->interval2 = k_data.interval[1]; + data->tokens = k_data.tokens; + data->tokens_min = k_data.tokens_min; + data->tokens_max = k_data.tokens_max; + data->priority_bias = k_data.prio_bias; + + return ret; +} diff --git a/lib/syscall_getsched.c b/lib/syscall_getsched.c new file mode 100644 index 0000000..1b6521b --- /dev/null +++ b/lib/syscall_getsched.c @@ -0,0 +1,37 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2007 Daniel Hokka Zakrisson +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; version 2 of the License. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "vserver.h" +#include "vserver-internal.h" +#include "virtual.h" + +#if defined(VC_ENABLE_API_V21) +# include "syscall_getsched-v21.hc" +#endif + +#if defined(VC_ENABLE_API_V21) +int +vc_get_sched(xid_t xid, struct vc_set_sched *sched) +{ + CALL_VC(CALL_VC_V21(vc_get_sched, xid, sched)); +} +#endif diff --git a/lib/vserver.h b/lib/vserver.h index 38e4c5a..dbee3e6 100644 --- a/lib/vserver.h +++ b/lib/vserver.h @@ -745,6 +745,7 @@ extern "C" { }; int vc_set_sched(xid_t xid, struct vc_set_sched const *) VC_ATTR_NONNULL((2)); + int vc_get_sched(xid_t xid, struct vc_set_sched *) VC_ATTR_NONNULL((2)); struct vc_sched_info { int_least32_t cpu_id; -- 1.8.1.5