aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/ifxmips/danube/target.mk
blob: 5243ce69f1e9d8a941d5e097e40e46d8c26f3be7 (plain)
1
2
3
4
5
6
7
8
9
ARCH:=mips
SUBTARGET:=danube
BOARDNAME:=Danube
FEATURES:=squashfs jffs2

define Target/Description
	Lantiq Danube
endef
* Keyword.Declaration */ .highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */ .highlight .kp { color: #008800 } /* Keyword.Pseudo */ .highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */ .highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */ .highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */ .highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */ .highlight .na { color: #336699 } /* Name.Attribute */ .highlight .nb { color: #003388 } /* Name.Builtin */ .highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */ .highlight .no { color: #003366; font-weight: bold } /* Name.Constant */ .highlight .nd { color: #555555 } /* Name.Decorator */ .highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */ .highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */ .highlight .nl { color: #336699; font-style: italic } /* Name.Label */ .highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */ .highlight .py { color: #336699; font-weight: bold } /* Name.Property */ .highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */ .highlight .nv { color: #336699 } /* Name.Variable */ .highlight .ow { color: #008800 } /* Operator.Word */ .highlight .w { color: #bbbbbb } /* Text.Whitespace */ .highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */ .highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */ .highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */ .highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */ .highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */ .highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */ .highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */ .highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */ .highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */ .highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */ .highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */ .highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */ .highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */ .highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */ .highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */ .highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */ .highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */ .highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */ .highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */ .highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */ .highlight .vc { color: #336699 } /* Name.Variable.Class */ .highlight .vg { color: #dd7700 } /* Name.Variable.Global */ .highlight .vi { color: #3333bb } /* Name.Variable.Instance */ .highlight .vm { color: #336699 } /* Name.Variable.Magic */ .highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
/******************************************************************************
 * xc_cpupool.c
 *
 * API for manipulating and obtaining information on cpupools.
 *
 * Copyright (c) 2009, J Gross.
 */

#include <stdarg.h>
#include "xc_private.h"

int xc_cpupool_create(int xc_handle,
                      uint32_t *ppoolid,
                      uint32_t sched_id)
{
    int err;
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_CREATE;
    domctl.u.cpupool_op.cpupool_id = (*ppoolid == 0) ?
        XEN_DOMCTL_CPUPOOL_PAR_ANY : *ppoolid;
    domctl.u.cpupool_op.sched_id = sched_id;
    if ( (err = do_domctl_save(xc_handle, &domctl)) != 0 )
        return err;

    *ppoolid = domctl.u.cpupool_op.cpupool_id;
    return 0;
}

int xc_cpupool_destroy(int xc_handle,
                       uint32_t poolid)
{
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_DESTROY;
    domctl.u.cpupool_op.cpupool_id = poolid;
    return do_domctl_save(xc_handle, &domctl);
}

int xc_cpupool_getinfo(int xc_handle, 
                       uint32_t first_poolid,
                       uint32_t n_max, 
                       xc_cpupoolinfo_t *info)
{
    int err = 0;
    int p;
    uint32_t poolid = first_poolid;
    uint8_t local[sizeof (info->cpumap)];
    DECLARE_DOMCTL;

    memset(info, 0, n_max * sizeof(xc_cpupoolinfo_t));

    for (p = 0; p < n_max; p++)
    {
        domctl.cmd = XEN_DOMCTL_cpupool_op;
        domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_INFO;
        domctl.u.cpupool_op.cpupool_id = poolid;
        set_xen_guest_handle(domctl.u.cpupool_op.cpumap.bitmap, local);
        domctl.u.cpupool_op.cpumap.nr_cpus = sizeof(info->cpumap) * 8;

        if ( (err = lock_pages(local, sizeof(local))) != 0 )
        {
            PERROR("Could not lock memory for Xen hypercall");
            break;
        }
        err = do_domctl_save(xc_handle, &domctl);
        unlock_pages(local, sizeof (local));

        if ( err < 0 )
            break;

        info->cpupool_id = domctl.u.cpupool_op.cpupool_id;
        info->sched_id = domctl.u.cpupool_op.sched_id;
        info->n_dom = domctl.u.cpupool_op.n_dom;
        bitmap_byte_to_64(&(info->cpumap), local, sizeof(local) * 8);
        poolid = domctl.u.cpupool_op.cpupool_id + 1;
        info++;
    }

    if ( p == 0 )
        return err;

    return p;
}

int xc_cpupool_addcpu(int xc_handle,
                      uint32_t poolid,
                      int cpu)
{
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_ADDCPU;
    domctl.u.cpupool_op.cpupool_id = poolid;
    domctl.u.cpupool_op.cpu = (cpu < 0) ? XEN_DOMCTL_CPUPOOL_PAR_ANY : cpu;
    return do_domctl_save(xc_handle, &domctl);
}

int xc_cpupool_removecpu(int xc_handle,
                         uint32_t poolid,
                         int cpu)
{
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_RMCPU;
    domctl.u.cpupool_op.cpupool_id = poolid;
    domctl.u.cpupool_op.cpu = (cpu < 0) ? XEN_DOMCTL_CPUPOOL_PAR_ANY : cpu;
    return do_domctl_save(xc_handle, &domctl);
}

int xc_cpupool_movedomain(int xc_handle,
                          uint32_t poolid,
                          uint32_t domid)
{
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_MOVEDOMAIN;
    domctl.u.cpupool_op.cpupool_id = poolid;
    domctl.u.cpupool_op.domid = domid;
    return do_domctl_save(xc_handle, &domctl);
}

int xc_cpupool_freeinfo(int xc_handle,
                        uint64_t *cpumap)
{
    int err;
    uint8_t local[sizeof (*cpumap)];
    DECLARE_DOMCTL;

    domctl.cmd = XEN_DOMCTL_cpupool_op;
    domctl.u.cpupool_op.op = XEN_DOMCTL_CPUPOOL_OP_FREEINFO;
    set_xen_guest_handle(domctl.u.cpupool_op.cpumap.bitmap, local);
    domctl.u.cpupool_op.cpumap.nr_cpus = sizeof(*cpumap) * 8;

    if ( (err = lock_pages(local, sizeof(local))) != 0 )
    {
        PERROR("Could not lock memory for Xen hypercall");
        return err;
    }

    err = do_domctl_save(xc_handle, &domctl);
    unlock_pages(local, sizeof (local));

    if (err < 0)
        return err;

    bitmap_byte_to_64(cpumap, local, sizeof(local) * 8);

    return 0;
}