1 #ifndef RADEMBEDDEDKERNEL_H
2 #define RADEMBEDDEDKERNEL_H
17 #if defined(__cplusplus) && !defined(RADLIB_EMBEDDED_NO_CPP_WRAPPERS)
26 #define RADEK_VERSION_MAJOR 0
27 #define RADEK_VERSION_MINOR 1
28 #define RADEK_VERSION_PATCH 2
30 #define RAD_IOCTL_NONE 0u
31 #define RAD_IOCTL_WRITE 1u
32 #define RAD_IOCTL_READ 2u
33 #define RAD_IOCTL_READWRITE 3u
34 #define RAD_IOCTL(dir, type, nr, size) ((((uint32_t)(dir) & 3u) << 30) | (((uint32_t)(size) & 0x3fffu) << 16) | (((uint32_t)(type) & 0xffu) << 8) | ((uint32_t)(nr) & 0xffu))
35 #define RAD_IO(type, nr) RAD_IOCTL(RAD_IOCTL_NONE, type, nr, 0u)
36 #define RAD_IOR(type, nr, type_name) RAD_IOCTL(RAD_IOCTL_READ, type, nr, sizeof(type_name))
37 #define RAD_IOW(type, nr, type_name) RAD_IOCTL(RAD_IOCTL_WRITE, type, nr, sizeof(type_name))
38 #define RAD_IOWR(type, nr, type_name) RAD_IOCTL(RAD_IOCTL_READWRITE, type, nr, sizeof(type_name))
39 #define RAD_IOCTL_DIR(request) (((uint32_t)(request) >> 30) & 3u)
40 #define RAD_IOCTL_SIZE(request) (((uint32_t)(request) >> 16) & 0x3fffu)
41 #define RAD_IOCTL_TYPE(request) (((uint32_t)(request) >> 8) & 0xffu)
42 #define RAD_IOCTL_NR(request) ((uint32_t)(request) & 0xffu)
44 #define RAD_IOCTL_TYPE_I2C 'I'
45 #define RAD_IOCTL_TYPE_SPI 'S'
46 #define RAD_IOCTL_TYPE_AUDIO 'A'
47 #define RAD_IOCTL_TYPE_SERIAL 'T'
48 #define RAD_IOCTL_TYPE_FRAMEBUFFER 'F'
49 #define RAD_IOCTL_TYPE_INPUT 'K'
50 #define RAD_IOCTL_TYPE_BLOCK 'B'
51 #define RAD_IOCTL_TYPE_NET 'N'
53 #define RAD_DEVICE_IOCTL_I2C_TRANSFER RAD_IOWR(RAD_IOCTL_TYPE_I2C, 1u, struct rad_i2c_transfer)
54 #define RAD_DEVICE_IOCTL_SPI_TRANSFER RAD_IOWR(RAD_IOCTL_TYPE_SPI, 1u, struct rad_spi_transfer)
55 #define RAD_DEVICE_IOCTL_AUDIO_CONFIGURE RAD_IOW(RAD_IOCTL_TYPE_AUDIO, 1u, struct rad_audio_format)
56 #define RAD_DEVICE_IOCTL_SERIAL_CONFIGURE RAD_IOW(RAD_IOCTL_TYPE_SERIAL, 1u, struct rad_serial_config)
57 #define RAD_DEVICE_IOCTL_FRAMEBUFFER_INFO RAD_IOR(RAD_IOCTL_TYPE_FRAMEBUFFER, 1u, struct rad_framebuffer_info)
58 #define RAD_DEVICE_IOCTL_FRAMEBUFFER_FLUSH RAD_IOW(RAD_IOCTL_TYPE_FRAMEBUFFER, 2u, struct rad_framebuffer_rect)
59 #define RAD_DEVICE_IOCTL_BLOCK_INFO RAD_IOR(RAD_IOCTL_TYPE_BLOCK, 1u, struct rad_block_info)
60 #define RAD_DEVICE_IOCTL_BLOCK_READ RAD_IOWR(RAD_IOCTL_TYPE_BLOCK, 2u, struct rad_block_request)
61 #define RAD_DEVICE_IOCTL_BLOCK_WRITE RAD_IOWR(RAD_IOCTL_TYPE_BLOCK, 3u, struct rad_block_request)
62 #define RAD_DEVICE_IOCTL_BLOCK_FLUSH RAD_IO(RAD_IOCTL_TYPE_BLOCK, 4u)
63 #define RAD_DEVICE_IOCTL_NET_LINK_INFO RAD_IOR(RAD_IOCTL_TYPE_NET, 1u, struct rad_net_link_info)
64 #define RAD_DEVICE_IOCTL_NET_SEND RAD_IOW(RAD_IOCTL_TYPE_NET, 2u, struct rad_net_packet)
65 #define RAD_DEVICE_IOCTL_NET_POLL RAD_IO(RAD_IOCTL_TYPE_NET, 3u)
67 #define RAD_BOOT_MAX_ARGS 16u
68 #define RAD_BOOT_MAX_MEMORY_REGIONS 8u
69 #define RAD_BOOT_MAX_STRING 64u
71 #define RAD_OVERLAY_MAGIC 0x4f444152u
72 #define RAD_OVERLAY_VERSION 1u
73 #define RAD_TREE_MAX_PROPERTY_NAME 64u
74 #define RAD_TREE_MAX_PATH 96u
75 #define RAD_TREE_MAX_VALUE 96u
76 #define RAD_I2C_BUS_NAME_MAX 32u
77 #define RAD_SPI_BUS_NAME_MAX 32u
78 #define RAD_DRIVER_NAME_MAX 32u
79 #define RAD_COMPATIBLE_MAX 64u
80 #define RAD_MODULE_NAME_MAX 32u
81 #define RAD_MODULE_MAX_INFO 32u
82 #define RAD_IRQ_NAME_MAX 32u
83 #define RAD_IRQ_DOMAIN_NAME_MAX 32u
84 #define RAD_IRQ_MAX_RESOURCES 4u
85 #define RAD_FRAMEBUFFER_NAME_MAX 64u
86 #define RAD_DISPLAY_CONNECTOR_MAX 32u
87 #define RAD_FRAMEBUFFER_MAX_MODES 8u
88 #define RAD_PERF_NAME_MAX 32u
89 #define RAD_TIMER_NAME_MAX 32u
90 #define RAD_INPUT_QUEUE_NAME_MAX 64u
91 #define RAD_WAIT_FOREVER 0xffffffffu
93 #define RAD_BOOT_MEMORY_USABLE 1u
94 #define RAD_BOOT_MEMORY_RESERVED 2u
95 #define RAD_BOOT_MEMORY_PSRAM 3u
96 #define RAD_BOOT_MEMORY_MMIO 4u
154 #define RAD_WAIT_NOHANG 1u
155 #define RAD_FD_CLOEXEC 1u
156 #define RAD_FCNTL_GETFD 1u
157 #define RAD_FCNTL_SETFD 2u
158 #define RAD_FCNTL_GETFL 3u
289 #define RAD_TASK_CORE_ANY (-1)
290 #define RAD_TASK_CORE_SERVICE 0
1036 intptr_t
rad_syscall_dispatch(uintptr_t number, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5);
1174 #if defined(__cplusplus)
1177 #ifndef RADLIB_EMBEDDED_NO_CPP_WRAPPERS
1178 namespace RADEmbedded {
1197 Mutex(
const Mutex&) =
delete;
1198 Mutex& operator=(
const Mutex&) =
delete;
1208 explicit Event(
bool signaled =
false) {
rad_event_create(&handle_, signaled ? 1 : 0); }
1210 Event(
const Event&) =
delete;
1211 Event& operator=(
const Event&) =
delete;
1222 ~
File() { close(); }
1224 File& operator=(
const File&) =
delete;
1226 size_t read(
void *buffer,
size_t size) {
size_t done = 0;
rad_vfs_read(handle_, buffer, size, &done);
return done; }
1227 size_t write(
const void *buffer,
size_t size) {
size_t done = 0;
rad_vfs_write(handle_, buffer, size, &done);
return done; }
1228 void close() {
if (handle_) {
rad_vfs_close(handle_); handle_ =
nullptr; } }
Backend & backend()
Returns the installed backend or throws when none is installed.
UniqueHandle< rad_file_t, rad_vfs_close > File
Definition: rad_cpp.h:70
rad_status_t rad_vfs_read(rad_file_t file, void *buffer, size_t size, size_t *bytes_read)
rad_status_t rad_i2c_device_transfer(rad_i2c_device_t *device, const rad_i2c_transfer_t *transfer)
void rad_task_sleep_ms(uint32_t milliseconds)
rad_module_state
Definition: radekernel.h:752
@ RAD_MODULE_EXITED
Definition: radekernel.h:756
@ RAD_MODULE_REGISTERED
Definition: radekernel.h:753
@ RAD_MODULE_FAILED
Definition: radekernel.h:755
@ RAD_MODULE_INITIALIZED
Definition: radekernel.h:754
struct rad_serial_config rad_serial_config_t
rad_status_t rad_input_queue_push(rad_input_queue_t queue, const rad_input_event_t *event)
rad_status_t rad_kernel_init(const rad_kernel_config_t *config)
rad_status_t rad_vfs_mount_sd(const rad_sd_config_t *config)
struct rad_spi_device_info rad_spi_device_info_t
rad_tree_property_type
Definition: radekernel.h:425
@ RAD_TREE_PROP_U32_ARRAY
Definition: radekernel.h:429
@ RAD_TREE_PROP_STRING
Definition: radekernel.h:428
@ RAD_TREE_PROP_STRING_ARRAY
Definition: radekernel.h:430
@ RAD_TREE_PROP_BOOL
Definition: radekernel.h:426
@ RAD_TREE_PROP_U32
Definition: radekernel.h:427
rad_status_t rad_framebuffer_register(const char *name, const rad_framebuffer_info_t *info, const rad_framebuffer_ops_t *ops)
rad_status_t rad_block_info(rad_device_t device, rad_block_info_t *info)
uint64_t rad_vfs_tell(rad_file_t file)
rad_status_t rad_vfs_open(const char *path, uint32_t flags, rad_file_t *file)
struct rad_framebuffer_config rad_framebuffer_config_t
void rad_perf_counter_add(const char *name, uint64_t delta)
#define RAD_COMPATIBLE_MAX
Definition: radekernel.h:79
struct rad_spi_device rad_spi_device_t
Definition: radekernel.h:686
rad_status_t rad_irq_dispatch(uint32_t irq)
size_t rad_module_list(rad_module_info_t *modules, size_t capacity)
#define RAD_IRQ_DOMAIN_NAME_MAX
Definition: radekernel.h:83
uint32_t rad_scheduler_current_core(void)
struct rad_framebuffer_ops rad_framebuffer_ops_t
int rad_task_current_core(void)
rad_status_t rad_dma_controller_register(const rad_dma_controller_config_t *config, const rad_dma_backend_ops_t *ops)
rad_status_t rad_module_unregister(const char *name)
rad_sd_mode
Definition: radekernel.h:240
@ RAD_SD_MODE_PIO_SDIO
Definition: radekernel.h:243
@ RAD_SD_MODE_SPI
Definition: radekernel.h:242
@ RAD_SD_MODE_AUTO
Definition: radekernel.h:241
rad_program_state
Definition: radekernel.h:539
@ RAD_PROGRAM_FAILED
Definition: radekernel.h:543
@ RAD_PROGRAM_LOADED
Definition: radekernel.h:540
@ RAD_PROGRAM_FINISHED
Definition: radekernel.h:542
@ RAD_PROGRAM_RUNNING
Definition: radekernel.h:541
rad_seek_origin
Definition: radekernel.h:168
@ RAD_SEEK_CUR
Definition: radekernel.h:170
@ RAD_SEEK_SET
Definition: radekernel.h:169
@ RAD_SEEK_END
Definition: radekernel.h:171
rad_status_t rad_timer_source_register(const rad_timer_source_config_t *config, const rad_timer_source_ops_t *ops)
int32_t rad_fd_dup(int32_t fd)
struct rad_spi_controller_config rad_spi_controller_config_t
enum rad_device_type rad_device_type_t
rad_status_t rad_pty_write_master(rad_pty_t pty, const void *buffer, size_t size, size_t *bytes_written)
#define RAD_FRAMEBUFFER_NAME_MAX
Definition: radekernel.h:85
size_t rad_device_list(char names[][64], rad_device_type_t *types, size_t capacity)
void rad_spi_bus_close(rad_spi_bus_t bus)
rad_status_t rad_framebuffer_open_primary(rad_framebuffer_t *framebuffer)
struct rad_framebuffer_rect rad_framebuffer_rect_t
enum rad_process_state rad_process_state_t
rad_status_t rad_block_flush(rad_device_t device)
rad_status_t rad_spi_controller_unregister(uint32_t bus_id)
rad_status_t rad_mutex_unlock(rad_mutex_t mutex)
struct rad_ipv4_address rad_ipv4_address_t
rad_status_t rad_net_poll(rad_device_t device)
int32_t rad_process_current_pid(void)
struct rad_irq_info rad_irq_info_t
rad_status_t rad_input_device_unregister(const char *name)
rad_status_t rad_task_create(rad_task_t *task, const char *name, rad_task_entry_t entry, void *context, size_t stack_size)
rad_status_t rad_spi_transfer_device(rad_device_t device, const rad_spi_transfer_t *transfer)
rad_status_t rad_vfs_mount_host(const char *mount_point, const char *host_path)
rad_status_t rad_framebuffer_flush(rad_framebuffer_t framebuffer, const rad_framebuffer_rect_t *rect)
rad_status_t rad_tree_get_property_u32(rad_tree_node_t node, const char *name, uint32_t *value)
struct rad_net_link_info rad_net_link_info_t
int32_t rad_process_fork(void)
rad_task_state
Definition: radekernel.h:292
@ RAD_TASK_BLOCKED
Definition: radekernel.h:297
@ RAD_TASK_DETACHED
Definition: radekernel.h:299
@ RAD_TASK_SLEEPING
Definition: radekernel.h:296
@ RAD_TASK_RUNNING
Definition: radekernel.h:295
@ RAD_TASK_FINISHED
Definition: radekernel.h:298
@ RAD_TASK_NEW
Definition: radekernel.h:293
@ RAD_TASK_READY
Definition: radekernel.h:294
enum rad_vfs_open_flags rad_vfs_open_flags_t
rad_status_t rad_framebuffer_register_ex(const rad_framebuffer_config_t *config, const rad_framebuffer_ops_t *ops)
struct rad_vfs_stat rad_vfs_stat_t
struct rad_irq_domain_handle * rad_irq_domain_t
Definition: radekernel.h:774
struct rad_device_handle * rad_device_t
Definition: radekernel.h:881
struct rad_pty_handle * rad_pty_t
Definition: radekernel.h:884
rad_tree_node_t rad_tree_find(const char *path)
struct rad_process_info rad_process_info_t
rad_status_t rad_terminal_register_command(const char *name, const char *description, rad_terminal_handler_t handler, void *context)
void rad_sleep_us(uint32_t microseconds)
int32_t rad_fd_fstat(int32_t fd, rad_vfs_stat_t *stat)
struct rad_file_handle * rad_file_t
Definition: radekernel.h:879
rad_status_t rad_scheduler_info_get(rad_scheduler_info_t *info)
int32_t rad_process_waitpid(int32_t pid, int32_t *status, uint32_t options)
struct rad_input_event rad_input_event_t
rad_status_t rad_spi_device_get_irq(const rad_spi_device_t *device, size_t index, rad_irq_resource_t *resource)
struct rad_wait_queue_handle * rad_wait_queue_t
Definition: radekernel.h:877
struct rad_module_info rad_module_info_t
#define RAD_TIMER_NAME_MAX
Definition: radekernel.h:89
rad_status_t rad_cpu_interrupts_disable(void)
rad_status_t rad_wait_queue_create(rad_wait_queue_t *queue)
struct rad_dma_backend_ops rad_dma_backend_ops_t
rad_status_t rad_pty_slave_name(rad_pty_t pty, char *buffer, size_t size)
int(* rad_vfs_list_callback_t)(const char *name, const rad_vfs_stat_t *stat, void *context)
Definition: radekernel.h:521
struct rad_mutex_handle * rad_mutex_t
Definition: radekernel.h:875
rad_status_t rad_spi_driver_unregister(const char *name)
rad_status_t rad_spi_controller_register(const rad_spi_controller_config_t *config, const rad_spi_controller_ops_t *ops)
struct rad_mac_address rad_mac_address_t
rad_status_t rad_input_read_event(rad_device_t device, rad_input_event_t *event)
rad_status_t rad_vfs_seek(rad_file_t file, int64_t offset, rad_seek_origin_t origin)
void(* rad_work_handler_t)(void *context)
Definition: radekernel.h:872
struct rad_dma_channel_info rad_dma_channel_info_t
struct rad_i2c_transfer rad_i2c_transfer_t
struct rad_framebuffer_handle * rad_framebuffer_t
Definition: radekernel.h:612
rad_status_t rad_kernel_run(void)
rad_status_t rad_event_create(rad_event_t *event, int initially_signaled)
#define RAD_PERF_NAME_MAX
Definition: radekernel.h:88
struct rad_i2c_controller_ops rad_i2c_controller_ops_t
rad_pixel_format
Definition: radekernel.h:235
@ RAD_PIXEL_FORMAT_XRGB8888
Definition: radekernel.h:237
@ RAD_PIXEL_FORMAT_RGB565
Definition: radekernel.h:236
struct rad_dir_handle * rad_dir_t
Definition: radekernel.h:880
void rad_i2c_bus_close(rad_i2c_bus_t bus)
void rad_i2c_device_close(rad_i2c_device_t *device)
void rad_dma_channel_release(rad_dma_channel_t channel)
enum rad_program_state rad_program_state_t
rad_status_t rad_tty_open(const char *name, rad_tty_t *tty)
void rad_sleep_ms(uint32_t milliseconds)
rad_status_t rad_irq_domain_register(const rad_irq_domain_config_t *config, rad_irq_domain_t *domain)
void rad_debug_marker(const char *marker)
rad_status_t rad_cpu_interrupts_enable(void)
rad_status_t rad_tty_set_window_size(rad_tty_t tty, const rad_tty_window_size_t *size)
size_t rad_irq_list(rad_irq_info_t *irqs, size_t capacity)
rad_status_t rad_tty_push_input(rad_tty_t tty, const void *buffer, size_t size, size_t *bytes_consumed)
size_t rad_framebuffer_list_ex(rad_framebuffer_display_info_t *framebuffers, size_t capacity)
int32_t rad_process_reap(int32_t pid, int32_t *status)
rad_status_t rad_dma_cancel(rad_dma_channel_t channel)
rad_status_t rad_dma_channel_request(rad_dma_request_id_t request_id, rad_dma_channel_t *channel)
enum rad_seek_origin rad_seek_origin_t
struct rad_timer_source_info rad_timer_source_info_t
intptr_t rad_syscall_dispatch(uintptr_t number, uintptr_t arg0, uintptr_t arg1, uintptr_t arg2, uintptr_t arg3, uintptr_t arg4, uintptr_t arg5)
int32_t rad_fd_close(int32_t fd)
rad_status_t rad_core_info_get(rad_core_info_t *info)
struct rad_spi_bus_handle * rad_spi_bus_t
Definition: radekernel.h:685
enum rad_task_state rad_task_state_t
rad_status_t rad_i2c_driver_register(const rad_i2c_driver_t *driver)
int32_t rad_process_create(const char *path, int32_t parent_pid)
rad_dma_request_id
Definition: radekernel.h:258
@ RAD_DMA_DREQ_SPI1_TX
Definition: radekernel.h:262
@ RAD_DMA_DREQ_NONE
Definition: radekernel.h:259
@ RAD_DMA_DREQ_SPI1_RX
Definition: radekernel.h:263
@ RAD_DMA_DREQ_SPI0_TX
Definition: radekernel.h:260
@ RAD_DMA_DREQ_SPI0_RX
Definition: radekernel.h:261
@ RAD_DMA_DREQ_RP2350_HSTX_TX
Definition: radekernel.h:264
rad_status_t rad_pty_resize(rad_pty_t pty, const rad_tty_window_size_t *size)
void rad_spi_device_close(rad_spi_device_t *device)
void rad_input_queue_destroy(rad_input_queue_t queue)
rad_status_t rad_net_send(rad_device_t device, const void *data, size_t length)
void rad_process_exit(int32_t status)
rad_status_t rad_framebuffer_unregister(const char *name)
rad_status_t rad_process_attach_task(int32_t pid, rad_task_t task)
enum rad_display_output_type rad_display_output_type_t
rad_status_t rad_mutex_create(rad_mutex_t *mutex)
rad_status_t rad_i2c_controller_register(const rad_i2c_controller_config_t *config, const rad_i2c_controller_ops_t *ops)
void rad_memory_get_stats(rad_memory_stats_t *stats)
rad_status_t rad_vfs_readdir(rad_dir_t dir, rad_vfs_dirent_t *entry)
rad_status_t rad_module_register(const rad_module_descriptor_t *descriptor)
int32_t rad_pipe_create(int32_t pipefd[2])
struct rad_net_packet rad_net_packet_t
rad_input_pointer_button_flags
Definition: radekernel.h:229
@ RAD_INPUT_POINTER_BUTTON_MIDDLE
Definition: radekernel.h:232
@ RAD_INPUT_POINTER_BUTTON_RIGHT
Definition: radekernel.h:231
@ RAD_INPUT_POINTER_BUTTON_LEFT
Definition: radekernel.h:230
rad_status_t rad_spi_device_transfer(rad_spi_device_t *device, const rad_spi_transfer_t *transfer)
size_t rad_program_list(rad_program_info_t *programs, size_t capacity)
rad_status_t rad_vfs_list(const char *path, rad_vfs_list_callback_t callback, void *context)
#define RAD_IRQ_MAX_RESOURCES
Definition: radekernel.h:84
size_t rad_i2c_device_irq_count(const rad_i2c_device_t *device)
rad_status_t rad_boot_info_set(const rad_boot_info_t *boot_info)
rad_status_t rad_device_write(rad_device_t device, const void *buffer, size_t size, size_t *bytes_written)
rad_status_t rad_vfs_rename(const char *old_path, const char *new_path)
struct rad_audio_format rad_audio_format_t
rad_status_t rad_i2c_transfer(rad_i2c_bus_t bus, const rad_i2c_transfer_t *transfer)
rad_status_t rad_tree_get_property_bool(rad_tree_node_t node, const char *name, int *value)
rad_status_t rad_vfs_opendir(const char *path, rad_dir_t *dir)
rad_status_t rad_overlay_load_file(const char *path)
int rad_printk(const char *format,...)
struct rad_boot_arg rad_boot_arg_t
struct rad_block_info rad_block_info_t
rad_status_t rad_block_open(const char *name, rad_device_t *device)
intptr_t rad_fd_read(int32_t fd, void *buffer, size_t size)
rad_status_t rad_vfs_mkdir(const char *path)
struct rad_tree_node_handle * rad_tree_node_t
Definition: radekernel.h:433
rad_status_t rad_pty_open_pair(const char *name, rad_pty_t *pty)
struct rad_tree_node_info rad_tree_node_info_t
void rad_task_detach(rad_task_t task)
rad_status_t rad_timer_source_unregister(const char *name)
enum rad_spi_transfer_mode rad_spi_transfer_mode_t
rad_status_t rad_irq_resource_enable(const rad_irq_resource_t *resource)
int64_t rad_fd_lseek(int32_t fd, int64_t offset, rad_seek_origin_t origin)
rad_posix_syscall
Definition: radekernel.h:110
@ RAD_SYSCALL_CLOSE
Definition: radekernel.h:114
@ RAD_SYSCALL_FCNTL
Definition: radekernel.h:133
@ RAD_SYSCALL_EXECVE
Definition: radekernel.h:123
@ RAD_SYSCALL_SHUTDOWN
Definition: radekernel.h:143
@ RAD_SYSCALL_FSTAT
Definition: radekernel.h:118
@ RAD_SYSCALL_WRITE
Definition: radekernel.h:112
@ RAD_SYSCALL_GETCWD
Definition: radekernel.h:130
@ RAD_SYSCALL_OPEN
Definition: radekernel.h:113
@ RAD_SYSCALL_LSEEK
Definition: radekernel.h:116
@ RAD_SYSCALL_WAITPID
Definition: radekernel.h:124
@ RAD_SYSCALL_DUP
Definition: radekernel.h:127
@ RAD_SYSCALL_PIPE
Definition: radekernel.h:132
@ RAD_SYSCALL_BRK
Definition: radekernel.h:131
@ RAD_SYSCALL_IOCTL
Definition: radekernel.h:115
@ RAD_SYSCALL_LISTEN
Definition: radekernel.h:139
@ RAD_SYSCALL_GETPID
Definition: radekernel.h:125
@ RAD_SYSCALL_CONNECT
Definition: radekernel.h:138
@ RAD_SYSCALL_SOCKET
Definition: radekernel.h:136
@ RAD_SYSCALL_SENDTO
Definition: radekernel.h:141
@ RAD_SYSCALL_DUP2
Definition: radekernel.h:128
@ RAD_SYSCALL_ISATTY
Definition: radekernel.h:135
@ RAD_SYSCALL_RECVFROM
Definition: radekernel.h:142
@ RAD_SYSCALL_GETSOCKOPT
Definition: radekernel.h:145
@ RAD_SYSCALL_NANOSLEEP
Definition: radekernel.h:120
@ RAD_SYSCALL_ACCESS
Definition: radekernel.h:134
@ RAD_SYSCALL_STAT
Definition: radekernel.h:117
@ RAD_SYSCALL_GETTIMEOFDAY
Definition: radekernel.h:119
@ RAD_SYSCALL_ACCEPT
Definition: radekernel.h:140
@ RAD_SYSCALL_SETSOCKOPT
Definition: radekernel.h:144
@ RAD_SYSCALL_BIND
Definition: radekernel.h:137
@ RAD_SYSCALL_FORK
Definition: radekernel.h:122
@ RAD_SYSCALL_EXIT
Definition: radekernel.h:121
@ RAD_SYSCALL_READ
Definition: radekernel.h:111
@ RAD_SYSCALL_CHDIR
Definition: radekernel.h:129
@ RAD_SYSCALL_GETPPID
Definition: radekernel.h:126
rad_status_t rad_device_register(const char *name, rad_device_type_t type, const rad_device_ops_t *ops)
rad_status_t rad_vfs_remove(const char *path)
rad_status_t rad_tty_set_output_callback(rad_tty_t tty, rad_tty_output_t output, void *context)
rad_status_t rad_terminal_poll_tty(rad_tty_t tty)
enum rad_dma_transfer_type rad_dma_transfer_type_t
rad_status_t rad_vfs_chdir(const char *path)
rad_tty_mode_flags
Definition: radekernel.h:275
@ RAD_TTY_MODE_CANONICAL
Definition: radekernel.h:276
@ RAD_TTY_MODE_CRLF
Definition: radekernel.h:278
@ RAD_TTY_MODE_ECHO
Definition: radekernel.h:277
void(* rad_tty_output_t)(const void *data, size_t size, void *context)
Definition: radekernel.h:870
rad_status_t rad_mutex_lock(rad_mutex_t mutex)
int32_t rad_process_execve(const char *path, const char *const argv[])
rad_status_t rad_device_ioctl(rad_device_t device, uint32_t request, void *argument)
rad_status_t rad_spi_driver_register(const rad_spi_driver_t *driver)
rad_status_t rad_net_open(const char *name, rad_device_t *device)
struct rad_dma_transfer rad_dma_transfer_t
void rad_program_unload(rad_program_t program)
struct rad_i2c_device_info rad_i2c_device_info_t
size_t rad_irq_resolve_tree(rad_tree_node_t node, rad_irq_resource_t *resources, size_t capacity)
struct rad_framebuffer_info rad_framebuffer_info_t
rad_status_t rad_pty_write_slave(rad_pty_t pty, const void *buffer, size_t size, size_t *bytes_written)
rad_status_t rad_input_device_register(const char *name, const rad_device_ops_t *ops)
#define RAD_DISPLAY_CONNECTOR_MAX
Definition: radekernel.h:86
struct rad_overlay_info rad_overlay_info_t
int32_t rad_fd_stat(const char *path, rad_vfs_stat_t *stat)
int rad_kernel_is_initialized(void)
intptr_t rad_fd_write(int32_t fd, const void *buffer, size_t size)
uint32_t rad_scheduler_online_core_mask(void)
rad_status_t rad_i2c_bind_tree(void)
rad_status_t rad_vfs_rmdir(const char *path)
#define RAD_TREE_MAX_PATH
Definition: radekernel.h:74
#define RAD_MODULE_NAME_MAX
Definition: radekernel.h:80
rad_dma_transfer_type
Definition: radekernel.h:252
@ RAD_DMA_MEMORY_TO_DEVICE
Definition: radekernel.h:254
@ RAD_DMA_MEMORY_TO_MEMORY
Definition: radekernel.h:253
@ RAD_DMA_DEVICE_TO_MEMORY
Definition: radekernel.h:255
rad_status_t rad_terminal_poll_attached(void)
size_t rad_driver_list(rad_driver_info_t *drivers, size_t capacity)
int32_t rad_process_parent_pid(void)
rad_status_t(* rad_terminal_handler_t)(int argc, const char **argv, rad_terminal_write_t write, void *write_context, void *command_context)
Definition: radekernel.h:869
rad_status_t rad_wait_queue_wait(rad_wait_queue_t queue, uint32_t timeout_ms)
rad_status_t rad_overlay_load_memory(const void *data, size_t size)
rad_status_t rad_block_device_register(const char *name, const rad_device_ops_t *ops)
#define RAD_TREE_MAX_PROPERTY_NAME
Definition: radekernel.h:73
rad_status_t rad_i2c_driver_unregister(const char *name)
void rad_scheduler_set_preemption_enabled(int enabled)
rad_status_t rad_irq_disable(uint32_t irq)
rad_status_t rad_kernel_poll(void)
struct rad_i2c_driver rad_i2c_driver_t
rad_input_event_type
Definition: radekernel.h:188
@ RAD_INPUT_EVENT_POINTER_SCROLL
Definition: radekernel.h:193
@ RAD_INPUT_EVENT_POINTER_BUTTON
Definition: radekernel.h:192
@ RAD_INPUT_EVENT_POINTER_MOTION
Definition: radekernel.h:191
@ RAD_INPUT_EVENT_NONE
Definition: radekernel.h:189
@ RAD_INPUT_EVENT_KEY
Definition: radekernel.h:190
rad_status_t rad_framebuffer_get_display_info(rad_framebuffer_t framebuffer, rad_framebuffer_display_info_t *info)
enum rad_tree_property_type rad_tree_property_type_t
size_t rad_dma_list_channels(rad_dma_channel_info_t *channels, size_t capacity)
int32_t rad_fd_dup2(int32_t old_fd, int32_t new_fd)
enum rad_input_key rad_input_key_t
struct rad_task_config rad_task_config_t
void rad_device_close(rad_device_t device)
struct rad_task_handle * rad_task_t
Definition: radekernel.h:874
struct rad_irq_resource rad_irq_resource_t
rad_status_t rad_framebuffer_draw_text(rad_framebuffer_t framebuffer, uint32_t cell_x, uint32_t cell_y, const char *text, uint32_t foreground, uint32_t background)
rad_status_t rad_input_queue_read(rad_input_queue_t queue, rad_input_event_t *events, size_t capacity, uint32_t timeout_ms, size_t *count)
rad_status_t rad_event_wait(rad_event_t event, uint32_t timeout_ms)
enum rad_irq_trigger rad_irq_trigger_t
rad_status_t rad_framebuffer_set_primary(const char *name)
rad_status_t rad_framebuffer_blank(rad_framebuffer_t framebuffer, int blanked)
int32_t rad_fd_fcntl(int32_t fd, uint32_t command, uintptr_t argument)
rad_status_t rad_tty_get_window_size(rad_tty_t tty, rad_tty_window_size_t *size)
rad_status_t rad_vfs_getcwd(char *buffer, size_t size)
rad_status_t rad_irq_enable(uint32_t irq)
void rad_tty_close(rad_tty_t tty)
rad_device_type
Definition: radekernel.h:174
@ RAD_DEVICE_PTY
Definition: radekernel.h:182
@ RAD_DEVICE_FRAMEBUFFER
Definition: radekernel.h:180
@ RAD_DEVICE_BLOCK
Definition: radekernel.h:184
@ RAD_DEVICE_SPI
Definition: radekernel.h:177
@ RAD_DEVICE_AUDIO
Definition: radekernel.h:178
@ RAD_DEVICE_TTY
Definition: radekernel.h:181
@ RAD_DEVICE_NETWORK
Definition: radekernel.h:185
@ RAD_DEVICE_INPUT
Definition: radekernel.h:183
@ RAD_DEVICE_I2C
Definition: radekernel.h:176
@ RAD_DEVICE_SERIAL
Definition: radekernel.h:179
@ RAD_DEVICE_GENERIC
Definition: radekernel.h:175
void rad_kernel_request_shutdown(void)
rad_status_t rad_dma_submit(rad_dma_channel_t channel, const rad_dma_transfer_t *transfer)
rad_status
Definition: radekernel.h:98
@ RAD_STATUS_NOT_INITIALIZED
Definition: radekernel.h:107
@ RAD_STATUS_ERROR
Definition: radekernel.h:100
@ RAD_STATUS_NO_MEMORY
Definition: radekernel.h:103
@ RAD_STATUS_NOT_SUPPORTED
Definition: radekernel.h:105
@ RAD_STATUS_NOT_FOUND
Definition: radekernel.h:102
@ RAD_STATUS_ALREADY_EXISTS
Definition: radekernel.h:106
@ RAD_STATUS_INVALID_ARGUMENT
Definition: radekernel.h:101
@ RAD_STATUS_TIMEOUT
Definition: radekernel.h:104
@ RAD_STATUS_OK
Definition: radekernel.h:99
uint64_t rad_time_micros(void)
uint64_t rad_time_millis(void)
rad_status_t rad_event_signal(rad_event_t event)
const char * rad_kernel_version_string(void)
void rad_pty_close(rad_pty_t pty)
void rad_framebuffer_close(rad_framebuffer_t framebuffer)
rad_status_t rad_tty_write(rad_tty_t tty, const void *buffer, size_t size, size_t *bytes_written)
struct rad_dma_channel_handle * rad_dma_channel_t
Definition: radekernel.h:688
rad_status_t rad_input_open(const char *name, rad_device_t *device)
void rad_timer_tick(uint64_t elapsed_micros)
size_t rad_terminal_command_count(void)
size_t rad_framebuffer_list(rad_framebuffer_info_t *framebuffers, char names[][64], size_t capacity)
struct rad_driver_info rad_driver_info_t
rad_status_t rad_terminal_attach_device(const char *device_name)
enum rad_posix_syscall rad_posix_syscall_t
#define RAD_BOOT_MAX_ARGS
Definition: radekernel.h:67
struct rad_module_descriptor rad_module_descriptor_t
rad_status_t rad_vfs_stat(const char *path, rad_vfs_stat_t *stat)
size_t rad_spi_device_irq_count(const rad_spi_device_t *device)
struct rad_timer_source_config rad_timer_source_config_t
rad_spi_transfer_mode
Definition: radekernel.h:246
@ RAD_SPI_TRANSFER_MODE_PIO
Definition: radekernel.h:248
@ RAD_SPI_TRANSFER_MODE_DMA
Definition: radekernel.h:249
@ RAD_SPI_TRANSFER_MODE_AUTO
Definition: radekernel.h:247
void(* rad_terminal_write_t)(const char *text, void *context)
Definition: radekernel.h:868
rad_status_t rad_overlay_apply_boot(void)
rad_irq_trigger
Definition: radekernel.h:281
@ RAD_IRQ_TRIGGER_NONE
Definition: radekernel.h:282
@ RAD_IRQ_TRIGGER_EDGE_FALLING
Definition: radekernel.h:284
@ RAD_IRQ_TRIGGER_LEVEL_LOW
Definition: radekernel.h:286
@ RAD_IRQ_TRIGGER_LEVEL_HIGH
Definition: radekernel.h:285
@ RAD_IRQ_TRIGGER_EDGE_RISING
Definition: radekernel.h:283
rad_status_t rad_i2c_transfer_device(rad_device_t device, const rad_i2c_transfer_t *transfer)
rad_status_t rad_wait_queue_wake_one(rad_wait_queue_t queue)
rad_status_t rad_input_device_register_queue(const char *name, rad_input_queue_t queue)
void rad_cpu_halt_forever(void)
struct rad_block_request rad_block_request_t
int rad_cpu_interrupts_enabled(void)
rad_status_t rad_event_reset(rad_event_t event)
int32_t rad_fd_ioctl(int32_t fd, uint32_t request, void *argument)
enum rad_input_pointer_button_flags rad_input_pointer_button_flags_t
struct rad_process_arch_ops rad_process_arch_ops_t
rad_status_t rad_process_arch_register(const rad_process_arch_ops_t *ops)
rad_status_t rad_framebuffer_get_vsync_counter(rad_framebuffer_t framebuffer, uint64_t *counter)
enum rad_sd_mode rad_sd_mode_t
enum rad_input_modifier_flags rad_input_modifier_flags_t
rad_status_t rad_irq_register(uint32_t irq, const char *name, rad_irq_handler_t handler, void *context)
int rad_vprintk(const char *format, va_list args)
void rad_event_destroy(rad_event_t event)
rad_status_t rad_spi_transfer(rad_spi_bus_t bus, const rad_spi_transfer_t *transfer)
rad_status_t rad_spi_device_open(uint32_t bus_id, uint8_t cs, rad_spi_device_t **device)
void rad_vfs_closedir(rad_dir_t dir)
void * rad_memory_alloc(size_t size)
rad_status_t rad_pty_read_master(rad_pty_t pty, void *buffer, size_t size, size_t *bytes_read)
void rad_task_yield(void)
rad_status_t rad_audio_configure(rad_device_t device, const rad_audio_format_t *format)
uint64_t rad_task_current_id(void)
void rad_scheduler_yield_from_irq(void)
rad_status_t rad_block_read(rad_device_t device, uint64_t sector, uint32_t sector_count, void *buffer)
size_t rad_spi_list_devices(rad_spi_device_info_t *devices, size_t capacity)
size_t rad_tree_list(rad_tree_node_info_t *nodes, size_t capacity)
rad_status_t rad_irq_unregister(uint32_t irq)
size_t rad_process_list(rad_process_info_t *processes, size_t capacity)
struct rad_timer_source_ops rad_timer_source_ops_t
rad_status_t rad_program_spawn(rad_program_t program, int argc, const char **argv, rad_task_t *task)
rad_status_t rad_process_mark_exec(int32_t pid, const char *path)
struct rad_posix_timeval rad_posix_timeval_t
void rad_wait_queue_destroy(rad_wait_queue_t queue)
size_t rad_task_list(rad_task_info_t *tasks, size_t capacity)
size_t rad_tree_get_property_u32_array(rad_tree_node_t node, const char *name, uint32_t *values, size_t capacity)
rad_process_state
Definition: radekernel.h:148
@ RAD_PROCESS_WAITING
Definition: radekernel.h:150
@ RAD_PROCESS_RUNNING
Definition: radekernel.h:149
@ RAD_PROCESS_ZOMBIE
Definition: radekernel.h:151
struct rad_display_mode rad_display_mode_t
struct rad_core_info rad_core_info_t
rad_status_t rad_device_unregister(const char *name)
struct rad_dma_controller_config rad_dma_controller_config_t
size_t rad_overlay_list(rad_overlay_info_t *overlays, size_t capacity)
rad_status_t rad_block_write(rad_device_t device, uint64_t sector, uint32_t sector_count, const void *buffer)
rad_status_t rad_work_submit(const char *name, rad_work_handler_t handler, void *context)
rad_status_t rad_framebuffer_clear(rad_framebuffer_t framebuffer, uint32_t color)
struct rad_memory_stats rad_memory_stats_t
void(* rad_task_entry_t)(void *context)
Definition: radekernel.h:867
rad_status_t rad_vfs_write(rad_file_t file, const void *buffer, size_t size, size_t *bytes_written)
enum rad_module_state rad_module_state_t
struct rad_boot_info rad_boot_info_t
struct rad_i2c_device rad_i2c_device_t
Definition: radekernel.h:648
rad_status_t rad_timer_schedule_oneshot(uint64_t delay_micros)
#define RAD_FRAMEBUFFER_MAX_MODES
Definition: radekernel.h:87
rad_status_t rad_framebuffer_get_info(rad_framebuffer_t framebuffer, rad_framebuffer_info_t *info)
struct rad_vfs_backend_ops rad_vfs_backend_ops_t
#define RAD_BOOT_MAX_STRING
Definition: radekernel.h:69
enum rad_dma_request_id rad_dma_request_id_t
int rad_kernel_is_shutdown_requested(void)
#define RAD_BOOT_MAX_MEMORY_REGIONS
Definition: radekernel.h:68
rad_status_t rad_framebuffer_open(const char *name, rad_framebuffer_t *framebuffer)
rad_status_t rad_serial_configure(rad_device_t device, const rad_serial_config_t *config)
rad_status_t rad_irq_resource_disable(const rad_irq_resource_t *resource)
rad_status_t rad_irq_resource_register_handler(const rad_irq_resource_t *resource, const char *name, rad_irq_handler_t handler, void *context)
struct rad_tty_handle * rad_tty_t
Definition: radekernel.h:883
rad_status_t rad_i2c_device_get_irq(const rad_i2c_device_t *device, size_t index, rad_irq_resource_t *resource)
rad_status_t rad_pty_read_slave(rad_pty_t pty, void *buffer, size_t size, size_t *bytes_read)
rad_status_t rad_input_queue_create(const char *name, size_t capacity, rad_input_queue_t *queue)
rad_status_t rad_timer_cancel_oneshot(void)
struct rad_program_handle * rad_program_t
Definition: radekernel.h:882
rad_status_t rad_tty_set_mode(rad_tty_t tty, uint32_t mode)
rad_status_t rad_dma_wait(rad_dma_channel_t channel, uint32_t timeout_ms)
rad_status_t rad_i2c_bus_open(uint32_t bus_id, rad_i2c_bus_t *bus)
const char * rad_kernel_backend_name(void)
rad_status_t rad_irq_domain_unregister(const char *tree_path)
struct rad_task_info rad_task_info_t
rad_status_t rad_vfs_unmount(const char *mount_point)
rad_scheduler_mode
Definition: radekernel.h:401
@ RAD_SCHEDULER_COOPERATIVE
Definition: radekernel.h:402
@ RAD_SCHEDULER_PREEMPTIVE
Definition: radekernel.h:403
int rad_early_printk(const char *format,...)
struct rad_sd_config rad_sd_config_t
int32_t rad_fd_open(const char *path, uint32_t flags)
struct rad_perf_counter_info rad_perf_counter_info_t
void rad_process_set_current_pid(int32_t pid)
struct rad_input_queue_handle * rad_input_queue_t
Definition: radekernel.h:878
rad_status_t rad_dma_controller_unregister(const char *name)
rad_input_key
Definition: radekernel.h:196
@ RAD_INPUT_KEY_UNKNOWN
Definition: radekernel.h:197
@ RAD_INPUT_KEY_UP
Definition: radekernel.h:202
@ RAD_INPUT_KEY_RIGHT_SHIFT
Definition: radekernel.h:213
@ RAD_INPUT_KEY_LEFT_ALT
Definition: radekernel.h:216
@ RAD_INPUT_KEY_RIGHT_CTRL
Definition: radekernel.h:215
@ RAD_INPUT_KEY_END
Definition: radekernel.h:207
@ RAD_INPUT_KEY_TAB
Definition: radekernel.h:201
@ RAD_INPUT_KEY_PAGE_UP
Definition: radekernel.h:208
@ RAD_INPUT_KEY_BACKSPACE
Definition: radekernel.h:200
@ RAD_INPUT_KEY_LEFT_CTRL
Definition: radekernel.h:214
@ RAD_INPUT_KEY_RIGHT_ALT
Definition: radekernel.h:217
@ RAD_INPUT_KEY_ENTER
Definition: radekernel.h:199
@ RAD_INPUT_KEY_INSERT
Definition: radekernel.h:210
@ RAD_INPUT_KEY_DELETE
Definition: radekernel.h:211
@ RAD_INPUT_KEY_ESCAPE
Definition: radekernel.h:198
@ RAD_INPUT_KEY_RIGHT
Definition: radekernel.h:205
@ RAD_INPUT_KEY_DOWN
Definition: radekernel.h:203
@ RAD_INPUT_KEY_LEFT
Definition: radekernel.h:204
@ RAD_INPUT_KEY_HOME
Definition: radekernel.h:206
@ RAD_INPUT_KEY_PAGE_DOWN
Definition: radekernel.h:209
@ RAD_INPUT_KEY_LEFT_SHIFT
Definition: radekernel.h:212
@ RAD_INPUT_KEY_CAPS_LOCK
Definition: radekernel.h:218
void(* rad_irq_handler_t)(uint32_t irq, void *context)
Definition: radekernel.h:871
#define RAD_IRQ_NAME_MAX
Definition: radekernel.h:82
int rad_early_vprintk(const char *format, va_list args)
rad_status_t rad_process_clone_fds(int32_t parent_pid, int32_t child_pid)
rad_status_t rad_tree_get_property_string(rad_tree_node_t node, const char *name, char *buffer, size_t size)
rad_status_t rad_wait_queue_wake_all(rad_wait_queue_t queue)
struct rad_scheduler_info rad_scheduler_info_t
struct rad_event_handle * rad_event_t
Definition: radekernel.h:876
rad_status_t rad_irq_domain_find(const char *tree_path, rad_irq_domain_t *domain)
rad_status_t rad_i2c_controller_unregister(uint32_t bus_id)
void rad_task_sleep_us(uint32_t microseconds)
int32_t rad_process_fork_from_arch_frame(void *trap_frame)
rad_vfs_open_flags
Definition: radekernel.h:160
@ RAD_VFS_READ
Definition: radekernel.h:161
@ RAD_VFS_WRITE
Definition: radekernel.h:162
@ RAD_VFS_CREATE
Definition: radekernel.h:163
@ RAD_VFS_APPEND
Definition: radekernel.h:165
@ RAD_VFS_TRUNCATE
Definition: radekernel.h:164
rad_status_t rad_net_device_register(const char *name, const rad_device_ops_t *ops)
rad_status_t rad_task_create_config(rad_task_t *task, const rad_task_config_t *config, rad_task_entry_t entry, void *context)
rad_status_t rad_tty_read(rad_tty_t tty, void *buffer, size_t size, size_t *bytes_read)
rad_status_t rad_terminal_execute(const char *line, rad_terminal_write_t write, void *write_context)
void rad_mutex_destroy(rad_mutex_t mutex)
rad_display_output_type
Definition: radekernel.h:267
@ RAD_DISPLAY_OUTPUT_GRUB
Definition: radekernel.h:270
@ RAD_DISPLAY_OUTPUT_SPI_PANEL
Definition: radekernel.h:272
@ RAD_DISPLAY_OUTPUT_MEMORY
Definition: radekernel.h:268
@ RAD_DISPLAY_OUTPUT_CIRCLE
Definition: radekernel.h:269
@ RAD_DISPLAY_OUTPUT_RP2350_HSTX
Definition: radekernel.h:271
struct rad_kernel_config rad_kernel_config_t
rad_status_t rad_net_link_info(rad_device_t device, rad_net_link_info_t *info)
enum rad_status rad_status_t
rad_status_t rad_work_poll(size_t budget, size_t *ran)
rad_status_t rad_device_open(const char *name, rad_device_t *device)
void rad_vfs_close(rad_file_t file)
enum rad_input_event_type rad_input_event_type_t
uint64_t rad_perf_now_cycles(void)
rad_status_t rad_program_load(const char *path, rad_program_t *program)
rad_status_t rad_device_read(rad_device_t device, void *buffer, size_t size, size_t *bytes_read)
rad_status_t rad_framebuffer_set_mode(rad_framebuffer_t framebuffer, uint32_t mode_index)
#define RAD_DRIVER_NAME_MAX
Definition: radekernel.h:78
struct rad_i2c_controller_config rad_i2c_controller_config_t
struct rad_i2c_bus_handle * rad_i2c_bus_t
Definition: radekernel.h:647
enum rad_tty_mode_flags rad_tty_mode_flags_t
struct rad_spi_driver rad_spi_driver_t
enum rad_pixel_format rad_pixel_format_t
rad_input_modifier_flags
Definition: radekernel.h:221
@ RAD_INPUT_MOD_CAPS_LOCK
Definition: radekernel.h:226
@ RAD_INPUT_MOD_META
Definition: radekernel.h:225
@ RAD_INPUT_MOD_CTRL
Definition: radekernel.h:223
@ RAD_INPUT_MOD_ALT
Definition: radekernel.h:224
@ RAD_INPUT_MOD_SHIFT
Definition: radekernel.h:222
rad_status_t rad_tty_get_mode(rad_tty_t tty, uint32_t *mode)
size_t rad_perf_counter_list(rad_perf_counter_info_t *counters, size_t capacity)
rad_status_t rad_boot_info_get(rad_boot_info_t *boot_info)
struct rad_spi_controller_ops rad_spi_controller_ops_t
struct rad_boot_memory_region rad_boot_memory_region_t
rad_status_t rad_vfs_mount_provider(const char *mount_point, const rad_vfs_backend_ops_t *ops)
void rad_kernel_shutdown(void)
size_t rad_timer_list(rad_timer_source_info_t *timers, size_t capacity)
const char * rad_boot_arg_get(const char *key)
struct rad_vfs_dirent rad_vfs_dirent_t
struct rad_framebuffer_display_info rad_framebuffer_display_info_t
enum rad_scheduler_mode rad_scheduler_mode_t
size_t rad_i2c_list_devices(rad_i2c_device_info_t *devices, size_t capacity)
rad_status_t rad_i2c_device_open(uint32_t bus_id, uint8_t address, rad_i2c_device_t **device)
struct rad_device_ops rad_device_ops_t
struct rad_tty_window_size rad_tty_window_size_t
rad_status_t rad_spi_bus_open(uint32_t bus_id, rad_spi_bus_t *bus)
struct rad_program_info rad_program_info_t
struct rad_irq_domain_config rad_irq_domain_config_t
struct rad_spi_transfer rad_spi_transfer_t
void rad_memory_free(void *pointer)
rad_status_t rad_task_join(rad_task_t task)
Definition: radekernel.h:457
uint32_t size
Definition: radekernel.h:458
uint32_t reserved
Definition: radekernel.h:462
uint32_t sector_size
Definition: radekernel.h:459
uint32_t flags
Definition: radekernel.h:461
uint64_t sector_count
Definition: radekernel.h:460
Definition: radekernel.h:465
uint64_t sector
Definition: radekernel.h:467
uint32_t size
Definition: radekernel.h:466
uint32_t sector_count
Definition: radekernel.h:468
void * buffer
Definition: radekernel.h:469
Definition: radekernel.h:307
char key[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:308
char value[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:309
Definition: radekernel.h:320
char console_device[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:325
uintptr_t fdt_pointer
Definition: radekernel.h:327
char sd_mode[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:326
uint32_t version
Definition: radekernel.h:322
char board[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:324
uint32_t arg_count
Definition: radekernel.h:332
rad_boot_arg_t args[RAD_BOOT_MAX_ARGS]
Definition: radekernel.h:333
uint32_t boot_flags
Definition: radekernel.h:329
uint32_t memory_region_count
Definition: radekernel.h:330
rad_boot_memory_region_t memory_regions[RAD_BOOT_MAX_MEMORY_REGIONS]
Definition: radekernel.h:331
char backend[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:323
uint32_t size
Definition: radekernel.h:321
uintptr_t initrd_pointer
Definition: radekernel.h:328
Definition: radekernel.h:312
uint64_t size
Definition: radekernel.h:314
uint32_t flags
Definition: radekernel.h:316
uint32_t type
Definition: radekernel.h:315
uint64_t base
Definition: radekernel.h:313
char name[RAD_BOOT_MAX_STRING]
Definition: radekernel.h:317
Definition: radekernel.h:394
uint32_t worker_running_mask
Definition: radekernel.h:398
uint32_t detected_cores
Definition: radekernel.h:395
uint32_t service_core
Definition: radekernel.h:397
uint32_t worker_cores
Definition: radekernel.h:396
Definition: radekernel.h:555
rad_status_t(* write)(void *context, const void *buffer, size_t size, size_t *bytes_written)
Definition: radekernel.h:558
void * context
Definition: radekernel.h:556
rad_status_t(* read)(void *context, void *buffer, size_t size, size_t *bytes_read)
Definition: radekernel.h:557
rad_status_t(* ioctl)(void *context, uint32_t request, void *argument)
Definition: radekernel.h:559
Definition: radekernel.h:596
rad_pixel_format_t pixel_format
Definition: radekernel.h:601
uint32_t width
Definition: radekernel.h:597
uint32_t refresh_hz
Definition: radekernel.h:599
uint32_t stride_bytes
Definition: radekernel.h:600
uint32_t height
Definition: radekernel.h:598
Definition: radekernel.h:700
rad_status_t(* request)(void *context, rad_dma_request_id_t request_id, void **backend_channel)
Definition: radekernel.h:702
rad_status_t(* submit)(void *context, void *backend_channel, const rad_dma_transfer_t *transfer)
Definition: radekernel.h:704
void * context
Definition: radekernel.h:701
rad_status_t(* cancel)(void *context, void *backend_channel)
Definition: radekernel.h:706
rad_status_t(* wait)(void *context, void *backend_channel, uint32_t timeout_ms)
Definition: radekernel.h:705
void(* release)(void *context, void *backend_channel)
Definition: radekernel.h:703
Definition: radekernel.h:820
char controller[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:821
uint32_t index
Definition: radekernel.h:822
int active
Definition: radekernel.h:825
uint32_t request_id
Definition: radekernel.h:823
int allocated
Definition: radekernel.h:824
Definition: radekernel.h:709
const char * name
Definition: radekernel.h:711
uint32_t size
Definition: radekernel.h:710
uint32_t channel_count
Definition: radekernel.h:712
Definition: radekernel.h:690
rad_dma_transfer_type_t type
Definition: radekernel.h:692
const void * source
Definition: radekernel.h:694
uint32_t flags
Definition: radekernel.h:697
uintptr_t peripheral_address
Definition: radekernel.h:696
rad_dma_request_id_t request_id
Definition: radekernel.h:693
void * destination
Definition: radekernel.h:695
uint32_t size
Definition: radekernel.h:691
Definition: radekernel.h:767
char name[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:768
char role[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:771
char compatible[RAD_COMPATIBLE_MAX]
Definition: radekernel.h:770
char bus[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:769
Definition: radekernel.h:614
rad_framebuffer_info_t info
Definition: radekernel.h:617
uint32_t size
Definition: radekernel.h:615
uint32_t mode_count
Definition: radekernel.h:620
const char * name
Definition: radekernel.h:616
uint32_t preferred_mode
Definition: radekernel.h:621
rad_display_output_type_t output_type
Definition: radekernel.h:618
const char * connector
Definition: radekernel.h:619
int primary
Definition: radekernel.h:623
rad_display_mode_t modes[RAD_FRAMEBUFFER_MAX_MODES]
Definition: radekernel.h:622
Definition: radekernel.h:626
char name[RAD_FRAMEBUFFER_NAME_MAX]
Definition: radekernel.h:628
rad_display_output_type_t output_type
Definition: radekernel.h:630
uint32_t mode_count
Definition: radekernel.h:632
uint32_t size
Definition: radekernel.h:627
rad_display_mode_t modes[RAD_FRAMEBUFFER_MAX_MODES]
Definition: radekernel.h:635
uint32_t current_mode
Definition: radekernel.h:634
char connector[RAD_DISPLAY_CONNECTOR_MAX]
Definition: radekernel.h:631
uint32_t preferred_mode
Definition: radekernel.h:633
int primary
Definition: radekernel.h:636
rad_framebuffer_info_t framebuffer
Definition: radekernel.h:629
Definition: radekernel.h:587
uint32_t width
Definition: radekernel.h:589
uint32_t stride_bytes
Definition: radekernel.h:591
rad_pixel_format_t pixel_format
Definition: radekernel.h:592
void * pixels
Definition: radekernel.h:593
uint32_t height
Definition: radekernel.h:590
uint32_t size
Definition: radekernel.h:588
Definition: radekernel.h:604
rad_status_t(* blank)(void *context, int blanked)
Definition: radekernel.h:608
rad_status_t(* flush)(void *context, const rad_framebuffer_rect_t *rect)
Definition: radekernel.h:606
rad_status_t(* set_mode)(void *context, const rad_display_mode_t *mode)
Definition: radekernel.h:607
uint64_t(* get_vsync_counter)(void *context)
Definition: radekernel.h:609
void * context
Definition: radekernel.h:605
Definition: radekernel.h:580
uint32_t height
Definition: radekernel.h:584
uint32_t width
Definition: radekernel.h:583
uint32_t x
Definition: radekernel.h:581
uint32_t y
Definition: radekernel.h:582
Definition: radekernel.h:655
uint32_t clock_hz
Definition: radekernel.h:660
uint8_t sda_gpio
Definition: radekernel.h:661
const char * name
Definition: radekernel.h:658
uint32_t bus_id
Definition: radekernel.h:657
const char * tree_path
Definition: radekernel.h:659
uint8_t scl_gpio
Definition: radekernel.h:662
uint32_t size
Definition: radekernel.h:656
Definition: radekernel.h:650
void * context
Definition: radekernel.h:651
rad_status_t(* transfer)(void *context, const rad_i2c_transfer_t *transfer)
Definition: radekernel.h:652
Definition: radekernel.h:794
char path[RAD_TREE_MAX_PATH]
Definition: radekernel.h:799
int bound
Definition: radekernel.h:802
rad_irq_resource_t irqs[RAD_IRQ_MAX_RESOURCES]
Definition: radekernel.h:798
char compatible[RAD_COMPATIBLE_MAX]
Definition: radekernel.h:800
uint8_t address
Definition: radekernel.h:796
uint32_t bus_id
Definition: radekernel.h:795
char driver[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:801
uint32_t irq_count
Definition: radekernel.h:797
Definition: radekernel.h:665
void(* remove)(void *context, rad_i2c_device_t *device)
Definition: radekernel.h:671
void * context
Definition: radekernel.h:669
const char * name
Definition: radekernel.h:667
const char * compatible
Definition: radekernel.h:668
rad_status_t(* probe)(void *context, rad_i2c_device_t *device)
Definition: radekernel.h:670
uint32_t size
Definition: radekernel.h:666
Definition: radekernel.h:639
size_t read_size
Definition: radekernel.h:644
size_t write_size
Definition: radekernel.h:642
uint8_t * read_data
Definition: radekernel.h:643
const uint8_t * write_data
Definition: radekernel.h:641
uint8_t address
Definition: radekernel.h:640
Definition: radekernel.h:476
uint8_t bytes[4]
Definition: radekernel.h:477
Definition: radekernel.h:776
const char * name
Definition: radekernel.h:778
uint32_t interrupt_base
Definition: radekernel.h:780
uint32_t size
Definition: radekernel.h:777
uint32_t line_count
Definition: radekernel.h:781
const char * tree_path
Definition: radekernel.h:779
uint32_t interrupt_cells
Definition: radekernel.h:782
Definition: radekernel.h:828
char name[RAD_IRQ_NAME_MAX]
Definition: radekernel.h:830
int registered
Definition: radekernel.h:831
int enabled
Definition: radekernel.h:832
uint64_t count
Definition: radekernel.h:833
uint32_t irq
Definition: radekernel.h:829
uint64_t unhandled_count
Definition: radekernel.h:834
Definition: radekernel.h:785
char controller_path[RAD_TREE_MAX_PATH]
Definition: radekernel.h:791
rad_irq_trigger_t trigger
Definition: radekernel.h:789
char domain[RAD_IRQ_DOMAIN_NAME_MAX]
Definition: radekernel.h:790
uint32_t irq
Definition: radekernel.h:786
uint32_t flags
Definition: radekernel.h:788
uint32_t line
Definition: radekernel.h:787
Definition: radekernel.h:302
const char * backend_name
Definition: radekernel.h:303
const void * boot_info
Definition: radekernel.h:304
Definition: radekernel.h:472
uint8_t bytes[6]
Definition: radekernel.h:473
Definition: radekernel.h:336
uint64_t bytes_live
Definition: radekernel.h:341
uint64_t peak_bytes_live
Definition: radekernel.h:342
uint64_t bytes_freed
Definition: radekernel.h:340
uint64_t frees
Definition: radekernel.h:338
uint64_t allocations
Definition: radekernel.h:337
uint64_t bytes_allocated
Definition: radekernel.h:339
Definition: radekernel.h:742
uint32_t size
Definition: radekernel.h:743
const char * compatible
Definition: radekernel.h:746
rad_status_t(* init)(void *context)
Definition: radekernel.h:747
void(* exit)(void *context)
Definition: radekernel.h:748
void * context
Definition: radekernel.h:749
const char * bus
Definition: radekernel.h:745
const char * name
Definition: radekernel.h:744
Definition: radekernel.h:759
int32_t last_status
Definition: radekernel.h:764
char name[RAD_MODULE_NAME_MAX]
Definition: radekernel.h:760
char bus[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:761
char compatible[RAD_COMPATIBLE_MAX]
Definition: radekernel.h:762
rad_module_state_t state
Definition: radekernel.h:763
Definition: radekernel.h:486
uint32_t mtu
Definition: radekernel.h:489
uint32_t size
Definition: radekernel.h:487
uint64_t rx_packets
Definition: radekernel.h:492
rad_mac_address_t mac
Definition: radekernel.h:488
int link_up
Definition: radekernel.h:490
uint64_t tx_packets
Definition: radekernel.h:491
Definition: radekernel.h:480
size_t length
Definition: radekernel.h:483
const void * data
Definition: radekernel.h:482
uint32_t size
Definition: radekernel.h:481
Definition: radekernel.h:443
uint32_t node_count
Definition: radekernel.h:446
char name[RAD_TREE_MAX_PROPERTY_NAME]
Definition: radekernel.h:444
uint32_t property_count
Definition: radekernel.h:447
char source[RAD_TREE_MAX_PATH]
Definition: radekernel.h:445
Definition: radekernel.h:345
char name[RAD_PERF_NAME_MAX]
Definition: radekernel.h:346
uint64_t value
Definition: radekernel.h:347
Definition: radekernel.h:495
int64_t tv_usec
Definition: radekernel.h:497
int64_t tv_sec
Definition: radekernel.h:496
Definition: radekernel.h:509
uint32_t size
Definition: radekernel.h:510
int32_t(* fork_from_frame)(void *context, void *trap_frame)
Definition: radekernel.h:512
void(* process_reaped)(void *context, int32_t pid, int32_t status)
Definition: radekernel.h:513
void * context
Definition: radekernel.h:511
Definition: radekernel.h:500
int32_t exit_code
Definition: radekernel.h:504
int32_t exited
Definition: radekernel.h:503
char path[128]
Definition: radekernel.h:506
rad_process_state_t state
Definition: radekernel.h:505
int32_t pid
Definition: radekernel.h:501
int32_t parent_pid
Definition: radekernel.h:502
Definition: radekernel.h:546
rad_program_state_t state
Definition: radekernel.h:550
uint64_t id
Definition: radekernel.h:547
char path[128]
Definition: radekernel.h:548
uint64_t task_id
Definition: radekernel.h:551
int exit_code
Definition: radekernel.h:552
char name[64]
Definition: radekernel.h:549
Definition: radekernel.h:406
uint32_t exited_threads
Definition: radekernel.h:413
uint32_t blocked_threads
Definition: radekernel.h:411
uint32_t online_core_mask
Definition: radekernel.h:418
int preemption_enabled
Definition: radekernel.h:420
uint32_t ready_threads
Definition: radekernel.h:410
uint64_t context_switches
Definition: radekernel.h:421
uint32_t sleeping_threads
Definition: radekernel.h:412
rad_scheduler_mode_t mode
Definition: radekernel.h:416
uint32_t running_threads
Definition: radekernel.h:409
uint32_t worker_running_mask
Definition: radekernel.h:408
char arch[32]
Definition: radekernel.h:417
uint32_t detected_cores
Definition: radekernel.h:407
uint64_t scheduler_ticks
Definition: radekernel.h:422
uint32_t process_count
Definition: radekernel.h:414
uint32_t current_core
Definition: radekernel.h:419
int preemption_supported
Definition: radekernel.h:415
Definition: radekernel.h:851
uint8_t rx_gpio
Definition: radekernel.h:858
const char * device_name
Definition: radekernel.h:853
uint8_t sck_gpio
Definition: radekernel.h:856
const char * mount_point
Definition: radekernel.h:854
uint8_t cs_gpio
Definition: radekernel.h:859
uint8_t sdio_clk_gpio
Definition: radekernel.h:861
uint8_t spi_instance
Definition: radekernel.h:855
rad_sd_mode_t mode
Definition: radekernel.h:852
uint8_t sdio_cmd_gpio
Definition: radekernel.h:862
uint8_t card_detect_gpio
Definition: radekernel.h:864
uint8_t sdio_dat0_gpio
Definition: radekernel.h:863
uint8_t tx_gpio
Definition: radekernel.h:857
uint8_t pio_instance
Definition: radekernel.h:860
Definition: radekernel.h:843
uint8_t stop_bits
Definition: radekernel.h:846
uint8_t parity
Definition: radekernel.h:847
uint8_t flow_control
Definition: radekernel.h:848
uint32_t baud_rate
Definition: radekernel.h:844
uint8_t data_bits
Definition: radekernel.h:845
Definition: radekernel.h:721
uint8_t sck_gpio
Definition: radekernel.h:727
uint32_t clock_hz
Definition: radekernel.h:726
const char * tree_path
Definition: radekernel.h:725
const char * name
Definition: radekernel.h:724
uint8_t cs_gpio
Definition: radekernel.h:730
uint32_t size
Definition: radekernel.h:722
uint8_t tx_gpio
Definition: radekernel.h:728
uint8_t rx_gpio
Definition: radekernel.h:729
uint32_t bus_id
Definition: radekernel.h:723
Definition: radekernel.h:715
void * context
Definition: radekernel.h:716
rad_status_t(* transfer_dma)(void *context, const rad_spi_device_t *device, const rad_spi_transfer_t *transfer, rad_dma_channel_t tx_channel, rad_dma_channel_t rx_channel)
Definition: radekernel.h:718
rad_status_t(* transfer)(void *context, const rad_spi_device_t *device, const rad_spi_transfer_t *transfer)
Definition: radekernel.h:717
Definition: radekernel.h:805
char path[RAD_TREE_MAX_PATH]
Definition: radekernel.h:814
uint32_t irq_count
Definition: radekernel.h:812
uint32_t bus_id
Definition: radekernel.h:806
rad_irq_resource_t irqs[RAD_IRQ_MAX_RESOURCES]
Definition: radekernel.h:813
int bound
Definition: radekernel.h:817
uint32_t clock_hz
Definition: radekernel.h:808
uint8_t bits_per_word
Definition: radekernel.h:810
uint8_t cs
Definition: radekernel.h:807
char driver[RAD_DRIVER_NAME_MAX]
Definition: radekernel.h:816
uint8_t transfer_mode
Definition: radekernel.h:811
char compatible[RAD_COMPATIBLE_MAX]
Definition: radekernel.h:815
uint8_t mode
Definition: radekernel.h:809
Definition: radekernel.h:733
void(* remove)(void *context, rad_spi_device_t *device)
Definition: radekernel.h:739
uint32_t size
Definition: radekernel.h:734
const char * name
Definition: radekernel.h:735
const char * compatible
Definition: radekernel.h:736
void * context
Definition: radekernel.h:737
rad_status_t(* probe)(void *context, rad_spi_device_t *device)
Definition: radekernel.h:738
Definition: radekernel.h:674
uint8_t * rx_data
Definition: radekernel.h:676
uint8_t bits_per_word
Definition: radekernel.h:680
uint8_t transfer_mode
Definition: radekernel.h:682
uint8_t mode
Definition: radekernel.h:679
uint8_t cs
Definition: radekernel.h:681
size_t size
Definition: radekernel.h:677
const uint8_t * tx_data
Definition: radekernel.h:675
uint32_t speed_hz
Definition: radekernel.h:678
Definition: radekernel.h:385
size_t stack_size
Definition: radekernel.h:388
void * user_context
Definition: radekernel.h:391
int priority
Definition: radekernel.h:390
uint32_t size
Definition: radekernel.h:386
const char * name
Definition: radekernel.h:387
int target_core
Definition: radekernel.h:389
Definition: radekernel.h:372
int target_core
Definition: radekernel.h:378
int priority
Definition: radekernel.h:380
char name[64]
Definition: radekernel.h:374
size_t stack_size
Definition: radekernel.h:381
int running
Definition: radekernel.h:375
int current_core
Definition: radekernel.h:379
int finished
Definition: radekernel.h:376
uint64_t id
Definition: radekernel.h:373
rad_task_state_t state
Definition: radekernel.h:377
int detached
Definition: radekernel.h:382
Definition: radekernel.h:350
uint32_t frequency_hz
Definition: radekernel.h:353
uint32_t size
Definition: radekernel.h:351
int supports_oneshot
Definition: radekernel.h:354
const char * name
Definition: radekernel.h:352
Definition: radekernel.h:364
int active
Definition: radekernel.h:368
uint32_t frequency_hz
Definition: radekernel.h:366
char name[RAD_TIMER_NAME_MAX]
Definition: radekernel.h:365
uint64_t ticks
Definition: radekernel.h:369
int supports_oneshot
Definition: radekernel.h:367
Definition: radekernel.h:357
void * context
Definition: radekernel.h:358
rad_status_t(* schedule_oneshot)(void *context, uint64_t delay_micros)
Definition: radekernel.h:360
rad_status_t(* cancel_oneshot)(void *context)
Definition: radekernel.h:361
rad_status_t(* start_periodic)(void *context, uint32_t frequency_hz)
Definition: radekernel.h:359
Definition: radekernel.h:435
char parent[RAD_TREE_MAX_PATH]
Definition: radekernel.h:438
char module[RAD_TREE_MAX_PROPERTY_NAME]
Definition: radekernel.h:439
int bound
Definition: radekernel.h:440
char name[RAD_TREE_MAX_PROPERTY_NAME]
Definition: radekernel.h:437
char path[RAD_TREE_MAX_PATH]
Definition: radekernel.h:436
Definition: radekernel.h:886
uint16_t rows
Definition: radekernel.h:887
uint16_t columns
Definition: radekernel.h:888
Definition: radekernel.h:523
rad_status_t(* mkdir)(void *context, const char *path)
Definition: radekernel.h:533
rad_status_t(* list)(void *context, const char *path, rad_vfs_list_callback_t callback, void *callback_context)
Definition: radekernel.h:532
rad_status_t(* remove)(void *context, const char *path)
Definition: radekernel.h:534
void * context
Definition: radekernel.h:524
rad_status_t(* rename)(void *context, const char *old_path, const char *new_path)
Definition: radekernel.h:535
rad_status_t(* write)(void *file, const void *buffer, size_t size, size_t *bytes_written)
Definition: radekernel.h:527
rad_status_t(* seek)(void *file, int64_t offset, rad_seek_origin_t origin)
Definition: radekernel.h:528
void(* close)(void *file)
Definition: radekernel.h:530
rad_status_t(* open)(void *context, const char *path, uint32_t flags, void **file)
Definition: radekernel.h:525
uint64_t(* tell)(void *file)
Definition: radekernel.h:529
rad_status_t(* stat)(void *context, const char *path, rad_vfs_stat_t *stat)
Definition: radekernel.h:531
rad_status_t(* read)(void *file, void *buffer, size_t size, size_t *bytes_read)
Definition: radekernel.h:526
rad_status_t(* rmdir)(void *context, const char *path)
Definition: radekernel.h:536
Definition: radekernel.h:516
char name[96]
Definition: radekernel.h:517
rad_vfs_stat_t stat
Definition: radekernel.h:518
Definition: radekernel.h:450
uint64_t mtime_millis
Definition: radekernel.h:454
int is_directory
Definition: radekernel.h:452
uint64_t size
Definition: radekernel.h:451
uint32_t mode
Definition: radekernel.h:453