![]() |
Home | Libraries | Author | Links |
00001 /* ***** BEGIN LICENSE BLOCK ***** 00002 * Version: MPL 1.1/GPL 2.0/LGPL 2.1 00003 * 00004 * The contents of this file are subject to the Mozilla Public License Version 00005 * 1.1 (the "License"); you may not use this file except in compliance with 00006 * the License. You may obtain a copy of the License at 00007 * http://www.mozilla.org/MPL/ 00008 * 00009 * Software distributed under the License is distributed on an "AS IS" basis, 00010 * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License 00011 * for the specific language governing rights and limitations under the 00012 * License. 00013 * 00014 * The Original Code is the SysToMath C Libraries package (LibStmC). 00015 * 00016 * The Initial Developer of the Original Code is 00017 * Tom Michaelis, SysToMath. 00018 * Portions created by the Initial Developer are Copyright (C) 1994-2006 00019 * the Initial Developer. All Rights Reserved. 00020 * 00021 * Contributor(s): 00022 * 00023 * Alternatively, the contents of this file may be used under the terms of 00024 * either the GNU General Public License Version 2 or later (the "GPL"), or 00025 * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), 00026 * in which case the provisions of the GPL or the LGPL are applicable instead 00027 * of those above. If you wish to allow use of your version of this file only 00028 * under the terms of either the GPL or the LGPL, and not to allow others to 00029 * use your version of this file under the terms of the MPL, indicate your 00030 * decision by deleting the provisions above and replace them with the notice 00031 * and other provisions required by the GPL or the LGPL. If you do not delete 00032 * the provisions above, a recipient may use your version of this file under 00033 * the terms of any one of the MPL, the GPL or the LGPL. 00034 * 00035 * ***** END LICENSE BLOCK ***** */ 00036 00037 /****************************************************************************** 00038 * First Release 1994-07-20 00039 ******************************************************************************/ 00040 00041 00069 typedef struct StmSharedMemorySampleMboxTypeImpl_ *StmSharedMemorySampleMboxType; 00070 00071 00074 typedef const struct StmSharedMemorySampleMboxTypeImpl_ *ConstStmSharedMemorySampleMboxType; 00075 00076 00140 stm_static_inline StmSharedMemorySampleMboxType stmSharedMemorySampleMboxTypeCreate 00141 ( 00142 const char *name, 00143 unsigned int flags, 00144 void *data 00145 ); 00146 00147 00175 stm_static_inline int stmSharedMemorySampleMboxTypeDestroy 00176 ( 00177 StmSharedMemorySampleMboxType shm 00178 ); 00179 00180 00201 stm_static_inline int stmSharedMemorySampleMboxTypeInitStatus 00202 ( 00203 StmSharedMemorySampleMboxType shm 00204 ); 00205 00206 00223 stm_static_inline int stmSharedMemorySampleMboxTypeAdjustChild 00224 ( 00225 StmSharedMemorySampleMboxType shm 00226 ); 00227 00228 00241 stm_static_inline const char *stmSharedMemorySampleMboxTypeName 00242 ( 00243 StmSharedMemorySampleMboxType shm 00244 ); 00245 00246 00266 stm_static_inline SampleMboxType stmSharedMemorySampleMboxTypeItem 00267 ( 00268 StmSharedMemorySampleMboxType shm 00269 ); 00270 00271 00290 stm_static_inline SampleMboxType stmSharedMemorySampleMboxTypeLock 00291 ( 00292 StmSharedMemorySampleMboxType shm 00293 ); 00294 00295 00317 stm_static_inline SampleMboxType stmSharedMemorySampleMboxTypeTryLock 00318 ( 00319 StmSharedMemorySampleMboxType shm 00320 ); 00321 00322 00348 stm_static_inline SampleMboxType stmSharedMemorySampleMboxTypeTimedLock 00349 ( 00350 StmSharedMemorySampleMboxType shm, 00351 StmInt64 absTimeMs 00352 ); 00353 00354 00374 stm_static_inline int stmSharedMemorySampleMboxTypeUnlock 00375 ( 00376 StmSharedMemorySampleMboxType shm 00377 ); 00378 00379 00399 typedef struct StmSharedMemoryRefCountedSampleMboxType_ StmSharedMemoryRefCountedSampleMboxType_; 00400 00401 00405 struct StmSharedMemoryRefCountedSampleMboxType_ 00406 { 00407 SampleMboxTypeImpl_ item; 00408 int initStatus; 00409 int refCount; 00410 }; 00411 00412 00415 typedef struct StmSharedMemorySampleMboxTypeImpl_ StmSharedMemorySampleMboxTypeImpl_; 00416 00417 00418 #ifdef _WIN32 00419 00423 struct StmSharedMemorySampleMboxTypeImpl_ 00424 { 00427 StmSharedMemoryRefCountedSampleMboxType_ *data; 00428 00429 StmSemaphore sem; 00430 StmBool locked; 00431 HANDLE fileMapping; 00432 }; 00433 00435 #else 00436 00440 struct StmSharedMemorySampleMboxTypeImpl_ 00441 { 00444 StmSharedMemoryRefCountedSampleMboxType_ *data; 00445 00446 StmL32NamedSem sem; 00447 StmBool locked; 00448 }; 00449 00451 #endif 00452 00453 00473 stm_static_inline int stmSharedMemorySampleMboxTypeInit_ 00474 ( 00475 StmSharedMemorySampleMboxTypeImpl_ *shm, 00476 const char *name, 00477 unsigned int flags, 00478 void *data 00479 ); 00480 00481 00496 stm_static_inline int stmSharedMemorySampleMboxTypeDeinit_ 00497 ( 00498 StmSharedMemorySampleMboxType shm 00499 ); 00500 00501 00508 stm_static_inline StmInt64 stmSharedMemorySampleMboxTypeTimeoutMs_ (void); 00509 00510 00530 stm_static_inline int stmSharedMemorySampleMboxTypeAdjustRefCount_ 00531 ( 00532 StmSharedMemorySampleMboxType shm, 00533 int value, 00534 StmBool keepLocked 00535 ); 00536 00537
© Copyright Tom Michaelis 2002-2007
Distributed under the SysToMath Software License (See the accompanying file license.txt or a copy at www.SysToMath.com).