initterm.h revision 0120c35c41a827e23a6e04fbd59299a187e0b22c
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/** @file
5b281ba489ca18f0380d7efc7a5108b606cce449vboxsync * IPRT - Runtime Init/Term.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/*
c58f1213e628a545081c70e26c6b67a841cff880vboxsync * Copyright (C) 2006-2007 Sun Microsystems, Inc.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * This file is part of VirtualBox Open Source Edition (OSE), as
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * available from http://www.virtualbox.org. This file is free software;
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * you can redistribute it and/or modify it under the terms of the GNU
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * General Public License (GPL) as published by the Free Software
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * Foundation, in version 2 as it comes in the "COPYING" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution. VirtualBox OSE is distributed in the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * hope that it will be useful, but WITHOUT ANY WARRANTY of any kind.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync *
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * The contents of this file may alternatively be used under the terms
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * of the Common Development and Distribution License Version 1.0
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * (CDDL) only, as it comes in the "COPYING.CDDL" file of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * VirtualBox OSE distribution, in which case the provisions of the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * CDDL are applicable instead of those of the GPL.
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync *
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * You may elect to license modified versions of this file under the
a16eb14ad7a4b5ef91ddc22d3e8e92d930f736fcvboxsync * terms and conditions of either the GPL or the CDDL or both.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
154e1d5579ca6c8bee571a8d1ced5d76a0234030vboxsync * Clara, CA 95054 USA or visit http://www.sun.com if you need
154e1d5579ca6c8bee571a8d1ced5d76a0234030vboxsync * additional information or have any questions.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#ifndef ___iprt_initterm_h
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#define ___iprt_initterm_h
590bfe12ce22cd3716448fbb9f4dc51664bfe5e2vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#include <iprt/cdefs.h>
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#include <iprt/types.h>
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync__BEGIN_DECLS
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/** @defgroup grp_rt IPRT APIs
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @{
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/** @defgroup grp_rt_initterm Init / Term
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @{
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#ifdef IN_RING3
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/**
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Initializes the runtime library.
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @returns iprt status code.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(int) RTR3Init(void);
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/**
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Initializes the runtime library and try initialize SUPLib too.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * @returns IPRT status code.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @param pszProgramPath The path to the program file.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync * @remarks Failure to initialize SUPLib is ignored.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(int) RTR3InitAndSUPLib(void);
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync/**
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Initializes the runtime library passing it the program path.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @returns IPRT status code.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @param pszProgramPath The path to the program file.
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(int) RTR3InitWithProgramPath(const char *pszProgramPath);
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/**
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * Initializes the runtime library passing it the program path,
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * and try initialize SUPLib too (failures ignored).
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync * @returns IPRT status code.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @param pszProgramPath The path to the program file.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * @remarks Failure to initialize SUPLib is ignored.
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(int) RTR3InitAndSUPLibWithProgramPath(const char *pszProgramPath);
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync/**
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Initializes the runtime library and possibly also SUPLib too.
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * Avoid this interface, it's not considered stable.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @returns IPRT status code.
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * @param iVersion The interface version. Must be 0 atm.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @param pszProgramPath The program path. Pass NULL if we're to figure it out ourselves.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @param fInitSUPLib Whether to initialize the support library or not.
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(int) RTR3InitEx(uint32_t iVersion, const char *pszProgramPath, bool fInitSUPLib);
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/**
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * Terminates the runtime library.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsyncRTR3DECL(void) RTR3Term(void);
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#endif /* IN_RING3 */
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync#ifdef IN_RING0
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync/**
cb13ee8e628d04a773894bf4f9e8047d74f2ee21vboxsync * Initalizes the ring-0 driver runtime library.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync *
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync * @returns iprt status code.
40af749e457b7d704c869ea986a042f0d4b6e09avboxsync * @param fReserved Flags reserved for the future.
07db1daf0ffed7a0fe1224c296fc1e7ac40d7681vboxsync */
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsyncRTR0DECL(int) RTR0Init(unsigned fReserved);
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync/**
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync * Terminates the ring-0 driver runtime library.
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync */
88acfa6629a7976c0583c1712d2b5b22a87a5121vboxsyncRTR0DECL(void) RTR0Term(void);
88acfa6629a7976c0583c1712d2b5b22a87a5121vboxsync#endif
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync#ifdef IN_GC
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync/**
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync * Initializes the raw-mode context runtime library.
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync *
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync * @returns iprt status code.
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync *
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync * @param u64ProgramStartNanoTS The startup timestamp.
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync */
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsyncRTGCDECL(int) RTRCInit(uint64_t u64ProgramStartNanoTS);
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync/**
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync * Terminates the raw-mode context runtime library.
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync */
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsyncRTGCDECL(void) RTRCTerm(void);
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync#endif
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync
6fea4abcc6ee0f2797ac01ef79c374d506aedc02vboxsync/** @} */
062b8a43e237d9e2edde03b5837d44506e35eb47vboxsync
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync/** @} */
062b8a43e237d9e2edde03b5837d44506e35eb47vboxsync
062b8a43e237d9e2edde03b5837d44506e35eb47vboxsync__END_DECLS
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync#endif
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync
6cb96ab7d4ba4dab39ef47e8d7c3dcfbf7582959vboxsync