esp_rom_sys/syscall/
mod.rs1#![allow(non_camel_case_types)]
2
3#[cfg_attr(
5 any(esp32, esp32s2, esp32s3, esp32c2, esp32c3, esp32c6, esp32h2),
6 path = "v1.rs"
7)]
8pub(crate) mod chip_specific;
9
10#[repr(C)]
11#[derive(Debug, Copy, Clone)]
12pub struct _reent {
13 _unused: [u8; 0],
14 }
16
17pub type clock_t = ::core::ffi::c_long;
18
19#[repr(C)]
20#[derive(Debug, Copy, Clone)]
21pub struct tms {
22 _unused: [u8; 0],
23}
24
25#[repr(C)]
26#[derive(Debug, Copy, Clone)]
27pub struct timeval {
28 _unused: [u8; 0],
29}
30
31#[repr(C)]
32#[derive(Debug, Copy, Clone)]
33pub struct stat {
34 _unused: [u8; 0],
35}
36
37#[repr(C)]
38#[derive(Debug, Copy, Clone)]
39pub struct __lock {
40 _unused: [u8; 0],
41}
42
43pub type _LOCK_T = *mut __lock;
44
45pub type _lock_t = _LOCK_T;
46
47#[repr(C)]
48#[derive(Debug, Copy, Clone)]
49pub struct _iobuf {
50 pub _placeholder: *mut ::core::ffi::c_void,
51}
52
53#[allow(clippy::upper_case_acronyms)]
54pub type FILE = _iobuf;
55
56pub type va_list = *mut ::core::ffi::c_char;
57
58static mut S_STUB_TABLE: core::mem::MaybeUninit<chip_specific::syscall_stub_table> =
59 core::mem::MaybeUninit::uninit();
60
61unsafe extern "C" fn not_implemented() {
62 panic!("Function called via syscall table is not implemented!");
63}
64
65unsafe extern "C" fn abort_wrapper() {
66 panic!("Abort called from ROM code!");
67}
68
69#[allow(clippy::missing_transmute_annotations)]
74pub unsafe fn init_syscall_table() {
75 let syscall_table = unsafe {
76 (&mut *core::ptr::addr_of_mut!(S_STUB_TABLE)).write(chip_specific::syscall_stub_table {
77 __getreent: Some(core::mem::transmute(not_implemented as usize)),
78 _malloc_r: Some(core::mem::transmute(not_implemented as usize)),
79 _free_r: Some(core::mem::transmute(not_implemented as usize)),
80 _realloc_r: Some(core::mem::transmute(not_implemented as usize)),
81 _calloc_r: Some(core::mem::transmute(not_implemented as usize)),
82 _abort: Some(abort_wrapper),
83 _system_r: Some(core::mem::transmute(not_implemented as usize)),
84 _rename_r: Some(core::mem::transmute(not_implemented as usize)),
85 _times_r: Some(core::mem::transmute(not_implemented as usize)),
86 _gettimeofday_r: Some(core::mem::transmute(not_implemented as usize)),
87 _raise_r: Some(core::mem::transmute(not_implemented as usize)),
88 _unlink_r: Some(core::mem::transmute(not_implemented as usize)),
89 _link_r: Some(core::mem::transmute(not_implemented as usize)),
90 _stat_r: Some(core::mem::transmute(not_implemented as usize)),
91 _fstat_r: Some(core::mem::transmute(not_implemented as usize)),
92 _sbrk_r: Some(core::mem::transmute(not_implemented as usize)),
93 _getpid_r: Some(core::mem::transmute(not_implemented as usize)),
94 _kill_r: Some(core::mem::transmute(not_implemented as usize)),
95 _exit_r: Some(core::mem::transmute(not_implemented as usize)),
96 _close_r: Some(core::mem::transmute(not_implemented as usize)),
97 _open_r: Some(core::mem::transmute(not_implemented as usize)),
98 _write_r: Some(core::mem::transmute(not_implemented as usize)),
99 _lseek_r: Some(core::mem::transmute(not_implemented as usize)),
100 _read_r: Some(core::mem::transmute(not_implemented as usize)),
101 _retarget_lock_init: Some(core::mem::transmute(not_implemented as usize)),
102 _retarget_lock_init_recursive: Some(core::mem::transmute(not_implemented as usize)),
103 _retarget_lock_close: Some(core::mem::transmute(not_implemented as usize)),
104 _retarget_lock_close_recursive: Some(core::mem::transmute(not_implemented as usize)),
105 _retarget_lock_acquire: Some(core::mem::transmute(not_implemented as usize)),
106 _retarget_lock_acquire_recursive: Some(core::mem::transmute(not_implemented as usize)),
107 _retarget_lock_try_acquire: Some(core::mem::transmute(not_implemented as usize)),
108 _retarget_lock_try_acquire_recursive: Some(core::mem::transmute(
109 not_implemented as usize,
110 )),
111 _retarget_lock_release: Some(core::mem::transmute(not_implemented as usize)),
112 _retarget_lock_release_recursive: Some(core::mem::transmute(not_implemented as usize)),
113 _printf_float: Some(core::mem::transmute(not_implemented as usize)),
114 _scanf_float: Some(core::mem::transmute(not_implemented as usize)),
115 __assert_func: Some(super::__assert_func),
116 __sinit: Some(core::mem::transmute(not_implemented as usize)),
117 _cleanup_r: Some(core::mem::transmute(not_implemented as usize)),
118 })
119 };
120
121 cfg_if::cfg_if! {
122 if #[cfg(esp32)] {
123 unsafe extern "C" {
124 static mut syscall_table_ptr_pro: *const chip_specific::syscall_stub_table;
125 static mut syscall_table_ptr_app: *const chip_specific::syscall_stub_table;
126 }
127 unsafe {
128 syscall_table_ptr_pro = syscall_table;
129 syscall_table_ptr_app = syscall_table;
130 }
131 } else if #[cfg(esp32s2)] {
132 unsafe extern "C" {
133 static mut syscall_table_ptr_pro: *const chip_specific::syscall_stub_table;
134 }
135 unsafe { syscall_table_ptr_pro = syscall_table; }
136 } else {
137 unsafe extern "C" {
138 static mut syscall_table_ptr: *const chip_specific::syscall_stub_table;
139 }
140 unsafe { syscall_table_ptr = syscall_table; }
141 }
142 };
143}