.. | .. |
---|
118 | 118 | u32 event_filter_host; |
---|
119 | 119 | |
---|
120 | 120 | /** |
---|
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 |
---|
122 | 132 | * number, one count per session using a capability. |
---|
123 | 133 | * Protected by session_mutex. |
---|
124 | 134 | */ |
---|
125 | | - struct vbg_bit_usage_tracker guest_caps_tracker; |
---|
| 135 | + struct vbg_bit_usage_tracker set_guest_caps_tracker; |
---|
126 | 136 | /** |
---|
127 | 137 | * The guest capabilities last reported to the host (or UINT32_MAX). |
---|
128 | 138 | * Protected by session_mutex. |
---|
.. | .. |
---|
164 | 174 | */ |
---|
165 | 175 | u32 event_filter; |
---|
166 | 176 | /** |
---|
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(). |
---|
168 | 183 | * A capability claimed by any guest session will be reported to the |
---|
169 | 184 | * host. Protected by vbg_gdev.session_mutex. |
---|
170 | 185 | */ |
---|
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; |
---|
174 | 189 | /** Set on CANCEL_ALL_WAITEVENTS, protected by vbg_devevent_spinlock. */ |
---|
175 | 190 | bool cancel_waiters; |
---|
176 | 191 | }; |
---|
177 | 192 | |
---|
178 | 193 | int vbg_core_init(struct vbg_dev *gdev, u32 fixed_events); |
---|
179 | 194 | 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); |
---|
181 | 196 | void vbg_core_close_session(struct vbg_session *session); |
---|
182 | 197 | int vbg_core_ioctl(struct vbg_session *session, unsigned int req, void *data); |
---|
183 | 198 | int vbg_core_set_mouse_status(struct vbg_dev *gdev, u32 features); |
---|
.. | .. |
---|
187 | 202 | void vbg_linux_mouse_event(struct vbg_dev *gdev); |
---|
188 | 203 | |
---|
189 | 204 | /* 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); |
---|
191 | 207 | void vbg_req_free(void *req, size_t len); |
---|
192 | 208 | int vbg_req_perform(struct vbg_dev *gdev, void *req); |
---|
193 | 209 | 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); |
---|
197 | 213 | |
---|
198 | 214 | #endif |
---|