VirtualBox

source: vbox/trunk/src/VBox/HostDrivers/Support/solaris/SUPLib-solaris.cpp@ 4823

Last change on this file since 4823 was 4823, checked in by vboxsync, 18 years ago

not &pvReq but pvReq.

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
File size: 3.5 KB
Line 
1/* $Id: SUPLib-solaris.cpp 4823 2007-09-15 11:59:36Z vboxsync $ */
2/** @file
3 *
4 * VBox host drivers - Ring-0 support drivers - Solaris host:
5 * Solaris implementations for support library
6 */
7
8/*
9 * Copyright (C) 2006-2007 innotek GmbH
10 *
11 * This file is part of VirtualBox Open Source Edition (OSE), as
12 * available from http://www.215389.xyz. This file is free software;
13 * you can redistribute it and/or modify it under the terms of the GNU
14 * General Public License as published by the Free Software Foundation,
15 * in version 2 as it comes in the "COPYING" file of the VirtualBox OSE
16 * distribution. VirtualBox OSE is distributed in the hope that it will
17 * be useful, but WITHOUT ANY WARRANTY of any kind.
18 */
19
20
21/*******************************************************************************
22* Header Files *
23*******************************************************************************/
24#define LOG_GROUP LOG_GROUP_SUP
25#include <VBox/types.h>
26#include <VBox/sup.h>
27#include <VBox/param.h>
28#include <VBox/err.h>
29#include <VBox/log.h>
30#include <iprt/path.h>
31#include <iprt/assert.h>
32#include <iprt/mem.h>
33#include <iprt/err.h>
34#include <iprt/string.h>
35#include "SUPLibInternal.h"
36#include "SUPDRVIOC.h"
37
38#include <sys/fcntl.h>
39#include <sys/ioctl.h>
40
41#include <fcntl.h>
42#include <errno.h>
43#include <unistd.h>
44#include <stdlib.h>
45#include <stdio.h>
46
47
48/*******************************************************************************
49* Defined Constants And Macros *
50*******************************************************************************/
51#define DEVICE_NAME "/devices/pseudo/vboxdrv@0:0"
52
53
54/*******************************************************************************
55* Global Variables *
56*******************************************************************************/
57/** Handle to the open device. */
58static int g_hDevice = -1;
59
60
61int suplibOsInit(size_t cbReserve)
62{
63 /*
64 * Check if already initialized.
65 */
66 if (g_hDevice >= 0)
67 return VINF_SUCCESS;
68
69 /*
70 * Try to open the device.
71 */
72 g_hDevice = open(DEVICE_NAME, O_RDWR, 0);
73 if (g_hDevice < 0)
74 {
75 int rc = errno;
76 LogRel(("Failed to open \"%s\", errno=%d\n", rc));
77 return RTErrConvertFromErrno(rc);
78 }
79
80 /*
81 * Avoid unused parameter warning
82 */
83 NOREF(cbReserve);
84
85 return VINF_SUCCESS;
86}
87
88
89int suplibOsTerm(void)
90{
91 /*
92 * Check if we're initialized
93 */
94 if (g_hDevice >= 0)
95 {
96 if (close(g_hDevice))
97 AssertFailed();
98 g_hDevice = -1;
99 }
100
101 return VINF_SUCCESS;
102}
103
104
105int suplibOsInstall(void)
106{
107 return VERR_NOT_IMPLEMENTED;
108}
109
110int suplibOsUninstall(void)
111{
112 return VERR_NOT_IMPLEMENTED;
113}
114
115
116int suplibOsIOCtl(uintptr_t uFunction, void *pvReq, size_t cbReq)
117{
118 AssertMsg(g_hDevice != -1, ("SUPLIB not initiated successfully!\n"));
119 if (RT_LIKELY(ioctl(g_hDevice, uFunction, pvReq) >= 0))
120 return VINF_SUCCESS;
121 return RTErrConvertFromErrno(errno);
122}
123
124
125int suplibOSIOCtlFast(uintptr_t uFunction)
126{
127 int rc = ioctl(g_hDevice, uFunction, NULL);
128 if (rc == -1)
129 rc = errno;
130 return rc;
131}
132
133
134int suplibOsPageAlloc(size_t cPages, void **ppvPages)
135{
136 *ppvPages = RTMemPageAllocZ(cPages << PAGE_SHIFT);
137 if (*ppvPages)
138 return VINF_SUCCESS;
139 return RTErrConvertFromErrno(errno);
140}
141
142
143int suplibOsPageFree(void *pvPages, size_t /* cPages */)
144{
145 RTMemPageFree(pvPages);
146 return VINF_SUCCESS;
147}
148
Note: See TracBrowser for help on using the repository browser.

© 2025 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette