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_close(handle: zx_handle_t) -> zx_status_t;
262
263    pub fn zx_handle_close_many(handles: *const zx_handle_t, num_handles: usize) -> zx_status_t;
264
265    pub fn zx_handle_duplicate(
266        handle: zx_handle_t,
267        rights: zx_rights_t,
268        out: *mut zx_handle_t,
269    ) -> zx_status_t;
270
271    pub fn zx_handle_replace(
272        handle: zx_handle_t,
273        rights: zx_rights_t,
274        out: *mut zx_handle_t,
275    ) -> zx_status_t;
276
277    pub fn zx_interrupt_ack(handle: zx_handle_t) -> zx_status_t;
278
279    pub fn zx_interrupt_bind(
280        handle: zx_handle_t,
281        port_handle: zx_handle_t,
282        key: u64,
283        options: u32,
284    ) -> zx_status_t;
285
286    pub fn zx_interrupt_create(
287        src_obj: zx_handle_t,
288        src_num: u32,
289        options: u32,
290        out_handle: *mut zx_handle_t,
291    ) -> zx_status_t;
292
293    pub fn zx_interrupt_destroy(handle: zx_handle_t) -> zx_status_t;
294
295    pub fn zx_interrupt_trigger(
296        handle: zx_handle_t,
297        options: u32,
298        timestamp: zx_time_t,
299    ) -> zx_status_t;
300
301    pub fn zx_interrupt_wait(handle: zx_handle_t, out_timestamp: *mut zx_time_t) -> zx_status_t;
302
303    pub fn zx_iob_allocate_id(
304        handle: zx_handle_t,
305        options: zx_iob_allocate_id_options_t,
306        region_index: u32,
307        blob: *const u8,
308        blob_size: usize,
309        id: *mut u32,
310    ) -> zx_status_t;
311
312    pub fn zx_iob_create(
313        options: u64,
314        regions: *const u8,
315        num_regions: usize,
316        ep0_out: *mut zx_handle_t,
317        ep1_out: *mut zx_handle_t,
318    ) -> zx_status_t;
319
320    pub fn zx_iob_create_shared_region(
321        options: u64,
322        size: u64,
323        out: *mut zx_handle_t,
324    ) -> zx_status_t;
325
326    pub fn zx_iob_writev(
327        handle: zx_handle_t,
328        options: zx_iob_write_options_t,
329        region_index: u32,
330        vectors: *const zx_iovec_t,
331        num_vectors: usize,
332    ) -> zx_status_t;
333
334    pub fn zx_iommu_create(
335        resource: zx_handle_t,
336        r#type: u32,
337        desc: *const u8,
338        desc_size: usize,
339        out: *mut zx_handle_t,
340    ) -> zx_status_t;
341
342    pub fn zx_ioports_release(resource: zx_handle_t, io_addr: u16, len: u32) -> zx_status_t;
343
344    pub fn zx_ioports_request(resource: zx_handle_t, io_addr: u16, len: u32) -> zx_status_t;
345
346    pub fn zx_job_create(
347        parent_job: zx_handle_t,
348        options: u32,
349        out: *mut zx_handle_t,
350    ) -> zx_status_t;
351
352    pub fn zx_job_set_critical(job: zx_handle_t, options: u32, process: zx_handle_t)
353        -> zx_status_t;
354
355    pub fn zx_job_set_policy(
356        handle: zx_handle_t,
357        options: u32,
358        topic: u32,
359        policy: *const u8,
360        policy_size: u32,
361    ) -> zx_status_t;
362
363    pub fn zx_ktrace_control(
364        handle: zx_handle_t,
365        action: u32,
366        options: u32,
367        ptr: *mut u8,
368    ) -> zx_status_t;
369
370    pub fn zx_ktrace_read(
371        handle: zx_handle_t,
372        data: *mut u8,
373        offset: u32,
374        data_size: usize,
375        actual: *mut usize,
376    ) -> zx_status_t;
377
378    pub fn zx_msi_allocate(
379        handle: zx_handle_t,
380        count: u32,
381        out_allocation: *mut zx_handle_t,
382    ) -> zx_status_t;
383
384    pub fn zx_msi_create(
385        handle: zx_handle_t,
386        options: u32,
387        msi_id: u32,
388        vmo: zx_handle_t,
389        vmo_offset: usize,
390        out_interrupt: *mut zx_handle_t,
391    ) -> zx_status_t;
392
393    pub fn zx_mtrace_control(
394        handle: zx_handle_t,
395        kind: u32,
396        action: u32,
397        options: u32,
398        ptr: *mut u8,
399        ptr_size: usize,
400    ) -> zx_status_t;
401
402    pub fn zx_nanosleep(deadline: zx_instant_mono_t) -> zx_status_t;
403
404    pub fn zx_object_get_child(
405        handle: zx_handle_t,
406        koid: u64,
407        rights: zx_rights_t,
408        out: *mut zx_handle_t,
409    ) -> zx_status_t;
410
411    pub fn zx_object_get_info(
412        handle: zx_handle_t,
413        topic: u32,
414        buffer: *mut u8,
415        buffer_size: usize,
416        actual: *mut usize,
417        avail: *mut usize,
418    ) -> zx_status_t;
419
420    pub fn zx_object_get_property(
421        handle: zx_handle_t,
422        property: u32,
423        value: *mut u8,
424        value_size: usize,
425    ) -> zx_status_t;
426
427    pub fn zx_object_set_profile(
428        handle: zx_handle_t,
429        profile: zx_handle_t,
430        options: u32,
431    ) -> zx_status_t;
432
433    pub fn zx_object_set_property(
434        handle: zx_handle_t,
435        property: u32,
436        value: *const u8,
437        value_size: usize,
438    ) -> zx_status_t;
439
440    pub fn zx_object_signal(handle: zx_handle_t, clear_mask: u32, set_mask: u32) -> zx_status_t;
441
442    pub fn zx_object_signal_peer(
443        handle: zx_handle_t,
444        clear_mask: u32,
445        set_mask: u32,
446    ) -> zx_status_t;
447
448    pub fn zx_object_wait_async(
449        handle: zx_handle_t,
450        port: zx_handle_t,
451        key: u64,
452        signals: zx_signals_t,
453        options: u32,
454    ) -> zx_status_t;
455
456    pub fn zx_object_wait_many(
457        items: *mut zx_wait_item_t,
458        num_items: usize,
459        deadline: zx_instant_mono_t,
460    ) -> zx_status_t;
461
462    pub fn zx_object_wait_one(
463        handle: zx_handle_t,
464        signals: zx_signals_t,
465        deadline: zx_instant_mono_t,
466        observed: *mut zx_signals_t,
467    ) -> zx_status_t;
468
469    pub fn zx_pager_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
470
471    pub fn zx_pager_create_vmo(
472        pager: zx_handle_t,
473        options: u32,
474        port: zx_handle_t,
475        key: u64,
476        size: u64,
477        out: *mut zx_handle_t,
478    ) -> zx_status_t;
479
480    pub fn zx_pager_detach_vmo(pager: zx_handle_t, vmo: zx_handle_t) -> zx_status_t;
481
482    pub fn zx_pager_op_range(
483        pager: zx_handle_t,
484        op: u32,
485        pager_vmo: zx_handle_t,
486        offset: u64,
487        length: u64,
488        data: u64,
489    ) -> zx_status_t;
490
491    pub fn zx_pager_query_dirty_ranges(
492        pager: zx_handle_t,
493        pager_vmo: zx_handle_t,
494        offset: u64,
495        length: u64,
496        buffer: *mut u8,
497        buffer_size: usize,
498        actual: *mut usize,
499        avail: *mut usize,
500    ) -> zx_status_t;
501
502    pub fn zx_pager_query_vmo_stats(
503        pager: zx_handle_t,
504        pager_vmo: zx_handle_t,
505        options: u32,
506        buffer: *mut u8,
507        buffer_size: usize,
508    ) -> zx_status_t;
509
510    pub fn zx_pager_supply_pages(
511        pager: zx_handle_t,
512        pager_vmo: zx_handle_t,
513        offset: u64,
514        length: u64,
515        aux_vmo: zx_handle_t,
516        aux_offset: u64,
517    ) -> zx_status_t;
518
519    pub fn zx_pci_add_subtract_io_range(
520        handle: zx_handle_t,
521        mmio: u32,
522        base: u64,
523        len: u64,
524        add: u32,
525    ) -> zx_status_t;
526
527    pub fn zx_pci_cfg_pio_rw(
528        handle: zx_handle_t,
529        bus: u8,
530        dev: u8,
531        func: u8,
532        offset: u8,
533        val: *mut u32,
534        width: usize,
535        write: u32,
536    ) -> zx_status_t;
537
538    pub fn zx_pci_config_read(
539        handle: zx_handle_t,
540        offset: u16,
541        width: usize,
542        out_val: *mut u32,
543    ) -> zx_status_t;
544
545    pub fn zx_pci_config_write(
546        handle: zx_handle_t,
547        offset: u16,
548        width: usize,
549        val: u32,
550    ) -> zx_status_t;
551
552    pub fn zx_pci_enable_bus_master(handle: zx_handle_t, enable: u32) -> zx_status_t;
553
554    pub fn zx_pci_get_bar(
555        handle: zx_handle_t,
556        bar_num: u32,
557        out_bar: *mut zx_pci_bar_t,
558        out_handle: *mut zx_handle_t,
559    ) -> zx_status_t;
560
561    pub fn zx_pci_get_nth_device(
562        handle: zx_handle_t,
563        index: u32,
564        out_info: *mut zx_pcie_device_info_t,
565        out_handle: *mut zx_handle_t,
566    ) -> zx_status_t;
567
568    pub fn zx_pci_init(
569        handle: zx_handle_t,
570        init_buf: *const zx_pci_init_arg_t,
571        len: u32,
572    ) -> zx_status_t;
573
574    pub fn zx_pci_map_interrupt(
575        handle: zx_handle_t,
576        which_irq: i32,
577        out_handle: *mut zx_handle_t,
578    ) -> zx_status_t;
579
580    pub fn zx_pci_query_irq_mode(
581        handle: zx_handle_t,
582        mode: u32,
583        out_max_irqs: *mut u32,
584    ) -> zx_status_t;
585
586    pub fn zx_pci_reset_device(handle: zx_handle_t) -> zx_status_t;
587
588    pub fn zx_pci_set_irq_mode(
589        handle: zx_handle_t,
590        mode: u32,
591        requested_irq_count: u32,
592    ) -> zx_status_t;
593
594    pub fn zx_pmt_unpin(handle: zx_handle_t) -> zx_status_t;
595
596    pub fn zx_port_cancel(handle: zx_handle_t, source: zx_handle_t, key: u64) -> zx_status_t;
597
598    pub fn zx_port_cancel_key(handle: zx_handle_t, options: u32, key: u64) -> zx_status_t;
599
600    pub fn zx_port_create(options: u32, out: *mut zx_handle_t) -> zx_status_t;
601
602    pub fn zx_port_queue(handle: zx_handle_t, packet: *const zx_port_packet_t) -> zx_status_t;
603
604    pub fn zx_port_wait(
605        handle: zx_handle_t,
606        deadline: zx_instant_mono_t,
607        packet: *mut zx_port_packet_t,
608    ) -> zx_status_t;
609
610    pub fn zx_process_create(
611        job: zx_handle_t,
612        name: *const u8,
613        name_size: usize,
614        options: u32,
615        proc_handle: *mut zx_handle_t,
616        vmar_handle: *mut zx_handle_t,
617    ) -> zx_status_t;
618
619    pub fn zx_process_create_shared(
620        shared_proc: zx_handle_t,
621        options: u32,
622        name: *const u8,
623        name_size: usize,
624        proc_handle: *mut zx_handle_t,
625        restricted_vmar_handle: *mut zx_handle_t,
626    ) -> zx_status_t;
627
628    pub fn zx_process_exit(retcode: i64);
629
630    pub fn zx_process_read_memory(
631        handle: zx_handle_t,
632        vaddr: zx_vaddr_t,
633        buffer: *mut u8,
634        buffer_size: usize,
635        actual: *mut usize,
636    ) -> zx_status_t;
637
638    pub fn zx_process_start(
639        handle: zx_handle_t,
640        thread: zx_handle_t,
641        entry: zx_vaddr_t,
642        stack: zx_vaddr_t,
643        arg1: zx_handle_t,
644        arg2: usize,
645    ) -> zx_status_t;
646
647    pub fn zx_process_write_memory(
648        handle: zx_handle_t,
649        vaddr: zx_vaddr_t,
650        buffer: *const u8,
651        buffer_size: usize,
652        actual: *mut usize,
653    ) -> zx_status_t;
654
655    pub fn zx_profile_create(
656        profile_rsrc: zx_handle_t,
657        options: u32,
658        profile: *const zx_profile_info_t,
659        out: *mut zx_handle_t,
660    ) -> zx_status_t;
661
662    pub fn zx_resource_create(
663        parent_rsrc: zx_handle_t,
664        options: u32,
665        base: u64,
666        size: usize,
667        name: *const u8,
668        name_size: usize,
669        resource_out: *mut zx_handle_t,
670    ) -> zx_status_t;
671
672    pub fn zx_restricted_bind_state(options: u32, out: *mut zx_handle_t) -> zx_status_t;
673
674    pub fn zx_restricted_enter(
675        options: u32,
676        vector_table_ptr: usize,
677        context: usize,
678    ) -> zx_status_t;
679
680    pub fn zx_restricted_kick(thread: zx_handle_t, options: u32) -> zx_status_t;
681
682    pub fn zx_restricted_unbind_state(options: u32) -> zx_status_t;
683
684    pub fn zx_sampler_attach(iobuffer: zx_handle_t, thread: zx_handle_t) -> 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_start(iobuffer: zx_handle_t) -> zx_status_t;
694
695    pub fn zx_sampler_stop(iobuffer: zx_handle_t) -> zx_status_t;
696
697    pub fn zx_smc_call(
698        handle: zx_handle_t,
699        parameters: *const zx_smc_parameters_t,
700        out_smc_result: *mut zx_smc_result_t,
701    ) -> zx_status_t;
702
703    pub fn zx_socket_create(
704        options: u32,
705        out0: *mut zx_handle_t,
706        out1: *mut zx_handle_t,
707    ) -> zx_status_t;
708
709    pub fn zx_socket_read(
710        handle: zx_handle_t,
711        options: u32,
712        buffer: *mut u8,
713        buffer_size: usize,
714        actual: *mut usize,
715    ) -> zx_status_t;
716
717    pub fn zx_socket_set_disposition(
718        handle: zx_handle_t,
719        disposition: u32,
720        disposition_peer: u32,
721    ) -> zx_status_t;
722
723    pub fn zx_socket_write(
724        handle: zx_handle_t,
725        options: u32,
726        buffer: *const u8,
727        buffer_size: usize,
728        actual: *mut usize,
729    ) -> zx_status_t;
730
731    pub fn zx_stream_create(
732        options: u32,
733        vmo: zx_handle_t,
734        seek: zx_off_t,
735        out_stream: *mut zx_handle_t,
736    ) -> zx_status_t;
737
738    pub fn zx_stream_readv(
739        handle: zx_handle_t,
740        options: u32,
741        vectors: *mut zx_iovec_t,
742        num_vectors: usize,
743        actual: *mut usize,
744    ) -> zx_status_t;
745
746    pub fn zx_stream_readv_at(
747        handle: zx_handle_t,
748        options: u32,
749        offset: zx_off_t,
750        vectors: *mut zx_iovec_t,
751        num_vectors: usize,
752        actual: *mut usize,
753    ) -> zx_status_t;
754
755    pub fn zx_stream_seek(
756        handle: zx_handle_t,
757        whence: zx_stream_seek_origin_t,
758        offset: i64,
759        out_seek: *mut zx_off_t,
760    ) -> zx_status_t;
761
762    pub fn zx_stream_writev(
763        handle: zx_handle_t,
764        options: u32,
765        vectors: *const zx_iovec_t,
766        num_vectors: usize,
767        actual: *mut usize,
768    ) -> zx_status_t;
769
770    pub fn zx_stream_writev_at(
771        handle: zx_handle_t,
772        options: u32,
773        offset: zx_off_t,
774        vectors: *const zx_iovec_t,
775        num_vectors: usize,
776        actual: *mut usize,
777    ) -> zx_status_t;
778
779    pub fn zx_syscall_next_1(arg: i32) -> zx_status_t;
780
781    pub fn zx_syscall_test_handle_create(
782        return_value: zx_status_t,
783        out: *mut zx_handle_t,
784    ) -> zx_status_t;
785
786    pub fn zx_syscall_test_widening_signed_narrow(a: i64, b: i32, c: i16, d: i8) -> i64;
787
788    pub fn zx_syscall_test_widening_signed_wide(a: i64, b: i32, c: i16, d: i8) -> i64;
789
790    pub fn zx_syscall_test_widening_unsigned_narrow(a: u64, b: u32, c: u16, d: u8) -> u64;
791
792    pub fn zx_syscall_test_widening_unsigned_wide(a: u64, b: u32, c: u16, d: u8) -> u64;
793
794    pub fn zx_syscall_test_wrapper(a: i32, b: i32, c: i32) -> zx_status_t;
795
796    pub fn zx_syscall_test_0() -> zx_status_t;
797
798    pub fn zx_syscall_test_1(a: i32) -> zx_status_t;
799
800    pub fn zx_syscall_test_2(a: i32, b: i32) -> zx_status_t;
801
802    pub fn zx_syscall_test_3(a: i32, b: i32, c: i32) -> zx_status_t;
803
804    pub fn zx_syscall_test_4(a: i32, b: i32, c: i32, d: i32) -> zx_status_t;
805
806    pub fn zx_syscall_test_5(a: i32, b: i32, c: i32, d: i32, e: i32) -> zx_status_t;
807
808    pub fn zx_syscall_test_6(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32) -> zx_status_t;
809
810    pub fn zx_syscall_test_7(a: i32, b: i32, c: i32, d: i32, e: i32, f: i32, g: i32)
811        -> zx_status_t;
812
813    pub fn zx_syscall_test_8(
814        a: i32,
815        b: i32,
816        c: i32,
817        d: i32,
818        e: i32,
819        f: i32,
820        g: i32,
821        h: i32,
822    ) -> zx_status_t;
823
824    pub fn zx_system_get_dcache_line_size() -> u32;
825
826    pub fn zx_system_get_event(
827        root_job: zx_handle_t,
828        kind: u32,
829        event: *mut zx_handle_t,
830    ) -> zx_status_t;
831
832    pub fn zx_system_get_features(kind: u32, features: *mut u32) -> zx_status_t;
833
834    pub fn zx_system_get_num_cpus() -> u32;
835
836    pub fn zx_system_get_page_size() -> u32;
837
838    pub fn zx_system_get_performance_info(
839        resource: zx_handle_t,
840        topic: u32,
841        count: usize,
842        info: *mut u8,
843        output_count: *mut usize,
844    ) -> zx_status_t;
845
846    pub fn zx_system_get_physmem() -> u64;
847
848    pub fn zx_system_get_version_string() -> zx_string_view_t;
849
850    pub fn zx_system_mexec(
851        resource: zx_handle_t,
852        kernel_vmo: zx_handle_t,
853        bootimage_vmo: zx_handle_t,
854    ) -> zx_status_t;
855
856    pub fn zx_system_mexec_payload_get(
857        resource: zx_handle_t,
858        buffer: *mut u8,
859        buffer_size: usize,
860    ) -> zx_status_t;
861
862    pub fn zx_system_powerctl(
863        resource: zx_handle_t,
864        cmd: u32,
865        arg: *const zx_system_powerctl_arg_t,
866    ) -> zx_status_t;
867
868    pub fn zx_system_set_performance_info(
869        resource: zx_handle_t,
870        topic: u32,
871        info: *const u8,
872        count: usize,
873    ) -> zx_status_t;
874
875    pub fn zx_system_set_processor_power_domain(
876        resource: zx_handle_t,
877        options: u64,
878        domain: *const zx_processor_power_domain_t,
879        port: zx_handle_t,
880        power_levels: *const zx_processor_power_level_t,
881        num_power_levels: usize,
882        transitions: *const zx_processor_power_level_transition_t,
883        num_transitions: usize,
884    ) -> zx_status_t;
885
886    pub fn zx_system_set_processor_power_state(
887        port: zx_handle_t,
888        power_state: *const zx_processor_power_state_t,
889    ) -> zx_status_t;
890
891    pub fn zx_system_suspend_enter(
892        resource: zx_handle_t,
893        resume_deadline: zx_instant_boot_t,
894    ) -> zx_status_t;
895
896    pub fn zx_system_watch_memory_stall(
897        resource: zx_handle_t,
898        kind: u32,
899        threshold: zx_duration_t,
900        window: zx_duration_t,
901        event: *mut zx_handle_t,
902    ) -> zx_status_t;
903
904    pub fn zx_task_create_exception_channel(
905        handle: zx_handle_t,
906        options: u32,
907        out: *mut zx_handle_t,
908    ) -> zx_status_t;
909
910    pub fn zx_task_kill(handle: zx_handle_t) -> zx_status_t;
911
912    pub fn zx_task_suspend(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
913
914    pub fn zx_task_suspend_token(handle: zx_handle_t, token: *mut zx_handle_t) -> zx_status_t;
915
916    pub fn zx_thread_create(
917        process: zx_handle_t,
918        name: *const u8,
919        name_size: usize,
920        options: u32,
921        out: *mut zx_handle_t,
922    ) -> zx_status_t;
923
924    pub fn zx_thread_exit();
925
926    pub fn zx_thread_legacy_yield(options: u32) -> zx_status_t;
927
928    pub fn zx_thread_raise_exception(
929        options: u32,
930        r#type: u32,
931        context: *const zx_exception_context_t,
932    ) -> zx_status_t;
933
934    pub fn zx_thread_read_state(
935        handle: zx_handle_t,
936        kind: u32,
937        buffer: *mut u8,
938        buffer_size: usize,
939    ) -> zx_status_t;
940
941    pub fn zx_thread_start(
942        handle: zx_handle_t,
943        thread_entry: zx_vaddr_t,
944        stack: zx_vaddr_t,
945        arg1: usize,
946        arg2: usize,
947    ) -> zx_status_t;
948
949    pub fn zx_thread_write_state(
950        handle: zx_handle_t,
951        kind: u32,
952        buffer: *const u8,
953        buffer_size: usize,
954    ) -> zx_status_t;
955
956    pub fn zx_ticks_get() -> zx_instant_mono_ticks_t;
957
958    pub fn zx_ticks_get_boot() -> zx_instant_boot_ticks_t;
959
960    pub fn zx_ticks_per_second() -> zx_ticks_t;
961
962    pub fn zx_timer_cancel(handle: zx_handle_t) -> zx_status_t;
963
964    pub fn zx_timer_create(
965        options: u32,
966        clock_id: zx_clock_t,
967        out: *mut zx_handle_t,
968    ) -> zx_status_t;
969
970    pub fn zx_timer_set(
971        handle: zx_handle_t,
972        deadline: zx_time_t,
973        slack: zx_duration_t,
974    ) -> zx_status_t;
975
976    pub fn zx_vcpu_create(
977        guest: zx_handle_t,
978        options: u32,
979        entry: zx_vaddr_t,
980        out: *mut zx_handle_t,
981    ) -> zx_status_t;
982
983    pub fn zx_vcpu_enter(handle: zx_handle_t, packet: *mut zx_port_packet_t) -> zx_status_t;
984
985    pub fn zx_vcpu_interrupt(handle: zx_handle_t, vector: u32) -> zx_status_t;
986
987    pub fn zx_vcpu_kick(handle: zx_handle_t) -> zx_status_t;
988
989    pub fn zx_vcpu_read_state(
990        handle: zx_handle_t,
991        kind: u32,
992        buffer: *mut u8,
993        buffer_size: usize,
994    ) -> zx_status_t;
995
996    pub fn zx_vcpu_write_state(
997        handle: zx_handle_t,
998        kind: u32,
999        buffer: *const u8,
1000        buffer_size: usize,
1001    ) -> zx_status_t;
1002
1003    pub fn zx_vmar_allocate(
1004        parent_vmar: zx_handle_t,
1005        options: zx_vm_option_t,
1006        offset: usize,
1007        size: usize,
1008        child_vmar: *mut zx_handle_t,
1009        child_addr: *mut zx_vaddr_t,
1010    ) -> zx_status_t;
1011
1012    pub fn zx_vmar_destroy(handle: zx_handle_t) -> zx_status_t;
1013
1014    pub fn zx_vmar_map(
1015        handle: zx_handle_t,
1016        options: zx_vm_option_t,
1017        vmar_offset: usize,
1018        vmo: zx_handle_t,
1019        vmo_offset: u64,
1020        len: usize,
1021        mapped_addr: *mut zx_vaddr_t,
1022    ) -> zx_status_t;
1023
1024    pub fn zx_vmar_map_clock(
1025        handle: zx_handle_t,
1026        options: zx_vm_option_t,
1027        vmar_offset: usize,
1028        clock: zx_handle_t,
1029        len: usize,
1030        mapped_addr: *mut zx_vaddr_t,
1031    ) -> zx_status_t;
1032
1033    pub fn zx_vmar_map_iob(
1034        handle: zx_handle_t,
1035        options: zx_vm_option_t,
1036        vmar_offset: usize,
1037        ep: zx_handle_t,
1038        region_index: u32,
1039        region_offset: u64,
1040        region_length: usize,
1041        mapped_addr: *mut zx_vaddr_t,
1042    ) -> zx_status_t;
1043
1044    pub fn zx_vmar_op_range(
1045        handle: zx_handle_t,
1046        op: u32,
1047        address: zx_vaddr_t,
1048        size: usize,
1049        buffer: *mut u8,
1050        buffer_size: usize,
1051    ) -> zx_status_t;
1052
1053    pub fn zx_vmar_protect(
1054        handle: zx_handle_t,
1055        options: zx_vm_option_t,
1056        addr: zx_vaddr_t,
1057        len: usize,
1058    ) -> zx_status_t;
1059
1060    pub fn zx_vmar_unmap(handle: zx_handle_t, addr: zx_vaddr_t, len: usize) -> zx_status_t;
1061
1062    pub fn zx_vmar_unmap_handle_close_thread_exit(
1063        vmar_handle: zx_handle_t,
1064        addr: zx_vaddr_t,
1065        size: usize,
1066        close_handle: zx_handle_t,
1067    ) -> zx_status_t;
1068
1069    pub fn zx_vmo_create(size: u64, options: u32, out: *mut zx_handle_t) -> zx_status_t;
1070
1071    pub fn zx_vmo_create_child(
1072        handle: zx_handle_t,
1073        options: u32,
1074        offset: u64,
1075        size: u64,
1076        out: *mut zx_handle_t,
1077    ) -> zx_status_t;
1078
1079    pub fn zx_vmo_create_contiguous(
1080        bti: zx_handle_t,
1081        size: usize,
1082        alignment_log2: u32,
1083        out: *mut zx_handle_t,
1084    ) -> zx_status_t;
1085
1086    pub fn zx_vmo_create_physical(
1087        resource: zx_handle_t,
1088        paddr: zx_paddr_t,
1089        size: usize,
1090        out: *mut zx_handle_t,
1091    ) -> zx_status_t;
1092
1093    pub fn zx_vmo_get_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1094
1095    pub fn zx_vmo_get_stream_size(handle: zx_handle_t, size: *mut u64) -> zx_status_t;
1096
1097    pub fn zx_vmo_op_range(
1098        handle: zx_handle_t,
1099        op: u32,
1100        offset: u64,
1101        size: u64,
1102        buffer: *mut u8,
1103        buffer_size: usize,
1104    ) -> zx_status_t;
1105
1106    pub fn zx_vmo_read(
1107        handle: zx_handle_t,
1108        buffer: *mut u8,
1109        offset: u64,
1110        buffer_size: usize,
1111    ) -> zx_status_t;
1112
1113    pub fn zx_vmo_replace_as_executable(
1114        handle: zx_handle_t,
1115        vmex: zx_handle_t,
1116        out: *mut zx_handle_t,
1117    ) -> zx_status_t;
1118
1119    pub fn zx_vmo_set_cache_policy(handle: zx_handle_t, cache_policy: u32) -> zx_status_t;
1120
1121    pub fn zx_vmo_set_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1122
1123    pub fn zx_vmo_set_stream_size(handle: zx_handle_t, size: u64) -> zx_status_t;
1124
1125    pub fn zx_vmo_transfer_data(
1126        dst_vmo: zx_handle_t,
1127        options: u32,
1128        offset: u64,
1129        length: u64,
1130        src_vmo: zx_handle_t,
1131        src_offset: u64,
1132    ) -> zx_status_t;
1133
1134    pub fn zx_vmo_write(
1135        handle: zx_handle_t,
1136        buffer: *const u8,
1137        offset: u64,
1138        buffer_size: usize,
1139    ) -> zx_status_t;
1140
1141}