Skip to main content

zx_sys/
definitions.rs

1// Copyright 2022 The Fuchsia Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5// DO NOT EDIT. Generated from FIDL library zx by zither, a Fuchsia platform
6// tool.
7
8// Re-export the types defined in the zx-types crate
9pub use zx_types::*;
10
11// Only link against zircon when targeting Fuchsia
12#[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(
675        options: u32,
676        out: *mut zx_handle_t,
677        out_exception: *mut zx_exception_report_t,
678    ) -> zx_status_t;
679
680    pub fn zx_restricted_enter(
681        options: u32,
682        vector_table_ptr: usize,
683        context: usize,
684    ) -> zx_status_t;
685
686    pub fn zx_restricted_kick(thread: zx_handle_t, options: u32) -> zx_status_t;
687
688    pub fn zx_restricted_unbind_state(options: u32) -> zx_status_t;
689
690    pub fn zx_sampler_create(
691        rsrc: zx_handle_t,
692        options: u64,
693        config: *const zx_sampler_config_t,
694        per_cpu_buffers: *mut zx_handle_t,
695    ) -> zx_status_t;
696
697    pub fn zx_sampler_read(
698        iobuffer: zx_handle_t,
699        data: *mut u8,
700        data_size: usize,
701        actual: *mut usize,
702    ) -> zx_status_t;
703
704    pub fn zx_sampler_start(iobuffer: zx_handle_t) -> zx_status_t;
705
706    pub fn zx_sampler_stop(iobuffer: zx_handle_t) -> zx_status_t;
707
708    pub fn zx_smc_call(
709        handle: zx_handle_t,
710        parameters: *const zx_smc_parameters_t,
711        out_smc_result: *mut zx_smc_result_t,
712    ) -> zx_status_t;
713
714    pub fn zx_socket_create(
715        options: u32,
716        out0: *mut zx_handle_t,
717        out1: *mut zx_handle_t,
718    ) -> zx_status_t;
719
720    pub fn zx_socket_read(
721        handle: zx_handle_t,
722        options: u32,
723        buffer: *mut u8,
724        buffer_size: usize,
725        actual: *mut usize,
726    ) -> zx_status_t;
727
728    pub fn zx_socket_set_disposition(
729        handle: zx_handle_t,
730        disposition: u32,
731        disposition_peer: u32,
732    ) -> zx_status_t;
733
734    pub fn zx_socket_write(
735        handle: zx_handle_t,
736        options: u32,
737        buffer: *const u8,
738        buffer_size: usize,
739        actual: *mut usize,
740    ) -> zx_status_t;
741
742    pub fn zx_stream_create(
743        options: u32,
744        vmo: zx_handle_t,
745        seek: zx_off_t,
746        out_stream: *mut zx_handle_t,
747    ) -> zx_status_t;
748
749    pub fn zx_stream_readv(
750        handle: zx_handle_t,
751        options: u32,
752        vectors: *mut zx_iovec_t,
753        num_vectors: usize,
754        actual: *mut usize,
755    ) -> zx_status_t;
756
757    pub fn zx_stream_readv_at(
758        handle: zx_handle_t,
759        options: u32,
760        offset: zx_off_t,
761        vectors: *mut zx_iovec_t,
762        num_vectors: usize,
763        actual: *mut usize,
764    ) -> zx_status_t;
765
766    pub fn zx_stream_seek(
767        handle: zx_handle_t,
768        whence: zx_stream_seek_origin_t,
769        offset: i64,
770        out_seek: *mut zx_off_t,
771    ) -> zx_status_t;
772
773    pub fn zx_stream_writev(
774        handle: zx_handle_t,
775        options: u32,
776        vectors: *const zx_iovec_t,
777        num_vectors: usize,
778        actual: *mut usize,
779    ) -> zx_status_t;
780
781    pub fn zx_stream_writev_at(
782        handle: zx_handle_t,
783        options: u32,
784        offset: zx_off_t,
785        vectors: *const zx_iovec_t,
786        num_vectors: usize,
787        actual: *mut usize,
788    ) -> zx_status_t;
789
790    pub fn zx_syscall_next_1(arg: i32) -> zx_status_t;
791
792    pub fn zx_syscall_test_handle_create(
793        return_value: zx_status_t,
794        out: *mut zx_handle_t,
795    ) -> zx_status_t;
796
797    pub fn zx_syscall_test_widening_signed_narrow(a: i64, b: i32, c: i16, d: i8) -> i64;
798
799    pub fn zx_syscall_test_widening_signed_wide(a: i64, b: i32, c: i16, d: i8) -> i64;
800
801    pub fn zx_syscall_test_widening_unsigned_narrow(a: u64, b: u32, c: u16, d: u8) -> u64;
802
803    pub fn zx_syscall_test_widening_unsigned_wide(a: u64, b: u32, c: u16, d: u8) -> u64;
804
805    pub fn zx_syscall_test_wrapper(a: i32, b: i32, c: i32) -> zx_status_t;
806
807    pub fn zx_syscall_test_0() -> zx_status_t;
808
809    pub fn zx_syscall_test_1(a: i32) -> zx_status_t;
810
811    pub fn zx_syscall_test_2(a: i32, b: i32) -> zx_status_t;
812
813    pub fn zx_syscall_test_3(a: i32, b: i32, c: i32) -> zx_status_t;
814
815    pub fn zx_syscall_test_4(a: i32, b: i32, c: i32, d: i32) -> zx_status_t;
816
817    pub fn zx_syscall_test_5(a: i32, b: i32, c: i32, d: i32, e: i32) -> zx_status_t;
818
819    pub fn zx_syscall_test_6(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) -> zx_status_t;
820
821    pub fn zx_syscall_test_7(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32)
822    -> zx_status_t;
823
824    pub fn zx_syscall_test_8(
825        a: i32,
826        b: i32,
827        c: i32,
828        d: i32,
829        e: i32,
830        f: i32,
831        g: i32,
832        h: i32,
833    ) -> zx_status_t;
834
835    pub fn zx_system_barrier(options: u32) -> zx_status_t;
836
837    pub fn zx_system_get_dcache_line_size() -> u32;
838
839    pub fn zx_system_get_event(
840        root_job: zx_handle_t,
841        kind: u32,
842        event: *mut zx_handle_t,
843    ) -> zx_status_t;
844
845    pub fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t;
846
847    pub fn zx_system_get_num_cpus() -> u32;
848
849    pub fn zx_system_get_page_size() -> u32;
850
851    pub fn zx_system_get_performance_info(
852        resource: zx_handle_t,
853        topic: u32,
854        count: usize,
855        info: *mut u8,
856        output_count: *mut usize,
857    ) -> zx_status_t;
858
859    pub fn zx_system_get_physmem() -> u64;
860
861    pub fn zx_system_get_version_string() -> zx_string_view_t;
862
863    pub fn zx_system_mexec(
864        resource: zx_handle_t,
865        kernel_vmo: zx_handle_t,
866        bootimage_vmo: zx_handle_t,
867    ) -> zx_status_t;
868
869    pub fn zx_system_mexec_payload_get(
870        resource: zx_handle_t,
871        buffer: *mut u8,
872        buffer_size: usize,
873    ) -> zx_status_t;
874
875    pub fn zx_system_powerctl(
876        resource: zx_handle_t,
877        cmd: u32,
878        arg: *const zx_system_powerctl_arg_t,
879    ) -> zx_status_t;
880
881    pub fn zx_system_set_performance_info(
882        resource: zx_handle_t,
883        topic: u32,
884        info: *const u8,
885        count: usize,
886    ) -> zx_status_t;
887
888    pub fn zx_system_set_processor_power_domain(
889        resource: zx_handle_t,
890        options: u64,
891        domain: *const zx_processor_power_domain_t,
892        port: zx_handle_t,
893        power_levels: *const zx_processor_power_level_t,
894        num_power_levels: usize,
895        transitions: *const zx_processor_power_level_transition_t,
896        num_transitions: usize,
897    ) -> zx_status_t;
898
899    pub fn zx_system_set_processor_power_state(
900        port: zx_handle_t,
901        power_state: *const zx_processor_power_state_t,
902    ) -> zx_status_t;
903
904    pub fn zx_system_suspend_enter(
905        resource: zx_handle_t,
906        resume_deadline: zx_instant_boot_t,
907        options: zx_system_suspend_option_t,
908        header: *mut zx_wake_source_report_header_t,
909        entries: *mut zx_wake_source_report_entry_t,
910        num_entries: u32,
911        actual_entries: *mut u32,
912    ) -> zx_status_t;
913
914    pub fn zx_system_watch_memory_stall(
915        resource: zx_handle_t,
916        kind: u32,
917        threshold: zx_duration_t,
918        window: zx_duration_t,
919        event: *mut zx_handle_t,
920    ) -> zx_status_t;
921
922    pub fn zx_task_create_exception_channel(
923        handle: zx_handle_t,
924        options: u32,
925        out: *mut zx_handle_t,
926    ) -> zx_status_t;
927
928    pub fn zx_task_kill(handle: zx_handle_t) -> zx_status_t;
929
930    pub fn zx_task_suspend(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
931
932    pub fn zx_task_suspend_token(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
933
934    pub fn zx_thread_create(
935        process: zx_handle_t,
936        name: *const u8,
937        name_size: usize,
938        options: u32,
939        out: *mut zx_handle_t,
940    ) -> zx_status_t;
941
942    pub fn zx_thread_exit();
943
944    pub fn zx_thread_legacy_yield(options: u32) -> zx_status_t;
945
946    pub fn zx_thread_raise_exception(
947        options: u32,
948        r#type: u32,
949        context: *const zx_exception_context_t,
950    ) -> zx_status_t;
951
952    pub fn zx_thread_read_state(
953        handle: zx_handle_t,
954        kind: u32,
955        buffer: *mut u8,
956        buffer_size: usize,
957    ) -> zx_status_t;
958
959    pub fn zx_thread_set_rseq(vmo: zx_handle_t, offset: u64, size: u64) -> zx_status_t;
960
961    pub fn zx_thread_start(
962        handle: zx_handle_t,
963        thread_entry: zx_vaddr_t,
964        stack: zx_vaddr_t,
965        arg1: usize,
966        arg2: usize,
967    ) -> zx_status_t;
968
969    pub fn zx_thread_start_regs(
970        handle: zx_handle_t,
971        pc: u64,
972        sp: u64,
973        arg1: u64,
974        arg2: u64,
975        tp: u64,
976        abi_reg: u64,
977    ) -> zx_status_t;
978
979    pub fn zx_thread_write_state(
980        handle: zx_handle_t,
981        kind: u32,
982        buffer: *const u8,
983        buffer_size: usize,
984    ) -> zx_status_t;
985
986    pub fn zx_ticks_get() -> zx_instant_mono_ticks_t;
987
988    pub fn zx_ticks_get_boot() -> zx_instant_boot_ticks_t;
989
990    pub fn zx_ticks_per_second() -> zx_ticks_t;
991
992    pub fn zx_timer_cancel(handle: zx_handle_t) -> zx_status_t;
993
994    pub fn zx_timer_create(
995        options: u32,
996        clock_id: zx_clock_t,
997        out: *mut zx_handle_t,
998    ) -> zx_status_t;
999
1000    pub fn zx_timer_set(
1001        handle: zx_handle_t,
1002        deadline: zx_time_t,
1003        slack: zx_duration_t,
1004    ) -> zx_status_t;
1005
1006    pub fn zx_vcpu_create(
1007        guest: zx_handle_t,
1008        options: u32,
1009        entry: zx_vaddr_t,
1010        out: *mut zx_handle_t,
1011    ) -> zx_status_t;
1012
1013    pub fn zx_vcpu_enter(handle: zx_handle_t, packet: *mut zx_port_packet_t) -> zx_status_t;
1014
1015    pub fn zx_vcpu_interrupt(handle: zx_handle_t, vector: u32) -> zx_status_t;
1016
1017    pub fn zx_vcpu_kick(handle: zx_handle_t) -> zx_status_t;
1018
1019    pub fn zx_vcpu_read_state(
1020        handle: zx_handle_t,
1021        kind: u32,
1022        buffer: *mut u8,
1023        buffer_size: usize,
1024    ) -> zx_status_t;
1025
1026    pub fn zx_vcpu_write_state(
1027        handle: zx_handle_t,
1028        kind: u32,
1029        buffer: *const u8,
1030        buffer_size: usize,
1031    ) -> zx_status_t;
1032
1033    pub fn zx_vmar_allocate(
1034        parent_vmar: zx_handle_t,
1035        options: zx_vm_option_t,
1036        offset: usize,
1037        size: usize,
1038        child_vmar: *mut zx_handle_t,
1039        child_addr: *mut zx_vaddr_t,
1040    ) -> zx_status_t;
1041
1042    pub fn zx_vmar_destroy(handle: zx_handle_t) -> zx_status_t;
1043
1044    pub fn zx_vmar_map(
1045        handle: zx_handle_t,
1046        options: zx_vm_option_t,
1047        vmar_offset: usize,
1048        vmo: zx_handle_t,
1049        vmo_offset: u64,
1050        len: usize,
1051        mapped_addr: *mut zx_vaddr_t,
1052    ) -> zx_status_t;
1053
1054    pub fn zx_vmar_map_clock(
1055        handle: zx_handle_t,
1056        options: zx_vm_option_t,
1057        vmar_offset: usize,
1058        clock: zx_handle_t,
1059        len: usize,
1060        mapped_addr: *mut zx_vaddr_t,
1061    ) -> zx_status_t;
1062
1063    pub fn zx_vmar_map_iob(
1064        handle: zx_handle_t,
1065        options: zx_vm_option_t,
1066        vmar_offset: usize,
1067        ep: zx_handle_t,
1068        region_index: u32,
1069        region_offset: u64,
1070        region_length: usize,
1071        mapped_addr: *mut zx_vaddr_t,
1072    ) -> zx_status_t;
1073
1074    pub fn zx_vmar_op_range(
1075        handle: zx_handle_t,
1076        op: u32,
1077        address: zx_vaddr_t,
1078        size: usize,
1079        buffer: *mut u8,
1080        buffer_size: usize,
1081    ) -> zx_status_t;
1082
1083    pub fn zx_vmar_protect(
1084        handle: zx_handle_t,
1085        options: zx_vm_option_t,
1086        addr: zx_vaddr_t,
1087        len: usize,
1088    ) -> zx_status_t;
1089
1090    pub fn zx_vmar_unmap(handle: zx_handle_t, addr: zx_vaddr_t, len: usize) -> zx_status_t;
1091
1092    pub fn zx_vmar_unmap_handle_close_thread_exit(
1093        vmar_handle: zx_handle_t,
1094        addr: zx_vaddr_t,
1095        size: usize,
1096        close_handle: zx_handle_t,
1097    ) -> zx_status_t;
1098
1099    pub fn zx_vmo_create(size: u64, options: u32, out: *mut zx_handle_t) -> zx_status_t;
1100
1101    pub fn zx_vmo_create_child(
1102        handle: zx_handle_t,
1103        options: u32,
1104        offset: u64,
1105        size: u64,
1106        out: *mut zx_handle_t,
1107    ) -> zx_status_t;
1108
1109    pub fn zx_vmo_create_contiguous(
1110        bti: zx_handle_t,
1111        size: usize,
1112        alignment_log2: u32,
1113        out: *mut zx_handle_t,
1114    ) -> zx_status_t;
1115
1116    pub fn zx_vmo_create_physical(
1117        resource: zx_handle_t,
1118        paddr: zx_paddr_t,
1119        size: usize,
1120        out: *mut zx_handle_t,
1121    ) -> zx_status_t;
1122
1123    pub fn zx_vmo_get_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1124
1125    pub fn zx_vmo_get_stream_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1126
1127    pub fn zx_vmo_op_range(
1128        handle: zx_handle_t,
1129        op: u32,
1130        offset: u64,
1131        size: u64,
1132        buffer: *mut u8,
1133        buffer_size: usize,
1134    ) -> zx_status_t;
1135
1136    pub fn zx_vmo_read(
1137        handle: zx_handle_t,
1138        buffer: *mut u8,
1139        offset: u64,
1140        buffer_size: usize,
1141    ) -> zx_status_t;
1142
1143    pub fn zx_vmo_replace_as_executable(
1144        handle: zx_handle_t,
1145        vmex: zx_handle_t,
1146        out: *mut zx_handle_t,
1147    ) -> zx_status_t;
1148
1149    pub fn zx_vmo_set_cache_policy(handle: zx_handle_t, cache_policy: u32) -> zx_status_t;
1150
1151    pub fn zx_vmo_set_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1152
1153    pub fn zx_vmo_set_stream_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1154
1155    pub fn zx_vmo_transfer_data(
1156        dst_vmo: zx_handle_t,
1157        options: u32,
1158        offset: u64,
1159        length: u64,
1160        src_vmo: zx_handle_t,
1161        src_offset: u64,
1162    ) -> zx_status_t;
1163
1164    pub fn zx_vmo_write(
1165        handle: zx_handle_t,
1166        buffer: *const u8,
1167        offset: u64,
1168        buffer_size: usize,
1169    ) -> zx_status_t;
1170
1171}