1pub use zx_types::*;
10
11#[cfg(target_os = "fuchsia")]
13#[link(name = "zircon")]
14extern "C" {
15
16 pub fn zx_bti_create(
17 iommu: zx_handle_t,
18 options: u32,
19 bti_id: u64,
20 out: *mut zx_handle_t,
21 ) -> zx_status_t;
22
23 pub fn zx_bti_pin(
24 handle: zx_handle_t,
25 options: u32,
26 vmo: zx_handle_t,
27 offset: u64,
28 size: u64,
29 addrs: *mut zx_paddr_t,
30 num_addrs: usize,
31 pmt: *mut zx_handle_t,
32 ) -> zx_status_t;
33
34 pub fn zx_bti_release_quarantine(handle: zx_handle_t) -> zx_status_t;
35
36 pub fn zx_cache_flush(addr: *const u8, size: usize, options: u32) -> zx_status_t;
37
38 pub fn zx_channel_call(
39 handle: zx_handle_t,
40 options: u32,
41 deadline: zx_instant_mono_t,
42 args: *const zx_channel_call_args_t,
43 actual_bytes: *mut u32,
44 actual_handles: *mut u32,
45 ) -> zx_status_t;
46
47 pub fn zx_channel_call_etc(
48 handle: zx_handle_t,
49 options: u32,
50 deadline: zx_instant_mono_t,
51 args: *mut zx_channel_call_etc_args_t,
52 actual_bytes: *mut u32,
53 actual_handles: *mut u32,
54 ) -> zx_status_t;
55
56 pub fn zx_channel_create(
57 options: u32,
58 out0: *mut zx_handle_t,
59 out1: *mut zx_handle_t,
60 ) -> zx_status_t;
61
62 pub fn zx_channel_read(
63 handle: zx_handle_t,
64 options: u32,
65 bytes: *mut u8,
66 handles: *mut zx_handle_t,
67 num_bytes: u32,
68 num_handles: u32,
69 actual_bytes: *mut u32,
70 actual_handles: *mut u32,
71 ) -> zx_status_t;
72
73 pub fn zx_channel_read_etc(
74 handle: zx_handle_t,
75 options: u32,
76 bytes: *mut u8,
77 handles: *mut zx_handle_info_t,
78 num_bytes: u32,
79 num_handles: u32,
80 actual_bytes: *mut u32,
81 actual_handles: *mut u32,
82 ) -> zx_status_t;
83
84 pub fn zx_channel_write(
85 handle: zx_handle_t,
86 options: u32,
87 bytes: *const u8,
88 num_bytes: u32,
89 handles: *const zx_handle_t,
90 num_handles: u32,
91 ) -> zx_status_t;
92
93 pub fn zx_channel_write_etc(
94 handle: zx_handle_t,
95 options: u32,
96 bytes: *const u8,
97 num_bytes: u32,
98 handles: *mut zx_handle_disposition_t,
99 num_handles: u32,
100 ) -> zx_status_t;
101
102 pub fn zx_clock_create(options: u64, args: *const u8, out: *mut zx_handle_t) -> zx_status_t;
103
104 pub fn zx_clock_get_boot() -> zx_instant_boot_t;
105
106 pub fn zx_clock_get_details(handle: zx_handle_t, options: u64, details: *mut u8)
107 -> zx_status_t;
108
109 pub fn zx_clock_get_details_mapped(
110 clock_addr: *const u8,
111 options: u64,
112 details: *mut u8,
113 ) -> zx_status_t;
114
115 pub fn zx_clock_get_monotonic() -> zx_instant_mono_t;
116
117 pub fn zx_clock_read(handle: zx_handle_t, now: *mut zx_time_t) -> zx_status_t;
118
119 pub fn zx_clock_read_mapped(clock_addr: *const u8, now: *mut zx_time_t) -> zx_status_t;
120
121 pub fn zx_clock_update(handle: zx_handle_t, options: u64, args: *const u8) -> zx_status_t;
122
123 pub fn zx_counter_add(handle: zx_handle_t, value: i64) -> zx_status_t;
124
125 pub fn zx_counter_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
126
127 pub fn zx_counter_read(handle: zx_handle_t, value: *mut i64) -> zx_status_t;
128
129 pub fn zx_counter_write(handle: zx_handle_t, value: i64) -> zx_status_t;
130
131 pub fn zx_cprng_add_entropy(buffer: *const u8, buffer_size: usize) -> zx_status_t;
132
133 pub fn zx_cprng_draw(buffer: *mut u8, buffer_size: usize);
134
135 pub fn zx_deadline_after(nanoseconds: zx_duration_mono_t) -> zx_instant_mono_t;
136
137 pub fn zx_debug_read(
138 handle: zx_handle_t,
139 buffer: *mut u8,
140 buffer_size: usize,
141 actual: *mut usize,
142 ) -> zx_status_t;
143
144 pub fn zx_debug_send_command(
145 resource: zx_handle_t,
146 buffer: *const u8,
147 buffer_size: usize,
148 ) -> zx_status_t;
149
150 pub fn zx_debug_write(buffer: *const u8, buffer_size: usize) -> zx_status_t;
151
152 pub fn zx_debuglog_create(
153 resource: zx_handle_t,
154 options: u32,
155 out: *mut zx_handle_t,
156 ) -> zx_status_t;
157
158 pub fn zx_debuglog_read(
159 handle: zx_handle_t,
160 options: u32,
161 buffer: *mut u8,
162 buffer_size: usize,
163 ) -> zx_status_t;
164
165 pub fn zx_debuglog_write(
166 handle: zx_handle_t,
167 options: u32,
168 buffer: *const u8,
169 buffer_size: usize,
170 ) -> zx_status_t;
171
172 pub fn zx_event_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
173
174 pub fn zx_eventpair_create(
175 options: u32,
176 out0: *mut zx_handle_t,
177 out1: *mut zx_handle_t,
178 ) -> zx_status_t;
179
180 pub fn zx_exception_get_process(handle: zx_handle_t, out: *mut zx_handle_t) -> zx_status_t;
181
182 pub fn zx_exception_get_thread(handle: zx_handle_t, out: *mut zx_handle_t) -> zx_status_t;
183
184 pub fn zx_fifo_create(
185 elem_count: usize,
186 elem_size: usize,
187 options: u32,
188 out0: *mut zx_handle_t,
189 out1: *mut zx_handle_t,
190 ) -> zx_status_t;
191
192 pub fn zx_fifo_read(
193 handle: zx_handle_t,
194 elem_size: usize,
195 data: *mut u8,
196 data_size: usize,
197 actual_count: *mut usize,
198 ) -> zx_status_t;
199
200 pub fn zx_fifo_write(
201 handle: zx_handle_t,
202 elem_size: usize,
203 data: *const u8,
204 count: usize,
205 actual_count: *mut usize,
206 ) -> zx_status_t;
207
208 pub fn zx_futex_get_owner(value_ptr: *const zx_futex_t, koid: *mut zx_koid_t) -> zx_status_t;
209
210 pub fn zx_futex_requeue(
211 value_ptr: *const zx_futex_t,
212 wake_count: u32,
213 current_value: i32,
214 requeue_ptr: *const zx_futex_t,
215 requeue_count: u32,
216 new_requeue_owner: zx_handle_t,
217 ) -> zx_status_t;
218
219 pub fn zx_futex_requeue_single_owner(
220 value_ptr: *const zx_futex_t,
221 current_value: i32,
222 requeue_ptr: *const zx_futex_t,
223 requeue_count: u32,
224 new_requeue_owner: zx_handle_t,
225 ) -> zx_status_t;
226
227 pub fn zx_futex_wait(
228 value_ptr: *const zx_futex_t,
229 current_value: i32,
230 new_futex_owner: zx_handle_t,
231 deadline: zx_instant_mono_t,
232 ) -> zx_status_t;
233
234 pub fn zx_futex_wake(value_ptr: *const zx_futex_t, wake_count: u32) -> zx_status_t;
235
236 pub fn zx_futex_wake_handle_close_thread_exit(
237 value_ptr: *const zx_futex_t,
238 wake_count: u32,
239 new_value: i32,
240 close_handle: zx_handle_t,
241 );
242
243 pub fn zx_futex_wake_single_owner(value_ptr: *const zx_futex_t) -> zx_status_t;
244
245 pub fn zx_guest_create(
246 resource: zx_handle_t,
247 options: u32,
248 guest_handle: *mut zx_handle_t,
249 vmar_handle: *mut zx_handle_t,
250 ) -> zx_status_t;
251
252 pub fn zx_guest_set_trap(
253 handle: zx_handle_t,
254 kind: u32,
255 addr: zx_vaddr_t,
256 size: usize,
257 port_handle: zx_handle_t,
258 key: u64,
259 ) -> zx_status_t;
260
261 pub fn zx_handle_check_valid(handle: zx_handle_t) -> zx_status_t;
262
263 pub fn zx_handle_close(handle: zx_handle_t) -> zx_status_t;
264
265 pub fn zx_handle_close_many(handles: *const zx_handle_t, num_handles: usize) -> zx_status_t;
266
267 pub fn zx_handle_duplicate(
268 handle: zx_handle_t,
269 rights: zx_rights_t,
270 out: *mut zx_handle_t,
271 ) -> zx_status_t;
272
273 pub fn zx_handle_replace(
274 handle: zx_handle_t,
275 rights: zx_rights_t,
276 out: *mut zx_handle_t,
277 ) -> zx_status_t;
278
279 pub fn zx_interrupt_ack(handle: zx_handle_t) -> zx_status_t;
280
281 pub fn zx_interrupt_bind(
282 handle: zx_handle_t,
283 port_handle: zx_handle_t,
284 key: u64,
285 options: u32,
286 ) -> zx_status_t;
287
288 pub fn zx_interrupt_create(
289 src_obj: zx_handle_t,
290 src_num: u32,
291 options: u32,
292 out_handle: *mut zx_handle_t,
293 ) -> zx_status_t;
294
295 pub fn zx_interrupt_destroy(handle: zx_handle_t) -> zx_status_t;
296
297 pub fn zx_interrupt_trigger(
298 handle: zx_handle_t,
299 options: u32,
300 timestamp: zx_time_t,
301 ) -> zx_status_t;
302
303 pub fn zx_interrupt_wait(handle: zx_handle_t, out_timestamp: *mut zx_time_t) -> zx_status_t;
304
305 pub fn zx_iob_allocate_id(
306 handle: zx_handle_t,
307 options: zx_iob_allocate_id_options_t,
308 region_index: u32,
309 blob: *const u8,
310 blob_size: usize,
311 id: *mut u32,
312 ) -> zx_status_t;
313
314 pub fn zx_iob_create(
315 options: u64,
316 regions: *const u8,
317 num_regions: usize,
318 ep0_out: *mut zx_handle_t,
319 ep1_out: *mut zx_handle_t,
320 ) -> zx_status_t;
321
322 pub fn zx_iob_create_shared_region(
323 options: u64,
324 size: u64,
325 out: *mut zx_handle_t,
326 ) -> zx_status_t;
327
328 pub fn zx_iob_writev(
329 handle: zx_handle_t,
330 options: zx_iob_write_options_t,
331 region_index: u32,
332 vectors: *const zx_iovec_t,
333 num_vectors: usize,
334 ) -> zx_status_t;
335
336 pub fn zx_iommu_create(
337 resource: zx_handle_t,
338 r#type: u32,
339 desc: *const u8,
340 desc_size: usize,
341 out: *mut zx_handle_t,
342 ) -> zx_status_t;
343
344 pub fn zx_ioports_release(resource: zx_handle_t, io_addr: u16, len: u32) -> zx_status_t;
345
346 pub fn zx_ioports_request(resource: zx_handle_t, io_addr: u16, len: u32) -> zx_status_t;
347
348 pub fn zx_job_create(
349 parent_job: zx_handle_t,
350 options: u32,
351 out: *mut zx_handle_t,
352 ) -> zx_status_t;
353
354 pub fn zx_job_set_critical(job: zx_handle_t, options: u32, process: zx_handle_t)
355 -> zx_status_t;
356
357 pub fn zx_job_set_policy(
358 handle: zx_handle_t,
359 options: u32,
360 topic: u32,
361 policy: *const u8,
362 policy_size: u32,
363 ) -> zx_status_t;
364
365 pub fn zx_ktrace_control(
366 handle: zx_handle_t,
367 action: u32,
368 options: u32,
369 ptr: *mut u8,
370 ) -> zx_status_t;
371
372 pub fn zx_ktrace_read(
373 handle: zx_handle_t,
374 data: *mut u8,
375 offset: u32,
376 data_size: usize,
377 actual: *mut usize,
378 ) -> zx_status_t;
379
380 pub fn zx_msi_allocate(
381 handle: zx_handle_t,
382 count: u32,
383 out_allocation: *mut zx_handle_t,
384 ) -> zx_status_t;
385
386 pub fn zx_msi_create(
387 handle: zx_handle_t,
388 options: u32,
389 msi_id: u32,
390 vmo: zx_handle_t,
391 vmo_offset: usize,
392 out_interrupt: *mut zx_handle_t,
393 ) -> zx_status_t;
394
395 pub fn zx_mtrace_control(
396 handle: zx_handle_t,
397 kind: u32,
398 action: u32,
399 options: u32,
400 ptr: *mut u8,
401 ptr_size: usize,
402 ) -> zx_status_t;
403
404 pub fn zx_nanosleep(deadline: zx_instant_mono_t) -> zx_status_t;
405
406 pub fn zx_object_get_child(
407 handle: zx_handle_t,
408 koid: u64,
409 rights: zx_rights_t,
410 out: *mut zx_handle_t,
411 ) -> zx_status_t;
412
413 pub fn zx_object_get_info(
414 handle: zx_handle_t,
415 topic: u32,
416 buffer: *mut u8,
417 buffer_size: usize,
418 actual: *mut usize,
419 avail: *mut usize,
420 ) -> zx_status_t;
421
422 pub fn zx_object_get_property(
423 handle: zx_handle_t,
424 property: u32,
425 value: *mut u8,
426 value_size: usize,
427 ) -> zx_status_t;
428
429 pub fn zx_object_set_profile(
430 handle: zx_handle_t,
431 profile: zx_handle_t,
432 options: u32,
433 ) -> zx_status_t;
434
435 pub fn zx_object_set_property(
436 handle: zx_handle_t,
437 property: u32,
438 value: *const u8,
439 value_size: usize,
440 ) -> zx_status_t;
441
442 pub fn zx_object_signal(handle: zx_handle_t, clear_mask: u32, set_mask: u32) -> zx_status_t;
443
444 pub fn zx_object_signal_peer(
445 handle: zx_handle_t,
446 clear_mask: u32,
447 set_mask: u32,
448 ) -> zx_status_t;
449
450 pub fn zx_object_wait_async(
451 handle: zx_handle_t,
452 port: zx_handle_t,
453 key: u64,
454 signals: zx_signals_t,
455 options: u32,
456 ) -> zx_status_t;
457
458 pub fn zx_object_wait_many(
459 items: *mut zx_wait_item_t,
460 num_items: usize,
461 deadline: zx_instant_mono_t,
462 ) -> zx_status_t;
463
464 pub fn zx_object_wait_one(
465 handle: zx_handle_t,
466 signals: zx_signals_t,
467 deadline: zx_instant_mono_t,
468 observed: *mut zx_signals_t,
469 ) -> zx_status_t;
470
471 pub fn zx_pager_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
472
473 pub fn zx_pager_create_vmo(
474 pager: zx_handle_t,
475 options: u32,
476 port: zx_handle_t,
477 key: u64,
478 size: u64,
479 out: *mut zx_handle_t,
480 ) -> zx_status_t;
481
482 pub fn zx_pager_detach_vmo(pager: zx_handle_t, vmo: zx_handle_t) -> zx_status_t;
483
484 pub fn zx_pager_op_range(
485 pager: zx_handle_t,
486 op: u32,
487 pager_vmo: zx_handle_t,
488 offset: u64,
489 length: u64,
490 data: u64,
491 ) -> zx_status_t;
492
493 pub fn zx_pager_query_dirty_ranges(
494 pager: zx_handle_t,
495 pager_vmo: zx_handle_t,
496 offset: u64,
497 length: u64,
498 buffer: *mut u8,
499 buffer_size: usize,
500 actual: *mut usize,
501 avail: *mut usize,
502 ) -> zx_status_t;
503
504 pub fn zx_pager_query_vmo_stats(
505 pager: zx_handle_t,
506 pager_vmo: zx_handle_t,
507 options: u32,
508 buffer: *mut u8,
509 buffer_size: usize,
510 ) -> zx_status_t;
511
512 pub fn zx_pager_supply_pages(
513 pager: zx_handle_t,
514 pager_vmo: zx_handle_t,
515 offset: u64,
516 length: u64,
517 aux_vmo: zx_handle_t,
518 aux_offset: u64,
519 ) -> zx_status_t;
520
521 pub fn zx_pci_add_subtract_io_range(
522 handle: zx_handle_t,
523 mmio: u32,
524 base: u64,
525 len: u64,
526 add: u32,
527 ) -> zx_status_t;
528
529 pub fn zx_pci_cfg_pio_rw(
530 handle: zx_handle_t,
531 bus: u8,
532 dev: u8,
533 func: u8,
534 offset: u8,
535 val: *mut u32,
536 width: usize,
537 write: u32,
538 ) -> zx_status_t;
539
540 pub fn zx_pci_config_read(
541 handle: zx_handle_t,
542 offset: u16,
543 width: usize,
544 out_val: *mut u32,
545 ) -> zx_status_t;
546
547 pub fn zx_pci_config_write(
548 handle: zx_handle_t,
549 offset: u16,
550 width: usize,
551 val: u32,
552 ) -> zx_status_t;
553
554 pub fn zx_pci_enable_bus_master(handle: zx_handle_t, enable: u32) -> zx_status_t;
555
556 pub fn zx_pci_get_bar(
557 handle: zx_handle_t,
558 bar_num: u32,
559 out_bar: *mut zx_pci_bar_t,
560 out_handle: *mut zx_handle_t,
561 ) -> zx_status_t;
562
563 pub fn zx_pci_get_nth_device(
564 handle: zx_handle_t,
565 index: u32,
566 out_info: *mut zx_pcie_device_info_t,
567 out_handle: *mut zx_handle_t,
568 ) -> zx_status_t;
569
570 pub fn zx_pci_init(
571 handle: zx_handle_t,
572 init_buf: *const zx_pci_init_arg_t,
573 len: u32,
574 ) -> zx_status_t;
575
576 pub fn zx_pci_map_interrupt(
577 handle: zx_handle_t,
578 which_irq: i32,
579 out_handle: *mut zx_handle_t,
580 ) -> zx_status_t;
581
582 pub fn zx_pci_query_irq_mode(
583 handle: zx_handle_t,
584 mode: u32,
585 out_max_irqs: *mut u32,
586 ) -> zx_status_t;
587
588 pub fn zx_pci_reset_device(handle: zx_handle_t) -> zx_status_t;
589
590 pub fn zx_pci_set_irq_mode(
591 handle: zx_handle_t,
592 mode: u32,
593 requested_irq_count: u32,
594 ) -> zx_status_t;
595
596 pub fn zx_pmt_unpin(handle: zx_handle_t) -> zx_status_t;
597
598 pub fn zx_port_cancel(handle: zx_handle_t, source: zx_handle_t, key: u64) -> zx_status_t;
599
600 pub fn zx_port_cancel_key(handle: zx_handle_t, options: u32, key: u64) -> zx_status_t;
601
602 pub fn zx_port_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
603
604 pub fn zx_port_queue(handle: zx_handle_t, packet: *const zx_port_packet_t) -> zx_status_t;
605
606 pub fn zx_port_wait(
607 handle: zx_handle_t,
608 deadline: zx_instant_mono_t,
609 packet: *mut zx_port_packet_t,
610 ) -> zx_status_t;
611
612 pub fn zx_process_create(
613 job: zx_handle_t,
614 name: *const u8,
615 name_size: usize,
616 options: u32,
617 proc_handle: *mut zx_handle_t,
618 vmar_handle: *mut zx_handle_t,
619 ) -> zx_status_t;
620
621 pub fn zx_process_create_shared(
622 shared_proc: zx_handle_t,
623 options: u32,
624 name: *const u8,
625 name_size: usize,
626 proc_handle: *mut zx_handle_t,
627 restricted_vmar_handle: *mut zx_handle_t,
628 ) -> zx_status_t;
629
630 pub fn zx_process_exit(retcode: i64);
631
632 pub fn zx_process_read_memory(
633 handle: zx_handle_t,
634 vaddr: zx_vaddr_t,
635 buffer: *mut u8,
636 buffer_size: usize,
637 actual: *mut usize,
638 ) -> zx_status_t;
639
640 pub fn zx_process_start(
641 handle: zx_handle_t,
642 thread: zx_handle_t,
643 entry: zx_vaddr_t,
644 stack: zx_vaddr_t,
645 arg1: zx_handle_t,
646 arg2: usize,
647 ) -> zx_status_t;
648
649 pub fn zx_process_write_memory(
650 handle: zx_handle_t,
651 vaddr: zx_vaddr_t,
652 buffer: *const u8,
653 buffer_size: usize,
654 actual: *mut usize,
655 ) -> zx_status_t;
656
657 pub fn zx_profile_create(
658 profile_rsrc: zx_handle_t,
659 options: u32,
660 profile: *const zx_profile_info_t,
661 out: *mut zx_handle_t,
662 ) -> zx_status_t;
663
664 pub fn zx_resource_create(
665 parent_rsrc: zx_handle_t,
666 options: u32,
667 base: u64,
668 size: usize,
669 name: *const u8,
670 name_size: usize,
671 resource_out: *mut zx_handle_t,
672 ) -> zx_status_t;
673
674 pub fn zx_restricted_bind_state(options: u32, out: *mut zx_handle_t) -> zx_status_t;
675
676 pub fn zx_restricted_enter(
677 options: u32,
678 vector_table_ptr: usize,
679 context: usize,
680 ) -> zx_status_t;
681
682 pub fn zx_restricted_kick(thread: zx_handle_t, options: u32) -> zx_status_t;
683
684 pub fn zx_restricted_unbind_state(options: u32) -> zx_status_t;
685
686 pub fn zx_sampler_attach(iobuffer: zx_handle_t, thread: zx_handle_t) -> zx_status_t;
687
688 pub fn zx_sampler_create(
689 rsrc: zx_handle_t,
690 options: u64,
691 config: *const zx_sampler_config_t,
692 per_cpu_buffers: *mut zx_handle_t,
693 ) -> zx_status_t;
694
695 pub fn zx_sampler_start(iobuffer: zx_handle_t) -> zx_status_t;
696
697 pub fn zx_sampler_stop(iobuffer: zx_handle_t) -> zx_status_t;
698
699 pub fn zx_smc_call(
700 handle: zx_handle_t,
701 parameters: *const zx_smc_parameters_t,
702 out_smc_result: *mut zx_smc_result_t,
703 ) -> zx_status_t;
704
705 pub fn zx_socket_create(
706 options: u32,
707 out0: *mut zx_handle_t,
708 out1: *mut zx_handle_t,
709 ) -> zx_status_t;
710
711 pub fn zx_socket_read(
712 handle: zx_handle_t,
713 options: u32,
714 buffer: *mut u8,
715 buffer_size: usize,
716 actual: *mut usize,
717 ) -> zx_status_t;
718
719 pub fn zx_socket_set_disposition(
720 handle: zx_handle_t,
721 disposition: u32,
722 disposition_peer: u32,
723 ) -> zx_status_t;
724
725 pub fn zx_socket_write(
726 handle: zx_handle_t,
727 options: u32,
728 buffer: *const u8,
729 buffer_size: usize,
730 actual: *mut usize,
731 ) -> zx_status_t;
732
733 pub fn zx_stream_create(
734 options: u32,
735 vmo: zx_handle_t,
736 seek: zx_off_t,
737 out_stream: *mut zx_handle_t,
738 ) -> zx_status_t;
739
740 pub fn zx_stream_readv(
741 handle: zx_handle_t,
742 options: u32,
743 vectors: *mut zx_iovec_t,
744 num_vectors: usize,
745 actual: *mut usize,
746 ) -> zx_status_t;
747
748 pub fn zx_stream_readv_at(
749 handle: zx_handle_t,
750 options: u32,
751 offset: zx_off_t,
752 vectors: *mut zx_iovec_t,
753 num_vectors: usize,
754 actual: *mut usize,
755 ) -> zx_status_t;
756
757 pub fn zx_stream_seek(
758 handle: zx_handle_t,
759 whence: zx_stream_seek_origin_t,
760 offset: i64,
761 out_seek: *mut zx_off_t,
762 ) -> zx_status_t;
763
764 pub fn zx_stream_writev(
765 handle: zx_handle_t,
766 options: u32,
767 vectors: *const zx_iovec_t,
768 num_vectors: usize,
769 actual: *mut usize,
770 ) -> zx_status_t;
771
772 pub fn zx_stream_writev_at(
773 handle: zx_handle_t,
774 options: u32,
775 offset: zx_off_t,
776 vectors: *const zx_iovec_t,
777 num_vectors: usize,
778 actual: *mut usize,
779 ) -> zx_status_t;
780
781 pub fn zx_syscall_next_1(arg: i32) -> zx_status_t;
782
783 pub fn zx_syscall_test_handle_create(
784 return_value: zx_status_t,
785 out: *mut zx_handle_t,
786 ) -> zx_status_t;
787
788 pub fn zx_syscall_test_widening_signed_narrow(a: i64, b: i32, c: i16, d: i8) -> i64;
789
790 pub fn zx_syscall_test_widening_signed_wide(a: i64, b: i32, c: i16, d: i8) -> i64;
791
792 pub fn zx_syscall_test_widening_unsigned_narrow(a: u64, b: u32, c: u16, d: u8) -> u64;
793
794 pub fn zx_syscall_test_widening_unsigned_wide(a: u64, b: u32, c: u16, d: u8) -> u64;
795
796 pub fn zx_syscall_test_wrapper(a: i32, b: i32, c: i32) -> zx_status_t;
797
798 pub fn zx_syscall_test_0() -> zx_status_t;
799
800 pub fn zx_syscall_test_1(a: i32) -> zx_status_t;
801
802 pub fn zx_syscall_test_2(a: i32, b: i32) -> zx_status_t;
803
804 pub fn zx_syscall_test_3(a: i32, b: i32, c: i32) -> zx_status_t;
805
806 pub fn zx_syscall_test_4(a: i32, b: i32, c: i32, d: i32) -> zx_status_t;
807
808 pub fn zx_syscall_test_5(a: i32, b: i32, c: i32, d: i32, e: i32) -> zx_status_t;
809
810 pub fn zx_syscall_test_6(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) -> zx_status_t;
811
812 pub fn zx_syscall_test_7(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32)
813 -> zx_status_t;
814
815 pub fn zx_syscall_test_8(
816 a: i32,
817 b: i32,
818 c: i32,
819 d: i32,
820 e: i32,
821 f: i32,
822 g: i32,
823 h: i32,
824 ) -> zx_status_t;
825
826 pub fn zx_system_get_dcache_line_size() -> u32;
827
828 pub fn zx_system_get_event(
829 root_job: zx_handle_t,
830 kind: u32,
831 event: *mut zx_handle_t,
832 ) -> zx_status_t;
833
834 pub fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t;
835
836 pub fn zx_system_get_num_cpus() -> u32;
837
838 pub fn zx_system_get_page_size() -> u32;
839
840 pub fn zx_system_get_performance_info(
841 resource: zx_handle_t,
842 topic: u32,
843 count: usize,
844 info: *mut u8,
845 output_count: *mut usize,
846 ) -> zx_status_t;
847
848 pub fn zx_system_get_physmem() -> u64;
849
850 pub fn zx_system_get_version_string() -> zx_string_view_t;
851
852 pub fn zx_system_mexec(
853 resource: zx_handle_t,
854 kernel_vmo: zx_handle_t,
855 bootimage_vmo: zx_handle_t,
856 ) -> zx_status_t;
857
858 pub fn zx_system_mexec_payload_get(
859 resource: zx_handle_t,
860 buffer: *mut u8,
861 buffer_size: usize,
862 ) -> zx_status_t;
863
864 pub fn zx_system_powerctl(
865 resource: zx_handle_t,
866 cmd: u32,
867 arg: *const zx_system_powerctl_arg_t,
868 ) -> zx_status_t;
869
870 pub fn zx_system_set_performance_info(
871 resource: zx_handle_t,
872 topic: u32,
873 info: *const u8,
874 count: usize,
875 ) -> zx_status_t;
876
877 pub fn zx_system_set_processor_power_domain(
878 resource: zx_handle_t,
879 options: u64,
880 domain: *const zx_processor_power_domain_t,
881 port: zx_handle_t,
882 power_levels: *const zx_processor_power_level_t,
883 num_power_levels: usize,
884 transitions: *const zx_processor_power_level_transition_t,
885 num_transitions: usize,
886 ) -> zx_status_t;
887
888 pub fn zx_system_set_processor_power_state(
889 port: zx_handle_t,
890 power_state: *const zx_processor_power_state_t,
891 ) -> zx_status_t;
892
893 pub fn zx_system_suspend_enter(
894 resource: zx_handle_t,
895 resume_deadline: zx_instant_boot_t,
896 options: zx_system_suspend_option_t,
897 header: *mut zx_wake_source_report_header_t,
898 entries: *mut zx_wake_source_report_entry_t,
899 num_entries: u32,
900 actual_entries: *mut u32,
901 ) -> zx_status_t;
902
903 pub fn zx_system_watch_memory_stall(
904 resource: zx_handle_t,
905 kind: u32,
906 threshold: zx_duration_t,
907 window: zx_duration_t,
908 event: *mut zx_handle_t,
909 ) -> zx_status_t;
910
911 pub fn zx_task_create_exception_channel(
912 handle: zx_handle_t,
913 options: u32,
914 out: *mut zx_handle_t,
915 ) -> zx_status_t;
916
917 pub fn zx_task_kill(handle: zx_handle_t) -> zx_status_t;
918
919 pub fn zx_task_suspend(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
920
921 pub fn zx_task_suspend_token(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
922
923 pub fn zx_thread_create(
924 process: zx_handle_t,
925 name: *const u8,
926 name_size: usize,
927 options: u32,
928 out: *mut zx_handle_t,
929 ) -> zx_status_t;
930
931 pub fn zx_thread_exit();
932
933 pub fn zx_thread_legacy_yield(options: u32) -> zx_status_t;
934
935 pub fn zx_thread_raise_exception(
936 options: u32,
937 r#type: u32,
938 context: *const zx_exception_context_t,
939 ) -> zx_status_t;
940
941 pub fn zx_thread_read_state(
942 handle: zx_handle_t,
943 kind: u32,
944 buffer: *mut u8,
945 buffer_size: usize,
946 ) -> zx_status_t;
947
948 pub fn zx_thread_start(
949 handle: zx_handle_t,
950 thread_entry: zx_vaddr_t,
951 stack: zx_vaddr_t,
952 arg1: usize,
953 arg2: usize,
954 ) -> zx_status_t;
955
956 pub fn zx_thread_write_state(
957 handle: zx_handle_t,
958 kind: u32,
959 buffer: *const u8,
960 buffer_size: usize,
961 ) -> zx_status_t;
962
963 pub fn zx_ticks_get() -> zx_instant_mono_ticks_t;
964
965 pub fn zx_ticks_get_boot() -> zx_instant_boot_ticks_t;
966
967 pub fn zx_ticks_per_second() -> zx_ticks_t;
968
969 pub fn zx_timer_cancel(handle: zx_handle_t) -> zx_status_t;
970
971 pub fn zx_timer_create(
972 options: u32,
973 clock_id: zx_clock_t,
974 out: *mut zx_handle_t,
975 ) -> zx_status_t;
976
977 pub fn zx_timer_set(
978 handle: zx_handle_t,
979 deadline: zx_time_t,
980 slack: zx_duration_t,
981 ) -> zx_status_t;
982
983 pub fn zx_vcpu_create(
984 guest: zx_handle_t,
985 options: u32,
986 entry: zx_vaddr_t,
987 out: *mut zx_handle_t,
988 ) -> zx_status_t;
989
990 pub fn zx_vcpu_enter(handle: zx_handle_t, packet: *mut zx_port_packet_t) -> zx_status_t;
991
992 pub fn zx_vcpu_interrupt(handle: zx_handle_t, vector: u32) -> zx_status_t;
993
994 pub fn zx_vcpu_kick(handle: zx_handle_t) -> zx_status_t;
995
996 pub fn zx_vcpu_read_state(
997 handle: zx_handle_t,
998 kind: u32,
999 buffer: *mut u8,
1000 buffer_size: usize,
1001 ) -> zx_status_t;
1002
1003 pub fn zx_vcpu_write_state(
1004 handle: zx_handle_t,
1005 kind: u32,
1006 buffer: *const u8,
1007 buffer_size: usize,
1008 ) -> zx_status_t;
1009
1010 pub fn zx_vmar_allocate(
1011 parent_vmar: zx_handle_t,
1012 options: zx_vm_option_t,
1013 offset: usize,
1014 size: usize,
1015 child_vmar: *mut zx_handle_t,
1016 child_addr: *mut zx_vaddr_t,
1017 ) -> zx_status_t;
1018
1019 pub fn zx_vmar_destroy(handle: zx_handle_t) -> zx_status_t;
1020
1021 pub fn zx_vmar_map(
1022 handle: zx_handle_t,
1023 options: zx_vm_option_t,
1024 vmar_offset: usize,
1025 vmo: zx_handle_t,
1026 vmo_offset: u64,
1027 len: usize,
1028 mapped_addr: *mut zx_vaddr_t,
1029 ) -> zx_status_t;
1030
1031 pub fn zx_vmar_map_clock(
1032 handle: zx_handle_t,
1033 options: zx_vm_option_t,
1034 vmar_offset: usize,
1035 clock: zx_handle_t,
1036 len: usize,
1037 mapped_addr: *mut zx_vaddr_t,
1038 ) -> zx_status_t;
1039
1040 pub fn zx_vmar_map_iob(
1041 handle: zx_handle_t,
1042 options: zx_vm_option_t,
1043 vmar_offset: usize,
1044 ep: zx_handle_t,
1045 region_index: u32,
1046 region_offset: u64,
1047 region_length: usize,
1048 mapped_addr: *mut zx_vaddr_t,
1049 ) -> zx_status_t;
1050
1051 pub fn zx_vmar_op_range(
1052 handle: zx_handle_t,
1053 op: u32,
1054 address: zx_vaddr_t,
1055 size: usize,
1056 buffer: *mut u8,
1057 buffer_size: usize,
1058 ) -> zx_status_t;
1059
1060 pub fn zx_vmar_protect(
1061 handle: zx_handle_t,
1062 options: zx_vm_option_t,
1063 addr: zx_vaddr_t,
1064 len: usize,
1065 ) -> zx_status_t;
1066
1067 pub fn zx_vmar_unmap(handle: zx_handle_t, addr: zx_vaddr_t, len: usize) -> zx_status_t;
1068
1069 pub fn zx_vmar_unmap_handle_close_thread_exit(
1070 vmar_handle: zx_handle_t,
1071 addr: zx_vaddr_t,
1072 size: usize,
1073 close_handle: zx_handle_t,
1074 ) -> zx_status_t;
1075
1076 pub fn zx_vmo_create(size: u64, options: u32, out: *mut zx_handle_t) -> zx_status_t;
1077
1078 pub fn zx_vmo_create_child(
1079 handle: zx_handle_t,
1080 options: u32,
1081 offset: u64,
1082 size: u64,
1083 out: *mut zx_handle_t,
1084 ) -> zx_status_t;
1085
1086 pub fn zx_vmo_create_contiguous(
1087 bti: zx_handle_t,
1088 size: usize,
1089 alignment_log2: u32,
1090 out: *mut zx_handle_t,
1091 ) -> zx_status_t;
1092
1093 pub fn zx_vmo_create_physical(
1094 resource: zx_handle_t,
1095 paddr: zx_paddr_t,
1096 size: usize,
1097 out: *mut zx_handle_t,
1098 ) -> zx_status_t;
1099
1100 pub fn zx_vmo_get_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1101
1102 pub fn zx_vmo_get_stream_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1103
1104 pub fn zx_vmo_op_range(
1105 handle: zx_handle_t,
1106 op: u32,
1107 offset: u64,
1108 size: u64,
1109 buffer: *mut u8,
1110 buffer_size: usize,
1111 ) -> zx_status_t;
1112
1113 pub fn zx_vmo_read(
1114 handle: zx_handle_t,
1115 buffer: *mut u8,
1116 offset: u64,
1117 buffer_size: usize,
1118 ) -> zx_status_t;
1119
1120 pub fn zx_vmo_replace_as_executable(
1121 handle: zx_handle_t,
1122 vmex: zx_handle_t,
1123 out: *mut zx_handle_t,
1124 ) -> zx_status_t;
1125
1126 pub fn zx_vmo_set_cache_policy(handle: zx_handle_t, cache_policy: u32) -> zx_status_t;
1127
1128 pub fn zx_vmo_set_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1129
1130 pub fn zx_vmo_set_stream_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1131
1132 pub fn zx_vmo_transfer_data(
1133 dst_vmo: zx_handle_t,
1134 options: u32,
1135 offset: u64,
1136 length: u64,
1137 src_vmo: zx_handle_t,
1138 src_offset: u64,
1139 ) -> zx_status_t;
1140
1141 pub fn zx_vmo_write(
1142 handle: zx_handle_t,
1143 buffer: *const u8,
1144 offset: u64,
1145 buffer_size: usize,
1146 ) -> zx_status_t;
1147
1148}