1
0
Files
irix-657m-src/eoe/include/mutex.h
2022-09-29 17:59:04 +03:00

81 lines
3.1 KiB
C

/**************************************************************************
* *
* Copyright (C) 1986-1993 Silicon Graphics, Inc. *
* *
* These coded instructions, statements, and computer programs contain *
* unpublished proprietary information of Silicon Graphics, Inc., and *
* are protected by Federal copyright law. They may not be disclosed *
* to third parties or copied or duplicated in any form, in whole or *
* in part, without the prior written consent of Silicon Graphics, Inc. *
* *
**************************************************************************/
#ifndef __MUTEX_H__
#define __MUTEX_H__
#ident "$Revision: 1.3 $"
#include <sgidefs.h>
#ifdef __cplusplus
extern "C" {
#endif
#define test_and_set (*__test_and_set)
#define test_then_and (*__test_then_and)
#define test_then_nand (*__test_then_nand)
#define test_then_not (*__test_then_not)
#define test_then_nor (*__test_then_nor)
#define test_then_xor (*__test_then_xor)
#define test_then_or (*__test_then_or)
#define test_then_add (*__test_then_add)
#define add_then_test (*__add_then_test)
#define atomic_set (void)(*__test_and_set)
#define test_and_set32 (*__test_and_set32)
#define test_then_and32 (*__test_then_and32)
#define test_then_nand32 (*__test_then_nand32)
#define test_then_not32 (*__test_then_not32)
#define test_then_nor32 (*__test_then_nor32)
#define test_then_xor32 (*__test_then_xor32)
#define test_then_or32 (*__test_then_or32)
#define test_then_add32 (*__test_then_add32)
#define add_then_test32 (*__add_then_test32)
#define atomic_set32 (void)(*__test_and_set32)
extern unsigned long test_and_set(unsigned long *, unsigned long);
extern unsigned long test_then_and(unsigned long *, unsigned long);
extern unsigned long test_then_nand(unsigned long *, unsigned long);
extern unsigned long test_then_not(unsigned long *, unsigned long);
extern unsigned long test_then_nor(unsigned long *, unsigned long);
extern unsigned long test_then_xor(unsigned long *, unsigned long);
extern unsigned long test_then_or(unsigned long *, unsigned long);
extern unsigned long test_then_add(unsigned long *, unsigned long);
extern unsigned long add_then_test(unsigned long *, unsigned long);
extern unsigned long atomic_op(
unsigned long (*)(unsigned long *, unsigned long),
unsigned long *, unsigned long);
extern __uint32_t test_and_set32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_and32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_nand32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_not32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_nor32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_xor32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_or32(__uint32_t *, __uint32_t);
extern __uint32_t test_then_add32(__uint32_t *, __uint32_t);
extern __uint32_t add_then_test32(__uint32_t *, __uint32_t);
extern __uint32_t atomic_op32(
__uint32_t (*)(__uint32_t *, __uint32_t),
__uint32_t *, __uint32_t);
/* ABI version */
extern int _test_and_set(int *, int);
extern int is_mips2(void);
#ifdef __cplusplus
}
#endif
#endif