1beacf11bSopenharmony_ci/****************************************************************************
2beacf11bSopenharmony_ci * drivers/bch/bchlib_sem.c
3beacf11bSopenharmony_ci *
4beacf11bSopenharmony_ci * Licensed to the Apache Software Foundation (ASF) under one or more
5beacf11bSopenharmony_ci * contributor license agreements.  See the NOTICE file distributed with
6beacf11bSopenharmony_ci * this work for additional information regarding copyright ownership.  The
7beacf11bSopenharmony_ci * ASF licenses this file to you under the Apache License, Version 2.0 (the
8beacf11bSopenharmony_ci * "License"); you may not use this file except in compliance with the
9beacf11bSopenharmony_ci * License.  You may obtain a copy of the License at
10beacf11bSopenharmony_ci *
11beacf11bSopenharmony_ci *   http://www.apache.org/licenses/LICENSE-2.0
12beacf11bSopenharmony_ci *
13beacf11bSopenharmony_ci * Unless required by applicable law or agreed to in writing, software
14beacf11bSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
15beacf11bSopenharmony_ci * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the
16beacf11bSopenharmony_ci * License for the specific language governing permissions and limitations
17beacf11bSopenharmony_ci * under the License.
18beacf11bSopenharmony_ci *
19beacf11bSopenharmony_ci ****************************************************************************/
20beacf11bSopenharmony_ci
21beacf11bSopenharmony_ci/****************************************************************************
22beacf11bSopenharmony_ci * Included Files
23beacf11bSopenharmony_ci ****************************************************************************/
24beacf11bSopenharmony_ci#include <errno.h>
25beacf11bSopenharmony_ci#include <assert.h>
26beacf11bSopenharmony_ci#include <semaphore.h>
27beacf11bSopenharmony_ci#include "bch.h"
28beacf11bSopenharmony_ci
29beacf11bSopenharmony_ci/****************************************************************************
30beacf11bSopenharmony_ci * Public Functions
31beacf11bSopenharmony_ci ****************************************************************************/
32beacf11bSopenharmony_ci
33beacf11bSopenharmony_ci/****************************************************************************
34beacf11bSopenharmony_ci * Name: bch_semtake
35beacf11bSopenharmony_ci ****************************************************************************/
36beacf11bSopenharmony_ci
37beacf11bSopenharmony_civoid bchlib_semtake(struct bchlib_s *bch)
38beacf11bSopenharmony_ci{
39beacf11bSopenharmony_ci  while (sem_wait(&bch->sem) != 0)
40beacf11bSopenharmony_ci    {
41beacf11bSopenharmony_ci      /* The only case that an error should occur here is if the wait was
42beacf11bSopenharmony_ci       * awakened by a signal.
43beacf11bSopenharmony_ci       */
44beacf11bSopenharmony_ci
45beacf11bSopenharmony_ci      LOS_ASSERT(get_errno() == EINTR);
46beacf11bSopenharmony_ci    }
47beacf11bSopenharmony_ci}
48