Table B-4. AIX and Linux IPC API Comparison: Semaphores
AIX | LINUX | AIX ERRNO(s) | LINUX ERRNO(s) | Description |
---|
sem_init | sem_init | EFAULT | EINVAL | Initializes the semaphore object. |
| | EINVAL | ENOSYS | |
| | ENFILE | | |
| | ENOMEM | | |
| | ENOSPC | | |
| | ENOTSUP | | |
sem_wait | sem_wait | EACCES | Does not set Errno. Always returns 0. | Suspends the calling thread until the semaphore pointed to by sem has nonzero count. |
| | EAGAIN | | |
| | (semwait only) | |
| | EFAULT | | |
| | EIDRM | | |
| | EINTR | | |
sem_trywait | sem_trywait | EINVAL | EAGAIN | |
| | ENOMEM | | |
| | ENOTSUP | | |
sem_post | sem_post | EACCES | ERANGE | Unlocks a semaphore. |
| | EFAULT | | |
| | EIDRM | | |
| | EINVAL | | |
| | ENOMEM | | |
| | ENOTSUP | | |
sem_getvalue | sem_getvalue | EACCES | Does not set errno. Always returns 0. | Gets the value of a semaphore. |
| | EFAULT | | |
| | EINVAL | | |
| | ENOMEM | | |
| | ENOTSUP | | |
sem_destroy | sem_destroy | EACCES | EBUSY | Destroys a semaphore object, freeing the resources it might hold. |
| | EFAULT | | |
| | EINVAL | | |
| | ENOTSUP | | |
sem_timedwait | sem_timedwait | EFAULT | EENVAL | Advanced real-time wait. |
| | EINVAL | ETIMEDWAIT | |
| | ETIMEDWAIT | EDEADLK | |
| | EDEADLK | ENTR | |
| | ENtr | | |
sem_unlink | sem_unlink | EACCES | EACCES | Removes a named semaphore. |
| | EFAULT | ENAMETOLONG | |
| | ENAMETOOLONG | ENOENT | |
| | ENOENT | | |
| | ENOTSUP | | |
sem_close | sem_close | EFAULT | EINVAL | Closes a named semaphore. |
| | EINVAL | | |
| | ENOMEM | | |
| | ENOTSUP | | |
sem_open | sem_open | EACCES | EACCES | Opens a named semaphore. |
| | EEXIST | EEXIST | |
| | EFAULT | EINTR | |
| | EINVAL | EENVAL |
| | EMFILE | EMFILE | |
| | ENAMETOOLONG | ENAMETOOLONG | |
| | ENOMEM | ENFILE | |
| | ENOTSUP | ENOENT | |
| | ENOSPC | ENOSPC |
Table B-5. AIX and Linux IPC API Comparison: Message Queues
AIX -> Linux | AIX ERRNO(s) | Linux ERRNO(s) | Description |
---|
mq_close | EBADF | EBADF | Closes a message queue. |
| ENOMEM | EBUSY | |
| ENOTSUP | | |
mq_open | EACCES | EACCES | Opens a message queue. |
| EEXIST | EEXIST | |
| EFAULT | EINTR | |
| EINVAL | EINVAL | |
| ENOMEM | EMFILE | |
| ENOSPC | ENOSPC, | |
| ENOTSUP | ENOENT | |
| ENOENT | ENFILE | |
| ENFILE | ENAMETOOLONG | |
| ENAMETOOLONG | | |
mq_notify | EBADF | EBADF | Notifies a process that a message is available. |
| EBUSY | EBUSY | |
| EFAULT | | |
| ENOMEM | | |
| ENOTSUP | | |
| EINVAL | | |
mq_getattr | EBADF | EBADF | Gets message queue attributes. |
| EFAULT | | |
| ENOMEM | | |
| EINVAL | | |
| ENOTSUP | | |
mq_unlink | EACCES | EACCES | Removes a message queue. |
| EFAULT | ENOENT | |
| EINVAL | ENAMETOOLONG | |
| ENAMETOOLONG, | | |
| ENOTSUP | | |
mq_send | EAGAIN | EAGAIN | Sends a message to the message queue |
| EFAULT | EBADF | |
| EBADF | EINTR | |
| EIDRM | EINVAL | |
| EINTR | EMSGSIZE | |
| EINVAL | | |
| EMSGSIZE | | |
| ENOMEM | | |
| ENOTSUP | | |
mq_setattr | EBADF | EBADF | Sets message queue attributes |
| EFAULT | | |
| EINVAL | | |
| ENOMEM | | |
| ENOTSUP | | |
mq_send mq_timedsend, | EAGAIN | EAGAIN | Sends a message to a message queue (REALTIME) |
| EBADF | EBADF | |
| EFAULT | EINTR | |
| EIDRM | EINVAL | |
| EINTR | EMSGSIZE | |
| EINVAL | ETIMEDOUT | |
| EMSGSIZE | | |
| ENOTSUP | | |
| ETIMEDOUT | | |
mq_receive | EAGAIN | EAGAIN | Receives a message from a message queue |
| EBADF | EBADF | |
| EFAULT | EINVAL | |
| EIDRM | EMSGSIZE | |
| EINTR | EINTR | |
| EINVAL | EINVAL | |
| EMSGSIZE | ETIMEOUT | |
| ENOMEM | | |
| ENOTSUP | | |
msgctl | EACCES | EACCES | Provides message control operations |
| EPERM | EPERM | |
| EFAULT | EDIRM | |
| EINVAL | EFAULT | |
| | EINVAL | |
msgget | EACCES | ENOMEM | Gets a message queue identifier. |
| ENOENT | EACCES | |
| EEXIST | ENOENT | |
| ENOSPC | EEXIST | |
| | ENOSPC | |
msgrcv | E2BIG | E2BIG | Reads a message from a queue. |
| EACCES | EACCES | |
| ENOMSG | ENOMSG | |
| EFAULT | EFAULT | |
| EINTR | EINTR | |
| EIDRM | EIDRM | |
| EINVAL | EINVAL | |
Table B-6. AIX and Linux POSIX Threads Comparison: APIs Shown to Have Differences
API | Differences |
---|
pthread_attr_getschedparam | In AIX, the API takes two parameters: |
pthread_attr_setschedparm | pthread_attr_t* |
| struct sched_param* |
| In Linux, the API takes three parameters: |
| pthread_t |
| int (policy) |
| struct sched_param* |
pthread_attr_init | Creates a new thread attribute with default values with the following exceptions. |
| AIX: |
| Contention scope = PTHREAD_SCOPE_PROCESS |
| Sched param.sched_prio = 1 |
| Linux: |
| Contention scope = PTHREAD_SCOPE_SYSTEM |
| Sched param.sched_priority = 0 |
pthread_mutex_lock pthread_mutex_trylock pthread_mutex_unlockj | Lock mechanism between AIX and Linux is not compatible. The conditions for deadlocking differ, and the attribute values differ. |
| AIX: Possible attribute values are as follows: |
| PTHREAD_MUTEX_NORMAL |
| PTHREAD_MUTEX_ERRORCHECKING |
| PTHREAD_MUTEX_RECURSIVE |
| PTHREAD_MUTEX_DEFAULT |
| Linux: Possible attribute values are as follows: |
| #ifdef __USE_GNU |
| PTHREAD_MUTEX_INITIALIZER |
| PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP |
| PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP |
| #ifdef __USE_UNIX98 |
| PTHREAD_MUTEX_NORMAL |
| PTHREAD_MUTEX_ERRORCHECKING |
| PTHREAD_MUTEX_RECURSIVE |
| PTHREAD_MUTEX_DEFAULT |
pthread_mutexattr_gettype | Gets or sets a mutex type to the following values. |
pthread_mutexattr_settype | AIX: Possible attribute values are as follows: |
| PTHREAD_MUTEX_NORMAL |
| PTHREAD_MUTEX_ERRORCHECKING |
| PTHREAD_MUTEX_RECURSIVE |
| PTHREAD_MUTEX_DEFAULT |
| Linux: Possible attribute values are as follows: |
| #ifdef __USE_GNU |
| PTHREAD_MUTEX_INITIALIZER |
| PTHREAD_RECURSIVE_MUTEX_INITIALIZER_NP |
| PTHREAD_ERRORCHECK_MUTEX_INITIALIZER_NP |
| |
| #ifdef __USE_UNIX98 |
| PTHREAD_MUTEX_NORMAL |
| PTHREAD_MUTEX_ERRORCHECKING |
| PTHREAD_MUTEX_RECURSIVE |
| PTHREAD_MUTEX_DEFAULT |