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