spinlock.h

来自「Linux下的一个关系数据库源代码」· C头文件 代码 · 共 56 行

H
56
字号
#ifndef __SPINLOCK_H__#define __SPINLOCK_H__#if HAVE_CONFIG_H#include <config.h>#endif#include "tdb.h"#ifdef USE_SPINLOCKS#define RWLOCK_BIAS 0x1000UL/* OS SPECIFIC */#define MAX_BUSY_LOOPS 1000#undef USE_SCHED_YIELD/* ARCH SPECIFIC *//* We should make sure these are padded to a cache line */#if defined(SPARC_SPINLOCKS)typedef volatile char spinlock_t;#elif defined(POWERPC_SPINLOCKS)typedef volatile unsigned long spinlock_t;#elif defined(INTEL_SPINLOCKS)typedef volatile int spinlock_t;#elif defined(MIPS_SPINLOCKS)typedef volatile unsigned long spinlock_t;#else#error Need to implement spinlock code in spinlock.h#endiftypedef struct {	spinlock_t lock;	volatile int count;} tdb_rwlock_t;int tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type);int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type);int tdb_create_rwlocks(int fd, unsigned int hash_size);int tdb_clear_spinlocks(TDB_CONTEXT *tdb);#else /* !USE_SPINLOCKS */#if 0#define tdb_create_rwlocks(fd, hash_size) 0#define tdb_spinlock(tdb, list, rw_type) (-1)#define tdb_spinunlock(tdb, list, rw_type) (-1)#elseint tdb_spinlock(TDB_CONTEXT *tdb, int list, int rw_type);int tdb_spinunlock(TDB_CONTEXT *tdb, int list, int rw_type);int tdb_create_rwlocks(int fd, unsigned int hash_size);#endifint tdb_clear_spinlocks(TDB_CONTEXT *tdb);#endif#endif

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?