MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / new

Method new

virtio-devices/src/console.rs:135–185  ·  view source on GitHub ↗
(
        mem: GuestMemoryAtomic<GuestMemoryMmap>,
        input_queue: Queue,
        output_queue: Queue,
        interrupt_cb: Arc<dyn VirtioInterrupt>,
        in_buffer: Arc<Mutex<VecDeque<u8>>>,

Source from the content-addressed store, hash-verified

133impl ConsoleEpollHandler {
134 #[allow(clippy::too_many_arguments)]
135 fn new(
136 mem: GuestMemoryAtomic<GuestMemoryMmap>,
137 input_queue: Queue,
138 output_queue: Queue,
139 interrupt_cb: Arc<dyn VirtioInterrupt>,
140 in_buffer: Arc<Mutex<VecDeque<u8>>>,
141 resizer: Arc<ConsoleResizer>,
142 endpoint: Endpoint,
143 input_queue_evt: EventFd,
144 output_queue_evt: EventFd,
145 config_evt: EventFd,
146 resize_pipe: Option<File>,
147 kill_evt: EventFd,
148 pause_evt: EventFd,
149 access_platform: Option<Arc<dyn AccessPlatform>>,
150 ) -> Self {
151 let out_file = endpoint.out_file();
152 let (out, write_out) = if let Some(out_file) = out_file {
153 let writer = out_file.try_clone().unwrap();
154 if endpoint.is_pty() {
155 let pty_write_out = Arc::new(AtomicBool::new(false));
156 let write_out = Some(pty_write_out.clone());
157 let buffer = SerialBuffer::new(Box::new(writer), pty_write_out);
158 (Some(Box::new(buffer) as Box<dyn Write + Send>), write_out)
159 } else {
160 (Some(Box::new(writer) as Box<dyn Write + Send>), None)
161 }
162 } else {
163 (None, None)
164 };
165
166 ConsoleEpollHandler {
167 mem,
168 input_queue,
169 output_queue,
170 interrupt_cb,
171 in_buffer,
172 resizer,
173 endpoint,
174 input_queue_evt,
175 output_queue_evt,
176 config_evt,
177 resize_pipe,
178 kill_evt,
179 pause_evt,
180 access_platform,
181 out,
182 write_out,
183 file_event_registered: false,
184 }
185 }
186
187 /*
188 * Each port of virtio console device has one receive

Callers

nothing calls this directly

Calls 7

newFunction · 0.85
out_fileMethod · 0.80
is_ptyMethod · 0.80
try_cloneMethod · 0.45
cloneMethod · 0.45
mapMethod · 0.45
update_console_sizeMethod · 0.45

Tested by

no test coverage detected