mp-r0drv.h revision 6c182be3b4c0409b4562cec9998d87084c8ee02a
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/* $Id$ */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/** @file
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * innotek Portable Runtime - Multiprocessor, Ring-0 Driver, Internal Header.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync/*
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * Copyright (C) 2008 innotek GmbH
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.
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync */
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#ifndef ___r0drv_mp_r0drv_h
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#define ___r0drv_mp_r0drv_h
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#include <iprt/mp.h>
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync
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/**
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync * 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
5e91fc5e5ea9cccb7a40636f73253d489fbe340bvboxsync#endif