349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee/*
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * CDDL HEADER START
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee *
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * The contents of this file are subject to the terms of the
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * Common Development and Distribution License (the "License").
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * You may not use this file except in compliance with the License.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee *
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * or http://www.opensolaris.org/os/licensing.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * See the License for the specific language governing permissions
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * and limitations under the License.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee *
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * When distributing Covered Code, include this CDDL HEADER in each
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * If applicable, add the following below this CDDL HEADER, with the
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * fields enclosed by brackets "[]" replaced with your own identifying
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * information: Portions Copyright [yyyy] [name of copyright owner]
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee *
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * CDDL HEADER END
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee */
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee/*
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * Copyright 2009 Sun Microsystems, Inc. All rights reserved.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * Use is subject to license terms.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee */
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#ifndef _SYS_XPV_SYSCTL_H
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define _SYS_XPV_SYSCTL_H
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#ifdef __cplusplus
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybeeextern "C" {
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#endif
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee/*
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * This header file defines things needed for access to sysctl(),
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * domctl(), and other API features that are only used by userspace
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * upstream. On Solaris, due to privcmd and a couple of other uses, we
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee * need them in the kernel, so isolate their use to this file.
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee */
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define __XEN_TOOLS__
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#include <sys/hypervisor.h>
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#include <xen/public/sysctl.h>
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#include <xen/public/xsm/acm_ops.h>
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#if !defined(__GNUC__) && defined(__i386__)
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define set_xen_guest_handle_u(hnd, val) do { (hnd).u.p = val; } while (0)
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define get_xen_guest_handle_u(val, hnd) do { val = (hnd).u.p; } while (0)
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#else
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define set_xen_guest_handle_u(hnd, val) do { (hnd).p = val; } while (0)
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#define get_xen_guest_handle_u(val, hnd) do { val = (hnd).p; } while (0)
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#endif
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybeeextern long HYPERVISOR_xsm_op(struct xen_acmctl *);
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybeeextern long HYPERVISOR_sysctl(xen_sysctl_t *);
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybeeextern long HYPERVISOR_domctl(xen_domctl_t *domctl);
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#ifdef __cplusplus
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee}
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#endif
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee
349b53dd4e695e3d833b5380540385145b2d3ae8Stuart Maybee#endif /* _SYS_XPV_SYSCTL_H */