1 /* glpenv02.c (thread local storage) */ 2 3 /*********************************************************************** 4 * This code is part of GLPK (GNU Linear Programming Kit). 5 * 6 * Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 7 * 2009, 2010 Andrew Makhorin, Department for Applied Informatics, 8 * Moscow Aviation Institute, Moscow, Russia. All rights reserved. 9 * E-mail: <mao@gnu.org>. 10 * 11 * GLPK is free software: you can redistribute it and/or modify it 12 * under the terms of the GNU General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * GLPK is distributed in the hope that it will be useful, but WITHOUT 17 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 18 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public 19 * License for more details. 20 * 21 * You should have received a copy of the GNU General Public License 22 * along with GLPK. If not, see <http://www.gnu.org/licenses/>. 23 ***********************************************************************/ 24 25 #include "glpenv.h" 26 27 static void *tls = NULL; 28 /* in a re-entrant version of the package this variable must be placed 29 in the Thread Local Storage (TLS) */ 30 31 /*********************************************************************** 32 * NAME 33 * 34 * tls_set_ptr - store global pointer in TLS 35 * 36 * SYNOPSIS 37 * 38 * #include "glpenv.h" 39 * void tls_set_ptr(void *ptr); 40 * 41 * DESCRIPTION 42 * 43 * The routine tls_set_ptr stores a pointer specified by the parameter 44 * ptr in the Thread Local Storage (TLS). */ 45 46 void tls_set_ptr(void *ptr) 47 { tls = ptr; 48 return; 49 } 50 51 /*********************************************************************** 52 * NAME 53 * 54 * tls_get_ptr - retrieve global pointer from TLS 55 * 56 * SYNOPSIS 57 * 58 * #include "glpenv.h" 59 * void *tls_get_ptr(void); 60 * 61 * RETURNS 62 * 63 * The routine tls_get_ptr returns a pointer previously stored by the 64 * routine tls_set_ptr. If the latter has not been called yet, NULL is 65 * returned. */ 66 67 void *tls_get_ptr(void) 68 { void *ptr; 69 ptr = tls; 70 return ptr; 71 } 72 73 /* eof */ 74