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