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