hc
2023-12-11 d2ccde1c8e90d38cee87a1b0309ad2827f3fd30d
kernel/drivers/virt/vboxguest/vboxguest_core.h
....@@ -118,11 +118,21 @@
118118 u32 event_filter_host;
119119
120120 /**
121
- * Usage counters for guest capabilities. Indexed by capability bit
121
+ * Guest capabilities which have been switched to acquire_mode.
122
+ */
123
+ u32 acquire_mode_guest_caps;
124
+ /**
125
+ * Guest capabilities acquired by vbg_acquire_session_capabilities().
126
+ * Only one session can acquire a capability at a time.
127
+ */
128
+ u32 acquired_guest_caps;
129
+ /**
130
+ * Usage counters for guest capabilities requested through
131
+ * vbg_set_session_capabilities(). Indexed by capability bit
122132 * number, one count per session using a capability.
123133 * Protected by session_mutex.
124134 */
125
- struct vbg_bit_usage_tracker guest_caps_tracker;
135
+ struct vbg_bit_usage_tracker set_guest_caps_tracker;
126136 /**
127137 * The guest capabilities last reported to the host (or UINT32_MAX).
128138 * Protected by session_mutex.
....@@ -164,20 +174,25 @@
164174 */
165175 u32 event_filter;
166176 /**
167
- * Guest capabilities for this session.
177
+ * Guest capabilities acquired by vbg_acquire_session_capabilities().
178
+ * Only one session can acquire a capability at a time.
179
+ */
180
+ u32 acquired_guest_caps;
181
+ /**
182
+ * Guest capabilities set through vbg_set_session_capabilities().
168183 * A capability claimed by any guest session will be reported to the
169184 * host. Protected by vbg_gdev.session_mutex.
170185 */
171
- u32 guest_caps;
172
- /** Does this session belong to a root process or a user one? */
173
- bool user_session;
186
+ u32 set_guest_caps;
187
+ /** VMMDEV_REQUESTOR_* flags */
188
+ u32 requestor;
174189 /** Set on CANCEL_ALL_WAITEVENTS, protected by vbg_devevent_spinlock. */
175190 bool cancel_waiters;
176191 };
177192
178193 int vbg_core_init(struct vbg_dev *gdev, u32 fixed_events);
179194 void vbg_core_exit(struct vbg_dev *gdev);
180
-struct vbg_session *vbg_core_open_session(struct vbg_dev *gdev, bool user);
195
+struct vbg_session *vbg_core_open_session(struct vbg_dev *gdev, u32 requestor);
181196 void vbg_core_close_session(struct vbg_session *session);
182197 int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data);
183198 int vbg_core_set_mouse_status(struct vbg_dev *gdev, u32 features);
....@@ -187,12 +202,13 @@
187202 void vbg_linux_mouse_event(struct vbg_dev *gdev);
188203
189204 /* Private (non exported) functions form vboxguest_utils.c */
190
-void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type);
205
+void *vbg_req_alloc(size_t len, enum vmmdev_request_type req_type,
206
+ u32 requestor);
191207 void vbg_req_free(void *req, size_t len);
192208 int vbg_req_perform(struct vbg_dev *gdev, void *req);
193209 int vbg_hgcm_call32(
194
- struct vbg_dev *gdev, u32 client_id, u32 function, u32 timeout_ms,
195
- struct vmmdev_hgcm_function_parameter32 *parm32, u32 parm_count,
196
- int *vbox_status);
210
+ struct vbg_dev *gdev, u32 requestor, u32 client_id, u32 function,
211
+ u32 timeout_ms, struct vmmdev_hgcm_function_parameter32 *parm32,
212
+ u32 parm_count, int *vbox_status);
197213
198214 #endif