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