blob: a631385eda440f044b7c38a58f6e9760ac1cafb9 [file] [log] [blame]
<assertions>
<assertion id="1" tag="ref:XSH6:38847:38852">
sem_open test cases make sure that it establish connection between the
Semaphore and the process. There are checks for return values of the
address, increament, decrement, and close.
</assertion>
<assertion id="2" tag="ref:XSH6:38855:38874">
sem_open attempts to open an existing semaphore,
which it should fail when both O_CREAT and O_EXCL name exist during the
opening of a Semaphore.
</assertion>
<assertion id="3" tag="ref:XSH6:38897:38899">
errno return EACCESS: sem_open exist and the permissions of Oflag are denied.
</assertion>
<assertion id="4" tag="ref:XSH6:38900:38901">
errno return EEXIST: sem_open exist and O_CREAT and O_EXCL are set.
</assertion>
<assertion id="5" tag="ref:XSH6:38902:38903">
errno return EINVAL: Create a semaphore with a value of SEM_VALUE_MAX.
</assertion>
<assertion id="6" tag="ref:XSH6:38902:38903">
errno return ENOENT: O_CREAT is not set and the semaphore doesn't exist.
</assertion>
<assertion id="7" tag="ref:XSH6:38906:38908">
errno return ENAMETOOLONG: This test case tries to creat a named semaphore
that is longer than max limit.
</assertion>
<assertion id="8" tag="ref:XSH6:38848:38850">
After sem_open() is called, the process can use the sem_t address returned
to reference teh semaphore in calls to sem_wait(), sem_trywait(), sem_post(),
and sem_close().
</assertion>
<assertion id="9" tag="ref:XSH6:38851:38852">
Until sem_close(), _exit(), or exec*() is called, the semaphore can be used
in the process.
</assertion>
<assertion id="10" tag="ref:XSH6:38855:38856">
If O_CREAT is set and a semaphore already exists, O_CREAT has no effect.
</assertion>
<assertion id="11" tag="ref:XSH6:38855:38856">
If O_CREAT flag is used, sem_open has two additional args: mode_t which
sets the permission bits and unsigned value which sets the initial value
of the semaphore.
</assertion>
<assertion id="12" tag="ref:XSH6:38860:38861">
The initial value for the semaphore should be less than or equal to
SEM_VALUE_MAX. Any other initial value is invalid.
</assertion>
<assertion id="13" tag="ref:XSH6:38862:38864">
The effective user ID of the process == the user ID of the semaphore. The
system default group ID of the effective group ID of the process == the
group ID of the semaphore.
</assertion>
<assertion id="14" tag="ref:XSH6:38868:38870">
After sem_open has created semaphore "name", other process can use "name"
to connect to that semaphore.
</assertion>
<assertion id="15" tag="ref:XSH6TC2:39883:39886">
If a process calls sem_open several times with the same name, the same adress
must be returned as long as the semaphore has not been unlinked or closed as
many times as opened.
</assertion>
</assertions>