lock.h

来自「基于组件方式开发操作系统的OSKIT源代码」· C头文件 代码 · 共 91 行

H
91
字号
/* * Copyright (c) 1997, by Steve Passe * All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * 1. Redistributions of source code must retain the above copyright *    notice, this list of conditions and the following disclaimer. * 2. The name of the developer may NOT be used to endorse or promote products *    derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * *	$Id: lock.h,v 1.6 1998/04/06 11:38:17 phk Exp $ */#ifndef _MACHINE_LOCK_H_#define _MACHINE_LOCK_H_#ifdef SMP#error "Sorry, you'll have to define the arm smp locking functions yourself."#endif#define MPINTR_LOCK()#define MPINTR_UNLOCK()#define CPL_LOCK()#define CPL_UNLOCK()#define SCPL_LOCK()#define SCPL_UNLOCK()#define COM_LOCK()#define COM_UNLOCK()#define CLOCK_LOCK()#define CLOCK_UNLOCK()/* * Simple spin lock. * It is an error to hold one of these locks while a process is sleeping. */struct simplelock {	volatile int	lock_data;};/* functions in simplelock.s */void	s_lock_init		__P((struct simplelock *));void	s_lock			__P((struct simplelock *));int	s_lock_try		__P((struct simplelock *));void	s_unlock		__P((struct simplelock *));void	ss_lock			__P((struct simplelock *));void	ss_unlock		__P((struct simplelock *));void	s_lock_np		__P((struct simplelock *));void	s_unlock_np		__P((struct simplelock *));/* global data in mp_machdep.c */extern struct simplelock	imen_lock;extern struct simplelock	cpl_lock;extern struct simplelock	fast_intr_lock;extern struct simplelock	intr_lock;extern struct simplelock	clock_lock;extern struct simplelock	com_lock;extern struct simplelock	mpintr_lock;extern struct simplelock	mcount_lock;#if !defined(SIMPLELOCK_DEBUG) && NCPUS > 1/* * This set of defines turns on the real functions in i386/isa/apic_ipl.s. */#define	simple_lock_init(alp)	s_lock_init(alp)#define	simple_lock(alp)	s_lock(alp)#define	simple_lock_try(alp)	s_lock_try(alp)#define	simple_unlock(alp)	s_unlock(alp)#endif /* !SIMPLELOCK_DEBUG && NCPUS > 1 */#endif /* !_MACHINE_LOCK_H_ */

⌨️ 快捷键说明

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