aboutsummaryrefslogtreecommitdiffstats
path: root/tools/libxc/xc_csched.c
diff options
context:
space:
mode:
authorack@kneesa.uk.xensource.com <ack@kneesa.uk.xensource.com>2006-05-26 11:14:36 +0100
committerack@kneesa.uk.xensource.com <ack@kneesa.uk.xensource.com>2006-05-26 11:14:36 +0100
commit46ecd270567816a478f639058a450bb6b4ae0552 (patch)
tree148d942fa06e721e6a47ba477599a877443a2f06 /tools/libxc/xc_csched.c
parent9acd07250181fa24f1bc4a4679c1ee7a52def2a5 (diff)
downloadxen-46ecd270567816a478f639058a450bb6b4ae0552.tar.gz
xen-46ecd270567816a478f639058a450bb6b4ae0552.tar.bz2
xen-46ecd270567816a478f639058a450bb6b4ae0552.zip
New weighted fair-share CPU scheduler w/ automatic SMP load balancing
Signed-off-by: Emmanuel Ackaouy <ack@xensource.com>
Diffstat (limited to 'tools/libxc/xc_csched.c')
-rw-r--r--tools/libxc/xc_csched.c50
1 files changed, 50 insertions, 0 deletions
diff --git a/tools/libxc/xc_csched.c b/tools/libxc/xc_csched.c
new file mode 100644
index 0000000000..18513ec179
--- /dev/null
+++ b/tools/libxc/xc_csched.c
@@ -0,0 +1,50 @@
+/****************************************************************************
+ * (C) 2006 - Emmanuel Ackaouy - XenSource Inc.
+ ****************************************************************************
+ *
+ * File: xc_csched.c
+ * Author: Emmanuel Ackaouy
+ *
+ * Description: XC Interface to the credit scheduler
+ *
+ */
+#include "xc_private.h"
+
+
+int
+xc_csched_domain_set(
+ int xc_handle,
+ uint32_t domid,
+ struct csched_domain *sdom)
+{
+ DECLARE_DOM0_OP;
+
+ op.cmd = DOM0_ADJUSTDOM;
+ op.u.adjustdom.domain = (domid_t) domid;
+ op.u.adjustdom.sched_id = SCHED_CREDIT;
+ op.u.adjustdom.direction = SCHED_INFO_PUT;
+ op.u.adjustdom.u.credit = *sdom;
+
+ return do_dom0_op(xc_handle, &op);
+}
+
+int
+xc_csched_domain_get(
+ int xc_handle,
+ uint32_t domid,
+ struct csched_domain *sdom)
+{
+ DECLARE_DOM0_OP;
+ int err;
+
+ op.cmd = DOM0_ADJUSTDOM;
+ op.u.adjustdom.domain = (domid_t) domid;
+ op.u.adjustdom.sched_id = SCHED_CREDIT;
+ op.u.adjustdom.direction = SCHED_INFO_GET;
+
+ err = do_dom0_op(xc_handle, &op);
+ if ( err == 0 )
+ *sdom = op.u.adjustdom.u.credit;
+
+ return err;
+}