/* * piThread.c: * Provide a simplified interface to pthreads * * Copyright (c) 2012 Gordon Henderson *********************************************************************** * This file is part of wiringPi: * https://github.com/WiringPi/WiringPi/ * * wiringPi is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * wiringPi 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 Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with wiringPi. * If not, see . *********************************************************************** */ #include #include "wiringPi.h" static pthread_mutex_t piMutexes [4] ; /* * piThreadCreate: * Create and start a thread ********************************************************************************* */ int piThreadCreate (void *(*fn)(void *)) { pthread_t myThread ; return pthread_create (&myThread, NULL, fn, NULL) ; } /* * piLock: piUnlock: * Activate/Deactivate a mutex. * We're keeping things simple here and only tracking 4 mutexes which * is more than enough for our entry-level pthread programming ********************************************************************************* */ void piLock (int key) { pthread_mutex_lock (&piMutexes [key]) ; } void piUnlock (int key) { pthread_mutex_unlock (&piMutexes [key]) ; }