<assertions>
  <assertion id="1" tag="ref:XSH6:31532:31533">
  The pthread_attr_setstack() shall set the thread creation stack attributes
  stackaddr and stacksize in the attr ojbect.
  The stack attributes specify the area of storage to be used for the created
  thread's stack.
  </assertion>

  <assertion id="2" tag="ref:XSH6:31534:31534">
  The stack attributes specify the area of storage to be used for the created
  thread's stack.
  </assertion>

  <assertion id="3" tag="ref:XSH6:31534:31538">
  The base of the storage shall be stackaddr, and the size of the storage
  shall be stacksize bytes. The stacksize shall be at least
  {PTHREAD_STACK_MIN}.  The stackaddr shall be aligned appropriately to be
  used as a stack.
  </assertion>

  <assertion id="4" tag="ref:XSH6:31538:31539">
  All pages within the stack described by stackaddr and stacksize shall be
  both readable and writable by the thread.
  </assertion>

  <assertion id="5" tag="ref:XSH6:31541:31541">
   If success, it returns zero.
  </assertion>

  <assertion id="6" tag="ref:XSH6:31541:31542 ref:XSH6:31547:31548">
   if fail, an error number shall be returned to indicate the error.
   The pthread_attr_setstack() function shall fail if:
   [EINVAL] The value of stacksize is less than {PTHREAD_STACK_MIN}
   or exceeds an implementation-defined limit.
  </assertion>

  <assertion id="7" tag="ref:XSH6:31550:31551">
   The function may fail if:
   [EINVAL] The value of stackaddr does not have proper alignment to
   be used as a stack or if (stackaddr + stacksize) lacks proper alignment.
  </assertion>

  <assertion id="8" tag="ref:XSH6:31552:31553">
   The function may fail if:
   [EACCES] The stack page(s) described by stackaddr and stacksize are not
   both readable and writable by the thread.
  </assertion>

  <assertion id="9" tag="ref:XSH6:31554:31554">
   Shall not return an error code of [EINTR]
  </assertion>
</assertions>
