Function index

The content of the Stage switching column indicates the behavior of an EVL thread when calling the service with respect to its execution stage:

denotes a strict out-of-band call. The caller must be attached to the EVL core. It is unconditionally promoted to the out-of-band execution stage if running in-band at the time of the call.

denotes a strict in-band call. The caller is unconditionally switched to the in-band execution stage if running out-of-band at the time of the call.

denotes a conforming call which is available to in-band and out-of-band callers from the most appropriate execution stage based on their current runtime state. If the caller undergoes the SCHED_WEAK policy, or is not attached to the EVL core, this call is directly handled from the in-band stage. In all other cases, the caller is switched to the out-of-band execution stage before the request is handled.

🟰 denotes a transparent call which is immediately available to in-band and out-of-band callers from their current execution stage (i.e. no stage switch).

In addition to the above rules:

  • the caller may switch to the in-band execution stage if running out-of-band at the time of the call on first access to a statically initialized synchronization object (EVL_*_INITIALIZER()) in order to finalize the construction before carrying out the requested operation. This is required only once in the object’s lifetime.

  • if the caller undergoes the SCHED_WEAK policy, locking a mutex keeps it running out-of-band until it drops such lock.

The content of the non-EVL column indicates whether the service is also available to threads which are not attached to the EVL core at the time of the call.

Thread services

Function name Stage switch non-EVL
evl_attach_thread() N/A
evl_attach_self() N/A
evl_detach_thread()
evl_detach_self()
evl_demote_thread() 🟰
evl_get_self() 🟰
evl_get_state() 🟰
evl_is_inband() 🟰
evl_resume_thread() 🟰
evl_set_thread_mode() 🟰
evl_subscribe()
evl_suspend_thread() 🟰
evl_switch_inband()
evl_switch_oob()
evl_unblock_thread() 🟰
evl_unsubscribe()

Scheduler services

Function name Stage switch non-EVL
evl_get_schedattr() 🟰
evl_set_schedattr() 🟰
evl_control_sched() 🟰
evl_get_cpustate() 🟰
evl_yield()

Clock services

Function name Stage switch non-EVL
evl_read_clock() 🟰
evl_set_clock() 🟰
evl_get_clock_resolution() 🟰
evl_sleep_until()
evl_usleep()

Timer services

Function name Stage switch non-EVL
evl_new_timer()
evl_set_timer() 🟰
evl_get_timer() 🟰

Mutex services

Function name Stage switch non-EVL
evl_create_mutex()
evl_new_mutex()
evl_open_mutex()
evl_lock_mutex()
evl_trylock_mutex()
evl_timedlock_mutex()
evl_unlock_mutex() 🟰
evl_get_mutex_ceiling() 🟰
evl_set_mutex_ceiling() 🟰
evl_close_mutex()

Read/write locking services

Function name Stage switch non-EVL
evl_create_rwlock()
evl_new_rwlock()
evl_lock_read()
evl_trylock_read()
evl_unlock_read() 🟰
evl_lock_write()
evl_trylock_write()
evl_unlock_write() 🟰

Event services

Function name Stage switch non-EVL
evl_create_event()
evl_new_event()
evl_open_event()
evl_wait_event() 🟰
evl_timedwait_event() 🟰
evl_signal_event() 🟰
evl_signal_thread() 🟰
evl_broadcast_event() 🟰
evl_close_event()

Flags services

Function name Stage switch non-EVL
evl_create_flags()
evl_new_flags()
evl_open_flags()
evl_wait_flags()
evl_wait_some_flags()
evl_wait_exact_flags()
evl_timedwait_flags()
evl_timedwait_some_flags()
evl_timedwait_exact_flags()
evl_trywait_flags() 🟰
evl_trywait_some_flags() 🟰
evl_trywait_exact_flags() 🟰
evl_peek_flags() 🟰
evl_post_flags() 🟰
evl_broadcast_flags() 🟰
evl_close_flags()

Semaphore services

Function name Stage switch non-EVL
evl_create_sem()
evl_new_sem()
evl_open_sem()
evl_get_sem()
evl_timedget_sem()
evl_tryget_sem() 🟰
evl_peek_sem() 🟰
evl_put_sem() 🟰
evl_close_sem()

Observable services

Function name Stage switch non-EVL
evl_create_observable()
evl_new_observable()
evl_read_observable()
evl_update_observable()

Polling services

Function name Stage switch non-EVL
evl_new_poll()
evl_add_pollfd()
evl_mod_pollfd()
evl_del_pollfd()
evl_poll_sem()
evl_timedpoll_sem()

Memory heap services

Function name Stage switch non-EVL
evl_init_heap()
evl_init_heap_unlocked() 🟰
evl_extend_heap() 🟰
evl_extend_heap_unlocked() 🟰
evl_alloc_block()
evl_alloc_block_unlocked() 🟰
evl_free_block()
evl_free_block_unlocked() 🟰
evl_check_block()
evl_check_block_unlocked() 🟰
evl_destroy_heap()
evl_destroy_heap_unlocked() 🟰
evl_heap_raw_size() 🟰
evl_heap_size() 🟰
evl_heap_used() 🟰

Proxy services

Function name Stage switch non-EVL
evl_create_proxy()
evl_new_proxy()
evl_write_proxy() 🟰
evl_read_proxy() 🟰
evl_vprint_proxy() 🟰
evl_print_proxy() 🟰
evl_printf() 🟰
evl_eprintf() 🟰
evl_stdout() 🟰
evl_stderr() 🟰

Cross-buffer services

Function name Stage switch non-EVL
evl_create_xbuf()
evl_new_xbuf()

I/O services

Function name Stage switch non-EVL
oob_read()
oob_write()
oob_ioctl()
oob_sendmsg()
oob_recvmsg()
oob_setsockopt()
oob_getsockopt()

Networking services

Function name Stage switch non-EVL
evl_net_enable_port()
evl_net_disable_port()
evl_net_open_port()
evl_net_query_port()
evl_net_set_filter()
evl_net_solicit()

Misc routines

Function name Stage switch non-EVL
evl_init() N/A
evl_get_version() 🟰
evl_sigdebug_handler() N/A

Last modified: Thu, 14 May 2026 19:19:39 UTC