add sem_open func