00001 /* 00002 * This program is free software; you can redistribute it and/or modify 00003 * it under the terms of the GNU General Public License as published by 00004 * the Free Software Foundation; either version 2 of the License, or 00005 * (at your option) any later version. 00006 * 00007 * This program is distributed in the hope that it will be useful, 00008 * but WITHOUT ANY WARRANTY; without even the implied warranty of 00009 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00010 * GNU General Public License for more details. 00011 * 00012 * You should have received a copy of the GNU General Public License 00013 * along with this program; if not, write to the Free Software 00014 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 00015 * 00016 * (c)Copyright 2006 Hewlett-Packard Development Company, LP. 00017 * 00018 */ 00019 00020 #ifndef _SEMAPHOREIMPL_ 00021 #define _SEMAPHOREIMPL_ 00022 00023 #include <pthread.h> 00024 00025 typedef struct _c_semaphore { 00026 int v ; 00027 pthread_mutex_t mutex ; 00028 pthread_cond_t cond ; 00029 } _c_semaphore, *_pc_semaphore ; 00030 00031 00032 #define SemStruct ((_pc_semaphore)(m_impl)) 00033 #define SemCounter (((_pc_semaphore)(m_impl))->v) 00034 #define SemMutex &(((_pc_semaphore)(m_impl))->mutex) 00035 #define SemCond &(((_pc_semaphore)(m_impl))->cond) 00036 00037 #endif // _SEMAPHOREIMPL 00038