A modern Music Player Daemon based on Rockbox open source high quality audio player
libadwaita audio rust zig deno mpris rockbox mpd
at master 57 lines 1.8 kB view raw
1/*************************************************************************** 2 * __________ __ ___. 3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___ 4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ / 5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < < 6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \ 7 * \/ \/ \/ \/ \/ 8 * $Id$ 9 * 10 * Copyright (C) 2002 by Ulf Ralberg 11 * 12 * This program is free software; you can redistribute it and/or 13 * modify it under the terms of the GNU General Public License 14 * as published by the Free Software Foundation; either version 2 15 * of the License, or (at your option) any later version. 16 * 17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY 18 * KIND, either express or implied. 19 * 20 ****************************************************************************/ 21 22 23#ifndef CORELOCK_H 24#define CORELOCK_H 25 26#include "config.h" 27 28#ifndef HAVE_CORELOCK_OBJECT 29 30/* No atomic corelock op needed or just none defined */ 31#define corelock_init(cl) \ 32 do {} while (0) 33#define corelock_lock(cl) \ 34 do {} while (0) 35#define corelock_try_lock(cl) \ 36 do {} while (0) 37#define corelock_unlock(cl) \ 38 do {} while (0) 39 40#else 41 42/* No reliable atomic instruction available - use Peterson's algorithm */ 43struct corelock 44{ 45 volatile unsigned char myl[NUM_CORES]; 46 volatile unsigned char turn; 47} __attribute__((packed)); 48 49/* Too big to inline everywhere */ 50extern void corelock_init(struct corelock *cl); 51extern void corelock_lock(struct corelock *cl); 52extern int corelock_try_lock(struct corelock *cl); 53extern void corelock_unlock(struct corelock *cl); 54 55#endif /* HAVE_CORELOCK_OBJECT */ 56 57#endif /* CORELOCK_H */