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