semaphore.h
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:3k
源码类别:

GPS编程

开发平台:

C/C++

  1. /**
  2.  * file ucos2_semaphore.h
  3.  * author Wei Yongming <ymwei@minigui.org>
  4.  * date 2004/02/03
  5.  * 
  6.  * semaphore.h: This header contains the pthread semaphore definitions 
  7.  *              needed to support MiniGUI under uC/OS-II. 
  8.  *
  9.  verbatim
  10.     Copyright (C) 2004 Feynman Software.
  11.     This file is part of MiniGUI, a compact cross-platform Graphics 
  12.     User Interface (GUI) support system for real-time embedded systems.
  13.     This program is free software; you can redistribute it and/or modify
  14.     it under the terms of the GNU General Public License as published by
  15.     the Free Software Foundation; either version 2 of the License, or
  16.     (at your option) any later version.
  17.     This program is distributed in the hope that it will be useful,
  18.     but WITHOUT ANY WARRANTY; without even the implied warranty of
  19.     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20.     GNU General Public License for more details.
  21.     You should have received a copy of the GNU General Public License
  22.     along with this program; if not, write to the Free Software
  23.     Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  24.  endverbatim
  25.  */
  26. /*
  27.  * $Id: ucos2_semaphore.h,v 1.5 2004/10/20 02:02:11 weiym Exp $
  28.  *
  29.  *             MiniGUI for Linux/uClinux, eCos, uC/OS-II, VxWorks version 1.6.x
  30.  *             Copyright (C) 1998-2002 Wei Yongming.
  31.  *             Copyright (C) 2002-2004 Feynman Software.
  32.  */
  33. #ifndef UCOSII_SEMAPHORE_H
  34. #define UCOSII_SEMAPHORE_H
  35. #include "common.h"
  36. #ifdef __UCOSII__
  37. #define sem_t ucos2_sem_t
  38. #define SEM_VALUE_MAX USHRT_MAX
  39. //-----------------------------------------------------------------------------
  40. // Semaphore object definition
  41. typedef struct
  42. {
  43.     void* os_sema;
  44. } sem_t;
  45. //-----------------------------------------------------------------------------
  46. // Semaphore functions
  47. // Initialize semaphore to value.
  48. // pshared is not supported under uC/OS-II.
  49. int sem_init  (sem_t *sem, int pshared, unsigned int value);
  50. // Destroy the semaphore.
  51. int sem_destroy  (sem_t *sem);
  52. // Decrement value if >0 or wait for a post.
  53. int sem_wait  (sem_t *sem);
  54. // Decrement value if >0, return -1 if not.
  55. int sem_trywait  (sem_t *sem);
  56. // Increment value and wake a waiter if one is present.
  57. int sem_post  (sem_t *sem);
  58. // Get current value
  59. int sem_getvalue  (sem_t *sem, int *sval);
  60. #if 0 /* We do not implement the named semaphore functions */
  61. //-----------------------------------------------------------------------------
  62. // Named semaphore functions
  63. // Open an existing named semaphore, or create it.
  64. sem_t *sem_open  (const char *name, int oflag, ...);
  65. // Close descriptor for semaphore.
  66. int sem_close  (sem_t *sem);
  67. // Remove named semaphore
  68. int sem_unlink  (const char *name);
  69. //-----------------------------------------------------------------------------
  70. // Special return value for sem_open()
  71. #define SEM_FAILED      ((sem_t *)NULL)
  72. #endif /* We do not implement the named semaphore functions */
  73. #endif /* __UCOSII__ */
  74. #endif /* UCOSII_SEMAPHORE_H */