1 | /* SPDX-License-Identifier: (GPL-2.0 OR CDDL-1.0) */ |
2 | /* Copyright (C) 2006-2016 Oracle Corporation */ |
3 | |
4 | #ifndef __VBOX_UTILS_H__ |
5 | #define __VBOX_UTILS_H__ |
6 | |
7 | #include <linux/printk.h> |
8 | #include <linux/vbox_vmmdev_types.h> |
9 | |
10 | struct vbg_dev; |
11 | |
12 | /** |
13 | * vboxguest logging functions, these log both to the backdoor and call |
14 | * the equivalent kernel pr_foo function. |
15 | */ |
16 | __printf(1, 2) void vbg_info(const char *fmt, ...); |
17 | __printf(1, 2) void vbg_warn(const char *fmt, ...); |
18 | __printf(1, 2) void vbg_err(const char *fmt, ...); |
19 | __printf(1, 2) void vbg_err_ratelimited(const char *fmt, ...); |
20 | |
21 | /* Only use backdoor logging for non-dynamic debug builds */ |
22 | #if defined(DEBUG) && !defined(CONFIG_DYNAMIC_DEBUG) |
23 | __printf(1, 2) void vbg_debug(const char *fmt, ...); |
24 | #else |
25 | #define vbg_debug pr_debug |
26 | #endif |
27 | |
28 | int vbg_hgcm_connect(struct vbg_dev *gdev, u32 requestor, |
29 | struct vmmdev_hgcm_service_location *loc, |
30 | u32 *client_id, int *vbox_status); |
31 | |
32 | int vbg_hgcm_disconnect(struct vbg_dev *gdev, u32 requestor, |
33 | u32 client_id, int *vbox_status); |
34 | |
35 | int vbg_hgcm_call(struct vbg_dev *gdev, u32 requestor, u32 client_id, |
36 | u32 function, u32 timeout_ms, |
37 | struct vmmdev_hgcm_function_parameter *parms, u32 parm_count, |
38 | int *vbox_status); |
39 | |
40 | /** |
41 | * Convert a VirtualBox status code to a standard Linux kernel return value. |
42 | * Return: 0 or negative errno value. |
43 | * @rc: VirtualBox status code to convert. |
44 | */ |
45 | int vbg_status_code_to_errno(int rc); |
46 | |
47 | /** |
48 | * Helper for the vboxsf driver to get a reference to the guest device. |
49 | * Return: a pointer to the gdev; or a ERR_PTR value on error. |
50 | */ |
51 | struct vbg_dev *vbg_get_gdev(void); |
52 | |
53 | /** |
54 | * Helper for the vboxsf driver to put a guest device reference. |
55 | * @gdev: Reference returned by vbg_get_gdev to put. |
56 | */ |
57 | void vbg_put_gdev(struct vbg_dev *gdev); |
58 | |
59 | #endif |
60 | |