|
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
|
|
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
|
|
|
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
|