muttypes.h
来自「ecos实时嵌入式操作系统」· C头文件 代码 · 共 139 行
H
139 行
#ifndef CYGONCE_POSIX_MUTTYPES_H#define CYGONCE_POSIX_MUTTYPES_H//=============================================================================//// muttypes.h//// POSIX mutex types header////=============================================================================//####ECOSGPLCOPYRIGHTBEGIN####// -------------------------------------------// This file is part of eCos, the Embedded Configurable Operating System.// Copyright (C) 1998, 1999, 2000, 2001, 2002 Red Hat, Inc.//// eCos is free software; you can redistribute it and/or modify it under// the terms of the GNU General Public License as published by the Free// Software Foundation; either version 2 or (at your option) any later version.//// eCos is distributed in the hope that it will be useful, but WITHOUT ANY// WARRANTY; without even the implied warranty of MERCHANTABILITY or// FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License// for more details.//// You should have received a copy of the GNU General Public License along// with eCos; if not, write to the Free Software Foundation, Inc.,// 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.//// As a special exception, if other files instantiate templates or use macros// or inline functions from this file, or you compile this file and link it// with other works to produce a work based on this file, this file does not// by itself cause the resulting work to be covered by the GNU General Public// License. However the source code for this file must still be made available// in accordance with section (3) of the GNU General Public License.//// This exception does not invalidate any other reasons why a work based on// this file might be covered by the GNU General Public License.//// Alternative licenses for eCos may be arranged by contacting Red Hat, Inc.// at http://sources.redhat.com/ecos/ecos-license/// -------------------------------------------//####ECOSGPLCOPYRIGHTEND####//=============================================================================//#####DESCRIPTIONBEGIN####//// Author(s): nickg// Contributors: nickg,jlarmour// Date: 2000-03-17// Purpose: POSIX types header// Description: This header contains POSIX type definitions for mutexes// and cond vars. These types are implementation defined.// // Usage: #include <sys/types.h>// ////####DESCRIPTIONEND####////=============================================================================#include <pkgconf/posix.h>#include <pkgconf/kernel.h>#include <cyg/infra/cyg_type.h>//-----------------------------------------------------------------------------// Mutex object// This structure must exactly correspond in size and layout to the underlying// eCos C++ class that implements this object. Because we have to support// PTHREAD_MUTEX_INITIALIZER we cannot abstract this object very easily.typedef struct{ CYG_WORD32 locked; CYG_ADDRESS owner; CYG_ADDRESS queue;#ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC CYG_WORD32 protocol; // this mutex's protocol#endif #ifdef CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING CYG_WORD32 ceiling; // mutex priority ceiling#endif } pthread_mutex_t;#if defined(CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC) &&\ defined(CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING)#define PTHREAD_MUTEX_INITIALIZER { 0, 0, 0, 0, 0 }#elif defined(CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_DYNAMIC) ||\ defined(CYGSEM_KERNEL_SYNCH_MUTEX_PRIORITY_INVERSION_PROTOCOL_CEILING)#define PTHREAD_MUTEX_INITIALIZER { 0, 0, 0, 0 }#else#define PTHREAD_MUTEX_INITIALIZER { 0, 0, 0 }#endif//-----------------------------------------------------------------------------// Mutex attributes structuretypedef struct{ int protocol;#ifdef _POSIX_THREAD_PRIO_PROTECT int prioceiling;#endif } pthread_mutexattr_t;// Values for protocol#define PTHREAD_PRIO_NONE 1#if defined(_POSIX_THREAD_PRIO_INHERIT)#define PTHREAD_PRIO_INHERIT 2#endif#if defined(_POSIX_THREAD_PRIO_PROTECT)#define PTHREAD_PRIO_PROTECT 3#endif//-----------------------------------------------------------------------------// Condition Variable structure.// Like mutexes, this must match the underlying eCos implementation class.typedef struct{ CYG_ADDRESS mutex; CYG_ADDRESS queue; } pthread_cond_t;#define PTHREAD_COND_INITIALIZER { 0, 0 }//-----------------------------------------------------------------------------// Condition variable attributes structuretypedef struct{ int dummy;} pthread_condattr_t;//-----------------------------------------------------------------------------#endif // ifndef CYGONCE_POSIX_MUTTYPES_H// End of muttypes.h
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?