Exemplo n.º 1
0
__checkReturn
XEN_API
NTSTATUS
HvmGetParam(
    IN  ULONG               Parameter,
    OUT PULONG_PTR          Value
    )
{
    struct xen_hvm_param    op;
    LONG_PTR                rc;
    NTSTATUS                status;

    op.domid = DOMID_SELF;
    op.index = Parameter;
    op.value = 0xFEEDFACE;

    rc = HvmOp(HVMOP_get_param, &op);
    
    if (rc < 0) {
        ERRNO_TO_STATUS(-rc, status);
        goto fail1;
    }

    ASSERT(op.value != 0xFEEDFACE);
    *Value = (ULONG_PTR)op.value;

    return STATUS_SUCCESS;

fail1:
    Error("fail1 (%08x)\n", status);

    return status;
}
Exemplo n.º 2
0
__checkReturn
XEN_API
NTSTATUS
HvmSetParam(
    IN  ULONG               Parameter,
    IN  ULONG_PTR           Value
    )
{
    struct xen_hvm_param    op;
    LONG_PTR                rc;
    NTSTATUS                status;

    op.domid = DOMID_SELF;
    op.index = Parameter;
    op.value = Value;

    rc = HvmOp(HVMOP_set_param, &op);
    
    if (rc < 0) {
        ERRNO_TO_STATUS(-rc, status);
        goto fail1;
    }

    return STATUS_SUCCESS;

fail1:
    Error("fail1 (%08x)\n", status);

    return status;
}
Exemplo n.º 3
0
__checkReturn
XEN_API
NTSTATUS
HvmGetTime(
    OUT PLARGE_INTEGER      Now
    )
{
    struct xen_hvm_get_time op;
    LONG_PTR                rc;
    NTSTATUS                status;

    rc = HvmOp(HVMOP_get_time, &op);
    
    if (rc < 0) {
        ERRNO_TO_STATUS(-rc, status);
        goto fail1;
    }

    Now->QuadPart = op.now;

    return STATUS_SUCCESS;

fail1:
    Error("fail1 (%08x)\n", status);

    return status;
}
Exemplo n.º 4
0
__checkReturn
XEN_API
NTSTATUS
HvmPagetableDying(
    IN  PHYSICAL_ADDRESS            Address
    )
{
    struct xen_hvm_pagetable_dying  op;
    LONG_PTR                        rc;
    NTSTATUS                        status;

    op.domid = DOMID_SELF;
    op.gpa = Address.QuadPart;

    rc = HvmOp(HVMOP_pagetable_dying, &op);
    
    if (rc < 0) {
        ERRNO_TO_STATUS(-rc, status);
        goto fail1;
    }

    return STATUS_SUCCESS;

fail1:
    return status;
}
Exemplo n.º 5
0
NTSTATUS
HvmGetParameter(
    IN  ULONG               Param,
    OUT PULONGLONG          Value
    )
{
    struct xen_hvm_param    op;
    LONG_PTR                rc;
    NTSTATUS                status;

    op.domid = DOMID_SELF;
    op.index = Param;
    op.value = 0xf001dead;

    rc = HvmOp(HVMOP_get_param, &op);
    if (rc < 0)
        goto fail1;

    /* Horrible hack to cope with the transition from
       return parameters through the hypercall return
       value to returning them through an in-memory
       structure. */
    if (op.value != 0xf001dead)
        *Value = (ULONG_PTR)op.value;
    else
        *Value = (ULONG_PTR)rc;

    return STATUS_SUCCESS;

fail1:
    ERRNO_TO_STATUS(-rc, status);
    LogError("fail1 (%08x)\n", status);

    return status;
}