/***********************************************************************1* *2* This software is part of the ast package *3* Copyright (c) 1985-2011 AT&T Intellectual Property *4* and is licensed under the *5* Eclipse Public License, Version 1.0 *6* by AT&T Intellectual Property *7* *8* A copy of the License is available at *9* http://www.eclipse.org/org/documents/epl-v10.html *10* (with md5 checksum b35adb5213ca9657e911e9befb180842) *11* *12* Information and Software Systems Research *13* AT&T Research *14* Florham Park NJ *15* *16* Glenn Fowler <[email protected]> *17* David Korn <[email protected]> *18* Phong Vo <[email protected]> *19* *20***********************************************************************/21#include "sfhdr.h"2223/* Obtain/release exclusive use of a stream.24**25** Written by Kiem-Phong Vo.26*/2728/* the main locking/unlocking interface */29#if __STD_C30int sfmutex(Sfio_t* f, int type)31#else32int sfmutex(f, type)33Sfio_t* f;34int type;35#endif36{37#if !vt_threaded38NOTUSED(f); NOTUSED(type);39return 0;40#else4142SFONCE();4344if(!f)45return -1;4647if(!f->mutex)48{ if(f->bits&SF_PRIVATE)49return 0;5051vtmtxlock(_Sfmutex);52f->mutex = vtmtxopen(NIL(Vtmutex_t*), VT_INIT);53vtmtxunlock(_Sfmutex);54if(!f->mutex)55return -1;56}5758if(type == SFMTX_LOCK)59return vtmtxlock(f->mutex);60else if(type == SFMTX_TRYLOCK)61return vtmtxtrylock(f->mutex);62else if(type == SFMTX_UNLOCK)63return vtmtxunlock(f->mutex);64else if(type == SFMTX_CLRLOCK)65return vtmtxclrlock(f->mutex);66else return -1;67#endif /*vt_threaded*/68}697071