POSIX Compliance Matrix ======================= QuantumRT implements a portable subset of the POSIX.1-2024 API focused on real-time and embedded use. The following tables list supported APIs. ------------------- Threads (pthread.h) ------------------- .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_create()` - Supported * - :c:func:`pthread_join()` - Supported * - :c:func:`pthread_detach()` - Supported * - :c:func:`pthread_exit()` - Supported * - :c:func:`pthread_self()` - Supported * - :c:func:`pthread_equal()` - Supported * - :c:func:`pthread_yield()` - Supported * - :c:func:`pthread_cleanup_push()` - Supported * - :c:func:`pthread_cleanup_pop()` - Supported * - :c:func:`pthread_cancel()` - Supported * - :c:func:`pthread_setcancelstate()` - Supported * - :c:func:`pthread_setcanceltype()` - Supported * - :c:func:`pthread_testcancel()` - Supported * - :c:func:`pthread_once()` - Not supported * - :c:func:`pthread_atfork()` - Not supported * - :c:func:`pthread_kill()` - Not supported * - :c:func:`pthread_setconcurrency()` - Not supported * - :c:func:`pthread_getcpuclockid()` - Not supported * - :c:func:`pthread_sigmask()` - Not supported * - :c:func:`pthread_spin_init()` - Not supported * - :c:func:`pthread_spin_destroy()` - Not supported * - :c:func:`pthread_spin_lock()` - Not supported * - :c:func:`pthread_spin_trylock()` - Not supported * - :c:func:`pthread_spin_unlock()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_attr_init()` - Supported * - :c:func:`pthread_attr_destroy()` - Supported * - :c:func:`pthread_attr_setstack()` - Supported * - :c:func:`pthread_attr_getstack()` - Supported * - :c:func:`pthread_attr_setstacksize()` - Supported * - :c:func:`pthread_attr_getstacksize()` - Supported * - :c:func:`pthread_attr_setschedparam()` - Supported * - :c:func:`pthread_attr_getschedparam()` - Supported * - :c:func:`pthread_attr_setschedpolicy()` - Supported * - :c:func:`pthread_attr_getschedpolicy()` - Supported * - :c:func:`pthread_attr_setdetachstate()` - Supported * - :c:func:`pthread_attr_getdetachstate()` - Supported * - :c:func:`pthread_attr_setinheritsched()` - Supported * - :c:func:`pthread_attr_getinheritsched()` - Supported * - :c:func:`pthread_attr_setscope()` - Not supported * - :c:func:`pthread_attr_getscope()` - Not supported * - :c:func:`pthread_attr_setguardsize()` - Not supported * - :c:func:`pthread_attr_getguardsize()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_mutex_init()` - Supported * - :c:func:`pthread_mutex_destroy()` - Supported * - :c:func:`pthread_mutex_lock()` - Supported * - :c:func:`pthread_mutex_trylock()` - Supported * - :c:func:`pthread_mutex_timedlock()` - Supported * - :c:func:`pthread_mutex_unlock()` - Supported * - :c:func:`pthread_mutex_setprioceiling()` - Supported * - :c:func:`pthread_mutex_getprioceiling()` - Supported * - :c:func:`pthread_mutex_consistent()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_mutexattr_init()` - Supported * - :c:func:`pthread_mutexattr_destroy()` - Supported * - :c:func:`pthread_mutexattr_settype()` - Supported * - :c:func:`pthread_mutexattr_gettype()` - Supported * - :c:func:`pthread_mutexattr_setprotocol()` - Supported * - :c:func:`pthread_mutexattr_getprotocol()` - Supported * - :c:func:`pthread_mutexattr_setprioceiling()` - Supported * - :c:func:`pthread_mutexattr_getprioceiling()` - Supported * - :c:func:`pthread_mutexattr_setpshared()` - Not supported * - :c:func:`pthread_mutexattr_getpshared()` - Not supported * - :c:func:`pthread_mutexattr_setrobust()` - Not supported * - :c:func:`pthread_mutexattr_getrobust()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_cond_init()` - Not supported * - :c:func:`pthread_cond_destroy()` - Not supported * - :c:func:`pthread_cond_wait()` - Not supported * - :c:func:`pthread_cond_timedwait()` - Not supported * - :c:func:`pthread_cond_signal()` - Not supported * - :c:func:`pthread_cond_broadcast()` - Not supported * - :c:func:`pthread_condattr_init()` - Not supported * - :c:func:`pthread_condattr_destroy()` - Not supported * - :c:func:`pthread_condattr_getclock()` - Not supported * - :c:func:`pthread_condattr_setclock()` - Not supported * - :c:func:`pthread_condattr_getpshared()` - Not supported * - :c:func:`pthread_condattr_setpshared()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_rwlock_init()` - Not supported * - :c:func:`pthread_rwlock_destroy()` - Not supported * - :c:func:`pthread_rwlock_rdlock()` - Not supported * - :c:func:`pthread_rwlock_tryrdlock()` - Not supported * - :c:func:`pthread_rwlock_wrlock()` - Not supported * - :c:func:`pthread_rwlock_trywrlock()` - Not supported * - :c:func:`pthread_rwlock_unlock()` - Not supported * - :c:func:`pthread_rwlock_timedrdlock()` - Not supported * - :c:func:`pthread_rwlock_timedwrlock()` - Not supported * - :c:func:`pthread_rwlockattr_init()` - Not supported * - :c:func:`pthread_rwlockattr_destroy()` - Not supported * - :c:func:`pthread_rwlockattr_setpshared()` - Not supported * - :c:func:`pthread_rwlockattr_getpshared()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_barrier_wait()` - Not supported * - :c:func:`pthread_barrier_init()` - Not supported * - :c:func:`pthread_barrier_destroy()` - Not supported * - :c:func:`pthread_barrierattr_init()` - Not supported * - :c:func:`pthread_barrierattr_destroy()` - Not supported * - :c:func:`pthread_barrierattr_setpshared()` - Not supported * - :c:func:`pthread_barrierattr_getpshared()` - Not supported .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`pthread_key_create()` - Not supported * - :c:func:`pthread_key_delete()` - Not supported * - :c:func:`pthread_setspecific()` - Not supported * - :c:func:`pthread_getspecific()` - Not supported ------------------------ Semaphores (semaphore.h) ------------------------ .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`sem_init()` - Supported * - :c:func:`sem_destroy()` - Supported * - :c:func:`sem_wait()` - Supported * - :c:func:`sem_trywait()` - Supported * - :c:func:`sem_timedwait()` - Supported * - :c:func:`sem_post()` - Supported * - :c:func:`sem_getvalue()` - Supported * - :c:func:`sem_open()` - Not supported * - :c:func:`sem_close()` - Not supported * - :c:func:`sem_unlink()` - Not supported ------------------------- Message Queues (mqueue.h) ------------------------- .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`mq_open()` - Supported * - :c:func:`mq_close()` - Supported * - :c:func:`mq_unlink()` - Supported * - :c:func:`mq_send()` - Supported * - :c:func:`mq_timedsend()` - Supported * - :c:func:`mq_receive()` - Supported * - :c:func:`mq_timedreceive()` - Supported * - :c:func:`mq_setattr()` - Supported * - :c:func:`mq_getattr()` - Supported * - :c:func:`mq_notify()` - Not supported ----------------------------------- Timers and Clocks (time.h, timer.h) ----------------------------------- .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`clock_gettime()` - Supported * - :c:func:`clock_settime()` - Not supported * - :c:func:`clock_getres()` - Supported * - :c:func:`clock_nanosleep()` - Supported * - :c:func:`nanosleep()` - Supported * - :c:func:`timer_create()` - Supported * - :c:func:`timer_delete()` - Supported * - :c:func:`timer_settime()` - Supported * - :c:func:`timer_gettime()` - Supported * - :c:func:`timer_getoverrun()` - Supported -------------------- Scheduling (sched.h) -------------------- .. list-table:: :header-rows: 1 :widths: 35 65 * - Function - Status * - :c:func:`sched_yield()` - Supported * - :c:func:`sched_getscheduler()` - Not supported * - :c:func:`sched_setscheduler()` - Not supported * - :c:func:`sched_getparam()` - Not supported * - :c:func:`sched_setparam()` - Not supported * - :c:func:`sched_get_priority_min()` - Supported * - :c:func:`sched_get_priority_max()` - Supported * - :c:func:`sched_rr_get_interval()` - Not supported