code: func runtime_SemacquireMutex(s *uint32, lifo bool) {
  	if (*s - semAwoken[s]) == 0 {
  		ch := make(chan bool)
  		if lifo {
  			semWaiters[s] = append([]chan bool{ch}, semWaiters[s]...)
  		} else {
  			semWaiters[s] = append(semWaiters[s], ch)
  		}
  		<-ch
  		semAwoken[s] -= 1
  		if semAwoken[s] == 0 {
  			delete(semAwoken, s)
  		}
  	}
  	*s--
  }
docs: // SemacquireMutex is like Semacquire, but for profiling contended Mutexes.
  // Mutex profiling is not supported, so just use the same implementation as runtime_Semacquire.
  // TODO: Investigate this. If it's possible to implement, consider doing so, otherwise remove this comment.