2.1.1 Module API
Related headers [link]
Name | Description |
---|---|
hexo/atomic.h | Atomic memory operations primitives |
hexo/bit.h | Bit operations |
hexo/context.h | Execution context management stuff |
hexo/cpu.h | Startup and misc cpu related functions |
hexo/endian.h | Integer values byte-swaping and endian stuff |
hexo/enum.h | C enum reflection |
hexo/error.h | Common error codes definitions |
hexo/flash.h | Write access to memory mapped flash |
hexo/iospace.h | Io and memory address spaces functions access |
hexo/ipi.h | Inter-processor interrupts |
hexo/local.h | Processor local and context local, language global variables features |
hexo/lock.h | Spinlock stuff |
hexo/ordering.h | Serializing operations and memory barrier primitives |
hexo/types.h | Standard integer types definitions |
interrupt.h | Interrupts, exceptions and syscall events management |
hexo/decls.h | Various build system related defs (internal) |
Members [link]
Types [link]
- typedef [...] __ldscript_symbol_t
- typedef [...] atomic_fast16_t
- typedef [...] atomic_fast8_t
- typedef [...] atomic_t
- typedef void (context_entry_t)(void *param)
- typedef void (context_irqen_t)(void )
- typedef struct context_s *(context_preempt_t)(void )
- typedef void (cpu_exception_handler_t)(uint_fast8_t type, uintptr_t execptr, uintptr_t dataptr, struct cpu_context_s *regs, uintptr_t stackptr)
- typedef void (cpu_interrupt_handler_t)(uint_fast8_t irq)
- typedef void (cpu_syscall_handler_t)(uint_fast8_t number, struct cpu_context_s *regs)
- typedef [...] error_t
- typedef [...] int16_t
- typedef [...] int16_t
- typedef [...] int32_t
- typedef [...] int32_t
- typedef [...] int64_t
- typedef [...] int8_t
- typedef [...] int_fast16_t
- typedef [...] int_fast32_t
- typedef [...] int_fast64_t
- typedef [...] int_fast8_t
- typedef [...] intmax_t
- typedef [...] intptr_t
- struct ipi_endpoint_s
- typedef void (ipi_msg_func_t)(void *priv)
- typedef [...] * ipi_queue_item_t
- struct ipi_request_s
- struct lock_irq_s
- typedef [...] lock_irq_t
- struct lock_s
- typedef [...] lock_t
- typedef [...] paddr_t
- typedef [...] paddr_t
- typedef [...] paddr_t
- typedef [...] ptrdiff_t
- typedef [...] reg_t
- typedef [...] sreg_t
- typedef [...] uint16_t
- typedef [...] uint16_t
- typedef [...] uint32_t
- typedef [...] uint32_t
- typedef [...] uint64_t
- typedef [...] uint8_t
- typedef [...] uint_fast16_t
- typedef [...] uint_fast32_t
- typedef [...] uint_fast64_t
- typedef [...] uint_fast8_t
- typedef [...] uintmax_t
- typedef [...] uintptr_t
- typedef [...] __compiler_longdouble_t
- typedef [...] __compiler_sint_t
- typedef [...] __compiler_slong_t
- typedef [...] __compiler_slonglong_t
- typedef [...] __compiler_sshort_t
- typedef [...] __compiler_uint_t
- typedef [...] __compiler_ulong_t
- typedef [...] __compiler_ulonglong_t
- typedef [...] __compiler_ushort_t
- struct context_s
- struct lock_irq_scoped_s
- struct lock_scoped_s
Functions [link]
- atomic_int_t atomic_add(atomic_t *a, atomic_int_t value)
- atomic_int_t atomic_and(atomic_t *a, atomic_int_t value)
- void atomic_bit_clr(atomic_t *a, uint_fast8_t n)
- void atomic_bit_set(atomic_t *a, uint_fast8_t n)
- bool_t atomic_bit_test(atomic_t *a, uint_fast8_t n)
- bool_t atomic_bit_testclr(atomic_t *a, uint_fast8_t n)
- bool_t atomic_bit_testset(atomic_t *a, uint_fast8_t n)
- bool_t atomic_compare_and_swap(atomic_t *a, atomic_int_t old, atomic_int_t future)
- bool_t atomic_dec(atomic_t *a)
- atomic_fast16_int_t atomic_fast16_add(atomic_fast16_t *a, atomic_fast16_int_t value)
- atomic_fast16_int_t atomic_fast16_and(atomic_fast16_t *a, atomic_fast16_int_t value)
- void atomic_fast16_bit_clr(atomic_fast16_t *a, uint_fast8_t n)
- void atomic_fast16_bit_set(atomic_fast16_t *a, uint_fast8_t n)
- bool_t atomic_fast16_bit_test(atomic_fast16_t *a, uint_fast8_t n)
- bool_t atomic_fast16_bit_testclr(atomic_fast16_t *a, uint_fast8_t n)
- bool_t atomic_fast16_bit_testset(atomic_fast16_t *a, uint_fast8_t n)
- bool_t atomic_fast16_compare_and_swap(atomic_fast16_t *a, atomic_fast16_int_t old, atomic_fast16_int_t future)
- bool_t atomic_fast16_dec(atomic_fast16_t *a)
- atomic_fast16_int_t atomic_fast16_get(atomic_fast16_t *a)
- bool_t atomic_fast16_inc(atomic_fast16_t *a)
- atomic_fast16_int_t atomic_fast16_or(atomic_fast16_t *a, atomic_fast16_int_t value)
- void atomic_fast16_set(atomic_fast16_t *a, atomic_fast16_int_t value)
- atomic_fast16_int_t atomic_fast16_swap(atomic_fast16_t *a, atomic_fast16_int_t value)
- atomic_fast16_int_t atomic_fast16_xor(atomic_fast16_t *a, atomic_fast16_int_t value)
- atomic_fast8_int_t atomic_fast8_add(atomic_fast8_t *a, atomic_fast8_int_t value)
- atomic_fast8_int_t atomic_fast8_and(atomic_fast8_t *a, atomic_fast8_int_t value)
- void atomic_fast8_bit_clr(atomic_fast8_t *a, uint_fast8_t n)
- void atomic_fast8_bit_set(atomic_fast8_t *a, uint_fast8_t n)
- bool_t atomic_fast8_bit_test(atomic_fast8_t *a, uint_fast8_t n)
- bool_t atomic_fast8_bit_testclr(atomic_fast8_t *a, uint_fast8_t n)
- bool_t atomic_fast8_bit_testset(atomic_fast8_t *a, uint_fast8_t n)
- bool_t atomic_fast8_compare_and_swap(atomic_fast8_t *a, atomic_fast8_int_t old, atomic_fast8_int_t future)
- bool_t atomic_fast8_dec(atomic_fast8_t *a)
- atomic_fast8_int_t atomic_fast8_get(atomic_fast8_t *a)
- bool_t atomic_fast8_inc(atomic_fast8_t *a)
- atomic_fast8_int_t atomic_fast8_or(atomic_fast8_t *a, atomic_fast8_int_t value)
- void atomic_fast8_set(atomic_fast8_t *a, atomic_fast8_int_t value)
- atomic_fast8_int_t atomic_fast8_swap(atomic_fast8_t *a, atomic_fast8_int_t value)
- atomic_fast8_int_t atomic_fast8_xor(atomic_fast8_t *a, atomic_fast8_int_t value)
- atomic_int_t atomic_get(atomic_t *a)
- bool_t atomic_inc(atomic_t *a)
- atomic_int_t atomic_or(atomic_t *a, atomic_int_t value)
- void atomic_set(atomic_t *a, atomic_int_t value)
- atomic_int_t atomic_swap(atomic_t *a, atomic_int_t value)
- atomic_int_t atomic_xor(atomic_t *a, atomic_int_t value)
- error_t context_set_preempt(context_preempt_t *func)
- void cpu_context_set(uintptr_t stack, size_t stack_size, void *jumpto)
- void cpu_context_set_user(uintptr_t stack_ptr, uintptr_t entry, reg_t param)
- void cpu_dcache_flush_buf(void *ptr, size_t size)
- void cpu_dcache_flush_buf(void *ptr, size_t size)
- void cpu_dcache_invld(void *ptr)
- void cpu_dcache_invld_buf(void *ptr, size_t size)
- void cpu_dcache_invld_buf(void *ptr, size_t size)
- size_t cpu_dcache_line_size(void )
- void cpu_exception_resume_pc(struct cpu_context_s *regs, uintptr_t pc)
- void cpu_exception_sethandler(cpu_exception_handler_t *hndl)
- void cpu_icache_invld_buf(void *ptr, size_t size)
- void cpu_icache_invld_buf(void *ptr, size_t size)
- void cpu_interrupt_cls_sethandler(void *cls, cpu_interrupt_handler_t *handler)
- void cpu_interrupt_disable(void )
- void cpu_interrupt_enable(void )
- bool_t cpu_interrupt_getstate(void )
- void cpu_interrupt_process(void )
- bool_t cpu_interrupt_restorestate(const cpu_irq_state_t *state)
- void cpu_interrupt_savestate_disable(cpu_irq_state_t *state)
- void cpu_interrupt_sethandler(cpu_interrupt_handler_t *handler)
- void cpu_interrupt_wait(void )
- uint16_t cpu_io_read_16(uintptr_t addr)
- uint32_t cpu_io_read_32(uintptr_t addr)
- uint8_t cpu_io_read_8(uintptr_t addr)
- void cpu_io_write_16(uintptr_t addr, uint16_t data)
- void cpu_io_write_32(uintptr_t addr, uint32_t data)
- void cpu_io_write_8(uintptr_t addr, uint8_t data)
- bool_t cpu_is_interruptible(void )
- bool_t cpu_isbootstrap(void )
- uint32_t cpu_mem_mask_clear_32(uintptr_t addr, uint32_t mask)
- uint32_t cpu_mem_mask_set_32(uintptr_t addr, uint32_t mask)
- uint16_t cpu_mem_read_16(uintptr_t addr)
- uint32_t cpu_mem_read_32(uintptr_t addr)
- uint64_t cpu_mem_read_64(uintptr_t addr)
- uint8_t cpu_mem_read_8(uintptr_t addr)
- void cpu_mem_write_16(uintptr_t addr, uint16_t data)
- void cpu_mem_write_32(uintptr_t addr, uint32_t data)
- void cpu_mem_write_64(uintptr_t addr, uint64_t data)
- void cpu_mem_write_8(uintptr_t addr, uint8_t data)
- void cpu_syscall_sethandler(cpu_syscall_handler_t *hndl)
- void cpu_syscall_sethandler_ctx(struct context_s *context, cpu_syscall_handler_t *hndl)
- void cpu_trap(void )
- const char * cpu_type_name(void )
- const char * cpu_type_name(void )
- void cpu_user_exception_sethandler(cpu_exception_handler_t *hndl)
- void cpu_user_exception_sethandler_ctx(struct context_s *context, cpu_exception_handler_t *hndl)
- uint16_t endian_16_na_load(const void *addr)
- void endian_16_na_store(void *addr, uint16_t val)
- uint32_t endian_32_na_load(const void *addr)
- void endian_32_na_store(void *addr, uint32_t val)
- uint64_t endian_64_na_load(const void *addr)
- void endian_64_na_store(void *addr, uint64_t val)
- uint16_t endian_be16_na_load(const void *addr)
- void endian_be16_na_store(void *addr, uint16_t val)
- uint32_t endian_be32_na_load(const void *addr)
- void endian_be32_na_store(void *addr, uint32_t val)
- uint64_t endian_be64_na_load(const void *addr)
- void endian_be64_na_store(void *addr, uint64_t val)
- uint16_t endian_le16_na_load(const void *addr)
- void endian_le16_na_store(void *addr, uint16_t val)
- uint32_t endian_le32_na_load(const void *addr)
- void endian_le32_na_store(void *addr, uint32_t val)
- uint64_t endian_le64_na_load(const void *addr)
- void endian_le64_na_store(void *addr, uint64_t val)
- const char * enums_get_name(const char desc[], intptr_t value)
- bool_t enums_get_value(const char desc[], const char *name, intptr_t *value)
- bool_t enums_get_value2(const char desc[], const char *name, size_t name_len, intptr_t *value)
- reg_t flash_page_erase(uintptr_t addr)
- reg_t flash_page_write(uintptr_t addr, const uint8_t *data, size_t size)
- void hexo_atomic_scope_check(char *scope_exited_cleanly)
- bool_t ipi_endpoint_isvalid(struct ipi_endpoint_s *endpoint)
- error_t ipi_post(struct ipi_endpoint_s *endpoint)
- error_t ipi_post_rq(struct ipi_endpoint_s *endpoint, struct ipi_request_s *rq)
- void ipi_process_rq(void )
- void lock_destroy(lock_t *lock)
- void lock_destroy_irq(lock_irq_t *lock)
- error_t lock_init(lock_t *lock)
- error_t lock_init_irq(lock_irq_t *lock)
- void lock_release(lock_t *lock)
- void lock_release_irq(lock_irq_t *lock)
- void lock_release_irq2(lock_t *lock, const cpu_irq_state_t *irq_state)
- void lock_spin(lock_t *lock)
- void lock_spin_irq(lock_irq_t *lock)
- void lock_spin_irq2(lock_t *lock, cpu_irq_state_t *irq_state)
- bool_t lock_try(lock_t *lock)
- uint_fast8_t __bit_clz16(uint16_t x)
- uint_fast8_t __bit_clz32(uint32_t x)
- uint_fast8_t __bit_clz64(uint64_t x)
- uint_fast8_t __bit_clz8(uint8_t x)
- uint_fast8_t __bit_ctz16(uint16_t x)
- uint_fast8_t __bit_ctz32(uint32_t x)
- uint_fast8_t __bit_ctz64(uint64_t x)
- uint_fast8_t __bit_ctz64(uint32_t _x)
- uint_fast8_t __bit_ctz64(uint16_t _x)
- uint_fast8_t __bit_ctz64(uint8_t _x)
- uint_fast8_t __bit_ctz8(uint8_t x)
- uint_fast8_t __bit_ffs16(uint16_t x)
- uint_fast8_t __bit_ffs32(uint32_t x)
- uint_fast8_t __bit_ffs64(uint64_t x)
- uint_fast8_t __bit_ffs8(uint8_t x)
- uint_fast8_t __bit_popc16(uint16_t x)
- uint_fast8_t __bit_popc32(uint32_t x)
- uint_fast8_t __bit_popc64(uint64_t x)
- uint_fast8_t __bit_popc8(uint8_t x)
- uint16_t __endian_swap16(uint16_t x)
- uint32_t __endian_swap32(uint32_t x)
- uint64_t __endian_swap64(uint64_t x)
- uint_fast8_t cpu_bit_clz64(uint64_t _x)
- uint_fast8_t cpu_bit_ctz64(uint64_t _x)
- uint_fast8_t cpu_bit_ctz64(uint64_t _x)
- uint_fast8_t cpu_bit_popc64(uint64_t _x)
- error_t cpu_context_bootstrap(struct context_s *context)
- void cpu_context_destroy(struct context_s *context)
- error_t cpu_context_init(struct context_s *context, context_entry_t *entry, void *param)
- void cpu_context_jumpto(struct context_s *new)
- void cpu_context_stack_use(struct context_s *context, context_entry_t *func, void *param)
- void cpu_context_switch(struct context_s *new)
- void lock_irq_scoped_release(struct lock_irq_scoped_s *ls)
- void lock_irq_scoped_spin(struct lock_irq_scoped_s *ls, lock_t *lock)
- void lock_scoped_release(struct lock_scoped_s *ls)
- void lock_scoped_spin(struct lock_scoped_s *ls, lock_t *lock)
Variables [link]
- struct ipi_endpoint_s ipi_endpoint
- uintptr_t context_stack_end
- uintptr_t context_stack_start
Macros [link]
- BIT_CLEAR
- BIT_INSERT
- BIT_SET
- CONTEXT_ENTRY
- CONTEXT_IRQEN
- CONTEXT_LOCAL_ADDR
- CONTEXT_LOCAL_GET
- CONTEXT_LOCAL_SET
- CONTEXT_LOCAL_TLS_ADDR
- CONTEXT_LOCAL_TLS_GET
- CONTEXT_LOCAL_TLS_SET
- CONTEXT_PREEMPT
- CPU_EXCEPTION_HANDLER
- CPU_INTERRUPT_HANDLER
- CPU_INTERRUPT_RESTORESTATE
- CPU_INTERRUPT_SAVESTATE_DISABLE
- CPU_LOCAL
- CPU_LOCAL_ADDR
- CPU_LOCAL_ADDR
- CPU_LOCAL_CLS_ADDR
- CPU_LOCAL_CLS_ADDR
- CPU_LOCAL_CLS_GET
- CPU_LOCAL_CLS_SET
- CPU_LOCAL_GET
- CPU_LOCAL_GET
- CPU_LOCAL_SET
- CPU_LOCAL_SET
- CPU_NAME_DECL
- CPU_SYSCALL_HANDLER
- EACCES
- EADDRINUSE
- EADDRNOTAVAIL
- EAFNOSUPPORT
- EAGAIN
- EBADDATA
- EBUSY
- ECANCELED
- EDEADLK
- EDESTADDRREQ
- EDOM
- EEOF
- EEXISTS
- EHOSTUNREACH
- EINVAL
- EIO
- EISCONN
- EISDIR
- ELOOP
- ENDIAN_BITFIELD
- ENDIAN_BITFIELD
- ENOENT
- ENOMEM
- ENOPROTOOPT
- ENOSPC
- ENOSYS
- ENOTCONN
- ENOTSUP
- ENUM_DESCRIPTOR
- EOPNOTSUPP
- EPERM
- EPFNOSUPPORT
- EPIPE
- EPROTONOSUPPORT
- ERANGE
- ESHUTDOWN
- ETIMEDOUT
- EUNKNOWN
- FIELD_ALIAS
- FIELD_USING
- INT_FIT_TYPE
- LOCK_RELEASE_IRQ
- LOCK_RELEASE_IRQ
- LOCK_SPIN_IRQ
- LOCK_SPIN_IRQ
- LOCK_SPIN_IRQ_SCOPED
- LOCK_SPIN_SCOPED
- NULL
- NULL
- UINT_FIT_TYPE
- __MAXOF_TYPE
- __MINOF_TYPE
- address_align_down
- address_align_up
- address_is_aligned
- align_pow2_down
- align_pow2_up
- bit
- bit_clz16
- bit_clz32
- bit_clz64
- bit_clz8
- bit_clz_unsafe
- bit_ctz
- bit_ctz16
- bit_ctz32
- bit_ctz64
- bit_ctz8
- bit_ffs
- bit_ffs16
- bit_ffs32
- bit_ffs64
- bit_ffs8
- bit_get
- bit_get_mask
- bit_get_range
- bit_lsb_index
- bit_mask
- bit_msb_index
- bit_popc
- bit_popc16
- bit_popc32
- bit_popc64
- bit_popc8
- bit_range
- byte_pack16
- byte_pack32
- endian_be16
- endian_be16
- endian_be32
- endian_be32
- endian_be64
- endian_be64
- endian_le16
- endian_le16
- endian_le32
- endian_le32
- endian_le64
- endian_le64
- endian_swap16
- endian_swap16
- endian_swap32
- endian_swap32
- endian_swap64
- endian_swap64
- is_pow2
- is_pow2_multiple
- order_compiler_mem
- order_io_mem
- order_io_mem_read
- order_io_mem_write
- order_smp_mem
- order_smp_mem
- order_smp_read
- order_smp_read
- order_smp_read_weak
- order_smp_read_weak
- order_smp_write
- order_smp_write
- pow2_m1_up
- pow2_up
Configuration tokens [link]
- CONFIG_HEXO
- CONFIG_HEXO_ARCH_MMU
- CONFIG_HEXO_CONTEXT
- CONFIG_HEXO_CONTEXT_IRQEN
- CONFIG_HEXO_CONTEXT_NESTED
- CONFIG_HEXO_CONTEXT_NESTED_COUNT
- CONFIG_HEXO_CONTEXT_PREEMPT
- CONFIG_HEXO_CONTEXT_STACK_IRQ
- CONFIG_HEXO_CONTEXT_STATS
- CONFIG_HEXO_CPU_MMU
- CONFIG_HEXO_CPU_STACK_SIZE
- CONFIG_HEXO_EXCEP
- CONFIG_HEXO_FPU
- CONFIG_HEXO_INTERRUPT_STACK
- CONFIG_HEXO_INTERRUPT_STACK_SIZE
- CONFIG_HEXO_INTTYPES_DEPRECATED
- CONFIG_HEXO_INTTYPES_SMALL
- CONFIG_HEXO_IPI
- CONFIG_HEXO_IRQ
- CONFIG_HEXO_LAZY_SWITCH
- CONFIG_HEXO_LOCK_DEBUG
- CONFIG_HEXO_MMU
- CONFIG_HEXO_MMU_PADDR
- CONFIG_HEXO_MMU_VADDR
- CONFIG_HEXO_STACK_ALIGN
- CONFIG_HEXO_USERMODE
- CONFIG_HEXO_MMU_PAGESIZE