143b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 243b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/*--------------------------------------------------------------------*/ 3278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn/*--- Private scheduler header. priv_sema.h ---*/ 443b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/*--------------------------------------------------------------------*/ 543b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 643b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/* 743b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn This file is part of Valgrind, a dynamic binary instrumentation 843b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn framework. 943b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 10ed39800a83baf5bffbe391f3974eb2af0f415f80Elliott Hughes Copyright (C) 2000-2017 Julian Seward 1143b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn jseward@acm.org 1243b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 1343b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn This program is free software; you can redistribute it and/or 1443b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn modify it under the terms of the GNU General Public License as 1543b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn published by the Free Software Foundation; either version 2 of the 1643b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn License, or (at your option) any later version. 1743b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 1843b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn This program is distributed in the hope that it will be useful, but 1943b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn WITHOUT ANY WARRANTY; without even the implied warranty of 2043b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 2143b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn General Public License for more details. 2243b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 2343b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn You should have received a copy of the GNU General Public License 2443b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn along with this program; if not, write to the Free Software 2543b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 2643b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 02111-1307, USA. 2743b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 2843b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn The GNU General Public License is contained in the file COPYING. 2943b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn*/ 3043b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 31278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn#ifndef __PRIV_SEMA_H 32278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn#define __PRIV_SEMA_H 33cbdddcfb32883a37e873907602d34bac523e3eadsewardj 34535fb1b49a80f2e880f755ee618381de3e222ddfflorian#include "pub_core_basics.h" // Bool 35535fb1b49a80f2e880f755ee618381de3e222ddfflorian 36278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn/* Not really a semaphore, but use a pipe for a token-passing scheme */ 37278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njntypedef struct { 38f76d27a697a7b0bf3b84490baf60623fc96a23afnjn Int pipe[2]; 39f76d27a697a7b0bf3b84490baf60623fc96a23afnjn Int owner_lwpid; /* who currently has it */ 40f76d27a697a7b0bf3b84490baf60623fc96a23afnjn Bool held_as_LL; /* if held, True == held by a _LL call */ 41278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn} vg_sema_t; 42cbdddcfb32883a37e873907602d34bac523e3eadsewardj 43278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn// Nb: this may be OS-specific, but let's not factor it out until we 447b85dd57f12f86a03f51f7cedea46147ef937f82njn// implement an OS port for which this isn't ok. 457eb7c58d166ac00515ec757dcf9c7b0d177d28c9sewardjvoid ML_(sema_init) ( vg_sema_t *sema ); 467eb7c58d166ac00515ec757dcf9c7b0d177d28c9sewardjvoid ML_(sema_deinit) ( vg_sema_t *sema ); 47f76d27a697a7b0bf3b84490baf60623fc96a23afnjnvoid ML_(sema_down) ( vg_sema_t *sema, Bool as_LL ); 48f76d27a697a7b0bf3b84490baf60623fc96a23afnjnvoid ML_(sema_up) ( vg_sema_t *sema, Bool as_LL ); 49cbdddcfb32883a37e873907602d34bac523e3eadsewardj 50278b3d6ff7b7a311ab49dff993b4aaf42b09ef13njn#endif // __PRIV_SEMA_H 51cbdddcfb32883a37e873907602d34bac523e3eadsewardj 5243b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/*--------------------------------------------------------------------*/ 5343b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/*--- end ---*/ 5443b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn/*--------------------------------------------------------------------*/ 5543b9a8abb139b86a24457fa3c19b9cb60ca17c3anjn 56