⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 smpprim.h

📁 ARM 嵌入式 系统 设计与实例开发 实验教材 二源码
💻 H
字号:
/*  $Id: smpprim.h,v 1.5 1996/08/29 09:48:49 davem Exp $ *  smpprim.h:  SMP locking primitives on the Sparc * *  God knows we won't be actually using this code for some time *  but I thought I'd write it since I knew how. * *  Copyright (C) 1995 David S. Miller (davem@caip.rutgers.edu) */#ifndef __SPARC_SMPPRIM_H#define __SPARC_SMPPRIM_H/* Test and set the unsigned byte at ADDR to 1.  Returns the previous * value.  On the Sparc we use the ldstub instruction since it is * atomic. */extern __inline__ __volatile__ char test_and_set(void *addr){	char state = 0;	__asm__ __volatile__("ldstub [%0], %1         ! test_and_set\n\t"			     "=r" (addr), "=r" (state) :			     "0" (addr), "1" (state) : "memory");	return state;}/* Initialize a spin-lock. */extern __inline__ __volatile__ smp_initlock(void *spinlock){	/* Unset the lock. */	*((unsigned char *) spinlock) = 0;	return;}/* This routine spins until it acquires the lock at ADDR. */extern __inline__ __volatile__ smp_lock(void *addr){	while(test_and_set(addr) == 0xff)		;	/* We now have the lock */	return;}/* This routine releases the lock at ADDR. */extern __inline__ __volatile__ smp_unlock(void *addr){	*((unsigned char *) addr) = 0;}#endif /* !(__SPARC_SMPPRIM_H) */

⌨️ 快捷键说明

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