aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJohn Crispin <john@openwrt.org>2013-08-04 17:05:33 +0000
committerJohn Crispin <john@openwrt.org>2013-08-04 17:05:33 +0000
commitf0b5e7d419c26c5b5da60af35fc1627fb446f9c9 (patch)
treeea0297c09822ab8bccc2e34a52a6863ed347b1c8
parentc7976ae5f8f7dac392d01550ef8c357a0d2133c7 (diff)
downloadupstream-f0b5e7d419c26c5b5da60af35fc1627fb446f9c9.tar.gz
upstream-f0b5e7d419c26c5b5da60af35fc1627fb446f9c9.tar.bz2
upstream-f0b5e7d419c26c5b5da60af35fc1627fb446f9c9.zip
x86: change /dev/console to tty to fix job control
Job control is turned off because it cannot obtain controlling terminal on /dev/console, so it is impossible to do any job control operation behind real x86 device (keyboard+monitor or virtualized). This patch switches /dev/console to tty devices for ash on x86 generic target. Signed-off-by: Jiri Slachta <slachta@cesnet.cz> SVN-Revision: 37693
-rw-r--r--target/linux/x86/base-files/etc/inittab4
1 files changed, 4 insertions, 0 deletions
diff --git a/target/linux/x86/base-files/etc/inittab b/target/linux/x86/base-files/etc/inittab
new file mode 100644
index 00000000000..ca90fd8a2ab
--- /dev/null
+++ b/target/linux/x86/base-files/etc/inittab
@@ -0,0 +1,4 @@
+::sysinit:/etc/init.d/rcS S boot
+::shutdown:/etc/init.d/rcS K shutdown
+ttyS0::askfirst:/bin/ash --login
+tty1::askfirst:/bin/ash --login
3 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172
/******************************************************************************
 *
 * xc_memshr.c
 *
 * Interface to low-level memory sharing functionality.
 *
 * Copyright (c) 2009 Citrix Systems, Inc. (Grzegorz Milos)
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; either
 * version 2.1 of the License, or (at your option) any later version.
 *
 * This library 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
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include "xc_private.h"
#include <xen/memory.h>
#include <xen/grant_table.h>

int xc_memshr_control(xc_interface *xch,
                      uint32_t domid,
                      int enable)
{
    DECLARE_DOMCTL;
    struct xen_domctl_mem_sharing_op *op;

    domctl.cmd = XEN_DOMCTL_mem_sharing_op;
    domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
    domctl.domain = (domid_t)domid;
    op = &(domctl.u.mem_sharing_op);
    op->op = XEN_DOMCTL_MEM_SHARING_OP_CONTROL;
    op->u.enable = enable;

    return do_domctl(xch, &domctl);
}

int xc_memshr_nominate_gfn(xc_interface *xch,
                           uint32_t domid,
                           unsigned long gfn,
                           uint64_t *handle)
{
    DECLARE_DOMCTL;
    struct xen_domctl_mem_sharing_op *op;
    int ret;

    domctl.cmd = XEN_DOMCTL_mem_sharing_op;
    domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
    domctl.domain = (domid_t)domid;
    op = &(domctl.u.mem_sharing_op);
    op->op = XEN_DOMCTL_MEM_SHARING_OP_NOMINATE_GFN;
    op->u.nominate.u.gfn = gfn;

    ret = do_domctl(xch, &domctl);
    if(!ret) *handle = op->u.nominate.handle; 

    return ret;
}

int xc_memshr_nominate_gref(xc_interface *xch,
                            uint32_t domid,
                            grant_ref_t gref,
                            uint64_t *handle)
{
    DECLARE_DOMCTL;
    struct xen_domctl_mem_sharing_op *op;
    int ret;

    domctl.cmd = XEN_DOMCTL_mem_sharing_op;
    domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
    domctl.domain = (domid_t)domid;
    op = &(domctl.u.mem_sharing_op);
    op->op = XEN_DOMCTL_MEM_SHARING_OP_NOMINATE_GREF;
    op->u.nominate.u.grant_ref = gref;

    ret = do_domctl(xch, &domctl);
    if(!ret) *handle = op->u.nominate.handle; 

    return ret;
}

int xc_memshr_share(xc_interface *xch,
                    uint64_t source_handle,
                    uint64_t client_handle)
{
    DECLARE_DOMCTL;
    struct xen_domctl_mem_sharing_op *op;

    domctl.cmd = XEN_DOMCTL_mem_sharing_op;
    domctl.interface_version = XEN_DOMCTL_INTERFACE_VERSION;
    domctl.domain = 0;