Lines Matching refs:con

64 static bool buffer_append(XenConsole *con)  in OBJECT_DECLARE_SIMPLE_TYPE()
66 struct buffer *buffer = &con->buffer; in OBJECT_DECLARE_SIMPLE_TYPE()
68 struct xencons_interface *intf = con->sring; in OBJECT_DECLARE_SIMPLE_TYPE()
89 xen_device_notify_event_channel(XEN_DEVICE(con), con->event_channel, NULL); in OBJECT_DECLARE_SIMPLE_TYPE()
117 static int ring_free_bytes(XenConsole *con) in ring_free_bytes() argument
119 struct xencons_interface *intf = con->sring; in ring_free_bytes()
135 XenConsole *con = opaque; in xencons_can_receive() local
136 return ring_free_bytes(con); in xencons_can_receive()
141 XenConsole *con = opaque; in xencons_receive() local
142 struct xencons_interface *intf = con->sring; in xencons_receive()
146 max = ring_free_bytes(con); in xencons_receive()
158 xen_device_notify_event_channel(XEN_DEVICE(con), con->event_channel, NULL); in xencons_receive()
161 static bool xencons_send(XenConsole *con) in xencons_send() argument
165 size = con->buffer.size - con->buffer.consumed; in xencons_send()
166 if (qemu_chr_fe_backend_connected(&con->chr)) { in xencons_send()
167 len = qemu_chr_fe_write(&con->chr, in xencons_send()
168 con->buffer.data + con->buffer.consumed, in xencons_send()
174 if (!con->backlog) { in xencons_send()
175 con->backlog = 1; in xencons_send()
178 buffer_advance(&con->buffer, len); in xencons_send()
179 if (con->backlog && len == size) { in xencons_send()
180 con->backlog = 0; in xencons_send()
190 XenConsole *con = XEN_CONSOLE_DEVICE(_xendev); in con_event() local
193 if (xen_device_backend_get_state(&con->xendev) != XenbusStateConnected) { in con_event()
197 done_something = buffer_append(con); in con_event()
199 if (con->buffer.size - con->buffer.consumed) { in con_event()
200 done_something |= xencons_send(con); in con_event()
210 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_connect() local
214 &con->ring_ref) != 1) { in xen_console_connect()
225 con->buffer.max_capacity = limit; in xen_console_connect()
228 con->event_channel = xen_device_bind_event_channel(xendev, port, in xen_console_connect()
230 con, in xen_console_connect()
232 if (!con->event_channel) { in xen_console_connect()
236 switch (con->dev) { in xen_console_connect()
243 xen_pfn_t mfn = (xen_pfn_t)con->ring_ref; in xen_console_connect()
244 con->sring = qemu_xen_foreignmem_map(xendev->frontend_id, NULL, in xen_console_connect()
247 if (!con->sring) { in xen_console_connect()
264 xen_event_channel_get_local_port(con->event_channel)); in xen_console_connect()
265 con->ring_ref = GNTTAB_RESERVED_CONSOLE; in xen_console_connect()
268 con->sring = xen_device_map_grant_refs(xendev, in xen_console_connect()
269 &con->ring_ref, 1, in xen_console_connect()
272 if (!con->sring) { in xen_console_connect()
279 trace_xen_console_connect(con->dev, con->ring_ref, port, in xen_console_connect()
280 con->buffer.max_capacity); in xen_console_connect()
282 qemu_chr_fe_set_handlers(&con->chr, xencons_can_receive, in xen_console_connect()
283 xencons_receive, NULL, NULL, con, NULL, in xen_console_connect()
290 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_disconnect() local
292 trace_xen_console_disconnect(con->dev); in xen_console_disconnect()
294 qemu_chr_fe_set_handlers(&con->chr, NULL, NULL, NULL, NULL, in xen_console_disconnect()
295 con, NULL, true); in xen_console_disconnect()
297 if (con->event_channel) { in xen_console_disconnect()
298 xen_device_unbind_event_channel(xendev, con->event_channel, in xen_console_disconnect()
300 con->event_channel = NULL; in xen_console_disconnect()
302 if (xen_mode == XEN_EMULATE && !con->dev) { in xen_console_disconnect()
307 if (con->sring) { in xen_console_disconnect()
308 if (!con->dev && xen_mode != XEN_EMULATE) { in xen_console_disconnect()
309 qemu_xen_foreignmem_unmap(con->sring, 1); in xen_console_disconnect()
311 xen_device_unmap_grant_refs(xendev, con->sring, in xen_console_disconnect()
312 &con->ring_ref, 1, errp); in xen_console_disconnect()
314 con->sring = NULL; in xen_console_disconnect()
366 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_get_name() local
368 if (con->dev == -1) { in xen_console_get_name()
387 con->dev = idx; in xen_console_get_name()
401 return g_strdup_printf("%u", con->dev); in xen_console_get_name()
406 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_unrealize() local
408 trace_xen_console_unrealize(con->dev); in xen_console_unrealize()
413 qemu_chr_fe_deinit(&con->chr, false); in xen_console_unrealize()
419 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_realize() local
420 Chardev *cs = qemu_chr_fe_get_driver(&con->chr); in xen_console_realize()
428 if (con->dev == -1) { in xen_console_realize()
441 if (!con->dev) { in xen_console_realize()
452 trace_xen_console_realize(con->dev, object_get_typename(OBJECT(cs))); in xen_console_realize()
460 if (!con->dev && xen_mode != XEN_EMULATE) { in xen_console_realize()
478 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_get_frontend_path() local
481 con->dev); in xen_console_get_frontend_path()
537 XenConsole *con; in type_init() local
566 con = XEN_CONSOLE_DEVICE(xendev); in type_init()
568 con->dev = number; in type_init()
599 if (!qemu_chr_fe_init(&con->chr, cd, errp)) { in type_init()
627 XenConsole *con = XEN_CONSOLE_DEVICE(xendev); in xen_console_device_destroy() local
629 trace_xen_console_device_destroy(con->dev); in xen_console_device_destroy()