![]() |
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 StmSharedMemorySampleItemTypeImpl_ *StmSharedMemorySampleItemType; 00070 00071 00074 typedef const struct StmSharedMemorySampleItemTypeImpl_ *ConstStmSharedMemorySampleItemType; 00075 00076 00140 stm_static_inline StmSharedMemorySampleItemType stmSharedMemorySampleItemTypeCreate 00141 ( 00142 const char *name, 00143 unsigned int flags, 00144 void *data 00145 ); 00146 00147 00175 stm_static_inline int stmSharedMemorySampleItemTypeDestroy 00176 ( 00177 StmSharedMemorySampleItemType shm 00178 ); 00179 00180 00201 stm_static_inline int stmSharedMemorySampleItemTypeInitStatus 00202 ( 00203 StmSharedMemorySampleItemType shm 00204 ); 00205 00206 00223 stm_static_inline int stmSharedMemorySampleItemTypeAdjustChild 00224 ( 00225 StmSharedMemorySampleItemType shm 00226 ); 00227 00228 00241 stm_static_inline const char *stmSharedMemorySampleItemTypeName 00242 ( 00243 StmSharedMemorySampleItemType shm 00244 ); 00245 00246 00266 stm_static_inline SampleItemType stmSharedMemorySampleItemTypeItem 00267 ( 00268 StmSharedMemorySampleItemType shm 00269 ); 00270 00271 00290 stm_static_inline SampleItemType stmSharedMemorySampleItemTypeLock 00291 ( 00292 StmSharedMemorySampleItemType shm 00293 ); 00294 00295 00317 stm_static_inline SampleItemType stmSharedMemorySampleItemTypeTryLock 00318 ( 00319 StmSharedMemorySampleItemType shm 00320 ); 00321 00322 00348 stm_static_inline SampleItemType stmSharedMemorySampleItemTypeTimedLock 00349 ( 00350 StmSharedMemorySampleItemType shm, 00351 StmInt64 absTimeMs 00352 ); 00353 00354 00374 stm_static_inline int stmSharedMemorySampleItemTypeUnlock 00375 ( 00376 StmSharedMemorySampleItemType shm 00377 ); 00378 00379 00399 typedef struct StmSharedMemoryRefCountedSampleItemType_ StmSharedMemoryRefCountedSampleItemType_; 00400 00401 00405 struct StmSharedMemoryRefCountedSampleItemType_ 00406 { 00407 SampleItemTypeImpl_ item; 00408 int initStatus; 00409 int refCount; 00410 }; 00411 00412 00415 typedef struct StmSharedMemorySampleItemTypeImpl_ StmSharedMemorySampleItemTypeImpl_; 00416 00417 00418 #ifdef _WIN32 00419 00423 struct StmSharedMemorySampleItemTypeImpl_ 00424 { 00427 StmSharedMemoryRefCountedSampleItemType_ *data; 00428 00429 StmSemaphore sem; 00430 StmBool locked; 00431 HANDLE fileMapping; 00432 }; 00433 00435 #else 00436 00440 struct StmSharedMemorySampleItemTypeImpl_ 00441 { 00444 StmSharedMemoryRefCountedSampleItemType_ *data; 00445 00446 StmL32NamedSem sem; 00447 StmBool locked; 00448 }; 00449 00451 #endif 00452 00453 00473 stm_static_inline int stmSharedMemorySampleItemTypeInit_ 00474 ( 00475 StmSharedMemorySampleItemTypeImpl_ *shm, 00476 const char *name, 00477 unsigned int flags, 00478 void *data 00479 ); 00480 00481 00496 stm_static_inline int stmSharedMemorySampleItemTypeDeinit_ 00497 ( 00498 StmSharedMemorySampleItemType shm 00499 ); 00500 00501 00508 stm_static_inline StmInt64 stmSharedMemorySampleItemTypeTimeoutMs_ (void); 00509 00510 00530 stm_static_inline int stmSharedMemorySampleItemTypeAdjustRefCount_ 00531 ( 00532 StmSharedMemorySampleItemType 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).