menu "POSIX (Portable Operating System Interface) layer"

config RT_USING_POSIX_FS
    bool "Enable POSIX file system and I/O"
    select RT_USING_DFS
    select DFS_USING_POSIX
    default n

if RT_USING_POSIX_FS
    config RT_USING_POSIX_DEVIO
        bool "Enable devices as file descriptors"
        select RT_USING_DFS_DEVFS
        default n

    config RT_USING_POSIX_STDIO
        bool "Enable standard I/O devices, e.g. STDOUT_FILENO"
        select RT_USING_POSIX_DEVIO
        default n

    config RT_USING_POSIX_POLL
        bool "Enable I/O Multiplexing poll() <poll.h>"
        default y if RT_USING_SMART
        default n

    config RT_USING_POSIX_SELECT
        bool "Enable I/O Multiplexing select() <sys/select.h>"
        select RT_USING_POSIX_POLL
        default y if RT_USING_SMART
        default n

    config RT_USING_POSIX_EVENTFD
        bool "Enable I/O event eventfd <sys/eventfd.h>"
        select RT_USING_POSIX_POLL
        default y if RT_USING_SMART
        default n

    if RT_USING_SMART
        config RT_USING_POSIX_EPOLL
            bool "Enable I/O Multiplexing epoll <sys/epoll.h>"
            select RT_USING_POSIX_POLL
            default y

        config RT_USING_POSIX_SIGNALFD
            bool "Enable Signalfd <sys/signalfd.h>"
            select RT_USING_POSIX_POLL
            default y

        if RT_USING_POSIX_SIGNALFD
            config RT_SIGNALFD_MAX_NUM
                int "signaled The maximum number of concurrent firing signals"
                range 1 20
                default 10
        endif
    endif

    config RT_USING_POSIX_TIMERFD
            bool "Enable I/O timerfd <sys/timerfd.h>"
            default y if RT_USING_SMART
            default n

    config RT_USING_POSIX_SOCKET
        bool "Enable BSD Socket I/O <sys/socket.h> <netdb.h>"
        select RT_USING_POSIX_SELECT
        select RT_USING_SAL
        default n

    config RT_USING_POSIX_TERMIOS
        bool "Enable Terminal I/O <termios.h>"
        select RT_USING_POSIX_STDIO
        default n

    config RT_USING_POSIX_AIO
        bool "Enable Asynchronous I/O <aio.h>"
        default n

    config RT_USING_POSIX_MMAN
        bool "Enable Memory-Mapped I/O <sys/mman.h>"
        default n
endif

config RT_USING_POSIX_DELAY
    select RT_USING_KTIME
    bool "Enable delay APIs, sleep()/usleep()/msleep() etc"
    default n

config RT_USING_POSIX_CLOCK
    bool "Enable clock/time APIs, clock_gettime()/clock_settime() etc"
    select RT_USING_POSIX_DELAY
    default n

config RT_USING_POSIX_TIMER
    select RT_USING_KTIME
    select RT_USING_RESOURCE_ID
    bool "Enable timer APIs, timer_create()/timer_gettime() etc"
    default n

config RT_USING_PTHREADS
    bool "Enable pthreads APIs"
    select RT_USING_POSIX_CLOCK
    default n

if RT_USING_PTHREADS
    config PTHREAD_NUM_MAX
        int "Maximum number of pthreads"
        default 8
endif

config RT_USING_MODULE
    bool "Enable dynamic module APIs, dlopen()/dlsym()/dlclose() etc"
    default n

if RT_USING_MODULE
    config RT_USING_CUSTOM_DLMODULE
        bool "Enable load dynamic module by custom"
        default n
endif

rsource "ipc/Kconfig"

endmenu