Table 1. Process mapping

    Windows Linux Classification
    CreateProcess()
    CreateProcessAsUser()
    fork()
    setuid()
    exec()
    Mappable
    TerminateProcess() kill() Mappable
    SetThreadpriority()
    GetThreadPriority()
    Setpriority()
    GetPriority()
    Mappable
    GetCurrentProcessID() getpid() Mappable
    Exitprocess() exit() Mappable
    WaitForSingleObjec()
    WaitForMultipleObject()
    GetExitCodeProcess()
    waitpid()
    ※Using Sys V semaphores, WaitForSingleObjec/MultipleObject
    can be implemented
    Context specific
    GetEnvironmentVariable()
    SetEnvironmentVariable()
    getenv()
    setenv()
    Mappable

    Table 2. Thread mapping

    Windows Linux Classification
    CreateThread() pthread_create
    pthread_attr_init
    pthread_attr_setstacksize
    pthread_attr_destroy
    Mappable
    ThreadExit() pthread_exit Mappable
    WaitForSingleObject() pthread_join
    pthread_attr_setdetachstate
    pthread_detach
    Mappable
    SetPriorityClass()
    SetThreadPriority()
    setpriority
    sched_setscheduler
    sched_setparam

    pthread_setschedparam
    pthread_setschedpolicy
    pthread_attr_setschedparam
    pthread_attr_setschedpolicy> | Context Specific |

    Table 3. Synchronization mapping

    Windows Linux — threads Linux — process
    Mutex Mutex - pthread library System V semaphores
    Critical section Mutex - pthread library Not applicable as critical sections are used only between the threads of the same process
    Semaphore Conditional Variable with mutex - pthreads
    POSIX semaphores
    System V Semaphores
    Event Conditional Variable with mutex - pthreads System V Semaphores

    Table 4. Semaphore mapping

    Windows Linux — threads Linux — process Classification
    CreateSemaphore sem_init semget
    semctl
    Context specific
    OpenSemaphore Not applicable semget Context specific
    WaitForSingleObject sem_wait
    sem_trywait
    semop Context specific
    ReleaseSemaphore sem_post semop Context specific
    CloseHandle sem_destroy semctl Context specific

    Table 5. Event objects mapping

    Windows Linux — threads Linux — process Classification
    CreateEvent
    OpenEvent
    pthread_cond_init
    sem_init
    semget
    semctl
    Context specific
    SetEvent pthread_cond_signal
    sem_post
    semop Context specific
    ResetEvent N/A N/A Context specific
    WaitForSingleObject pthread_cond_wait
    pthread_cond_timedwait
    sem_wait
    sem_trywait
    semop Context specific
    CloseHandle pthread_cond_destroy
    sem_destroy
    semctl Context specific

    Table 6. Mutex mapping

    Windows Linux — threads Linux — process Classification
    CreateMutex pthreads_mutex_init semget
    semctl
    Context specific
    OpenMutex Not applicable semget Context specific
    WaitForSingleObject pthread_mutex_lock
    pthread_mutex_trylock
    semop Context specific
    ReleaseMutex pthread_mutex_unlock semop Context specific
    CloseHandle pthread_mutex_destroy semctl Context specific

    Table 7. Critical section mapping

    Windows Linux Classification
    InitializeCriticalSection
    InitializeCriticalSectionAndSpinCount
    pthreads_mutex_init Mappable
    EnterCriticalSection
    TryEnterCriticalSection
    pthread_mutex_lock
    pthread_mutex_trylock
    Mappable
    LeaveCriticalSection pthread_mutex_unlock Mappable
    DeleteCriticalSection pthread_mutex_destroy Mappable

    Table 6. Mutex mapping

    Windows Linux — threads Linux — process Classification
    SignalObjectAndWait semop semop Context specific
    WaitForMultipleObjects sem_wait
    sem_trywait
    semop Context specific