mp-r0drv.h revision fc85d12482b4d79dd2dfd0989b9730433c7a45cb
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/* $Id$ */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/** @file
5b281ba489ca18f0380d7efc7a5108b606cce449vboxsync * IPRT - Multiprocessor, Ring-0 Driver, Internal Header.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/*
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Copyright (C) 2008 Sun Microsystems, Inc.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync *
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * available from http://www.virtualbox.org. This file is free software;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * you can redistribute it and/or modify it under the terms of the GNU
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * General Public License (GPL) as published by the Free Software
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync *
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * The contents of this file may alternatively be used under the terms
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * of the Common Development and Distribution License Version 1.0
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * VirtualBox OSE distribution, in which case the provisions of the
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * CDDL are applicable instead of those of the GPL.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync *
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * You may elect to license modified versions of this file under the
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * terms and conditions of either the GPL or the CDDL or both.
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync *
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
1c94c0a63ba68be1a7b2c640e70d7a06464e4fcavboxsync * additional information or have any questions.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#ifndef ___r0drv_mp_r0drv_h
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#define ___r0drv_mp_r0drv_h
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#include <iprt/mp.h>
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
35103e3fc3e204aa31add87bd33a0361871c0e70vboxsync__BEGIN_DECLS
35103e3fc3e204aa31add87bd33a0361871c0e70vboxsync
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync/**
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync * MP callback
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync *
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync * @param idCpu CPU id
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync * @param pvUser1 The first user argument.
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync * @param pvUser2 The second user argument.
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync */
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsynctypedef DECLCALLBACK(void) FNMPWORKER(RTCPUID idCpu, void *pvUser1, void *pvUser2);
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync/** Pointer to a FNMPWORKER(). */
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsynctypedef FNMPWORKER *PFNMPWORKER;
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/**
0aaf889969ebdaba8a310db13adcec8c10174796vboxsync * RTMpOn* argument packet used by the host specific callback
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * wrapper functions.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsynctypedef struct RTMPARGS
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync{
6c182be3b4c0409b4562cec9998d87084c8ee02avboxsync PFNMPWORKER pfnWorker;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync void *pvUser1;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync void *pvUser2;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync RTCPUID idCpu;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync uint32_t volatile cHits;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync} RTMPARGS;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/** Pointer to a RTMpOn* argument packet. */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsynctypedef RTMPARGS *PRTMPARGS;
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsync/* Called from initterm-r0drv.cpp: */
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsyncint rtR0MpNotificationInit(void);
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsyncvoid rtR0MpNotificationTerm(void);
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsync
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsync/* The following is only relevant when using mpnotifcation-r0drv.cpp: */
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsyncint rtR0MpNotificationNativeInit(void);
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsyncvoid rtR0MpNotificationNativeTerm(void);
0aaf889969ebdaba8a310db13adcec8c10174796vboxsyncvoid rtMpNotificationDoCallbacks(RTMPEVENT enmEvent, RTCPUID idCpu);
0aaf889969ebdaba8a310db13adcec8c10174796vboxsync
35103e3fc3e204aa31add87bd33a0361871c0e70vboxsync__END_DECLS
35103e3fc3e204aa31add87bd33a0361871c0e70vboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#endif
fc85d12482b4d79dd2dfd0989b9730433c7a45cbvboxsync