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

📄 asm.c

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 C
字号:
/* * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana *                         University Research and Technology *                         Corporation.  All rights reserved. * Copyright (c) 2004-2005 The University of Tennessee and The University *                         of Tennessee Research Foundation.  All rights *                         reserved. * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,  *                         University of Stuttgart.  All rights reserved. * Copyright (c) 2004-2005 The Regents of the University of California. *                         All rights reserved. * $COPYRIGHT$ *  * Additional copyrights may follow *  * $HEADER$ */#include "opal_config.h"#include "opal/sys/atomic.h"#include "opal/sys/architecture.h"#if OMPI_ASSEMBLY_ARCH == OMPI_SPARC#if OMPI_WANT_SMP_LOCKS#define LOCKS_TABLE_SIZE 8/* make sure to get into reasonably useful bits (so shift at least 5) */#define FIND_LOCK(addr) (&(locks_table[(((unsigned long) addr) >> 8) &  \                                       (LOCKS_TABLE_SIZE - 1)]))/* have to fix if you change LOCKS_TABLE_SIZE */static opal_atomic_lock_t locks_table[LOCKS_TABLE_SIZE] = {    { { OPAL_ATOMIC_UNLOCKED } },     { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } },    { { OPAL_ATOMIC_UNLOCKED } }};# else /* OMPI_WANT_SMP_LOCKS */#define LOCKS_TABLE_SIZE 1#define FIND_LOCK(addr) (&(locks_table[0]))static opal_atomic_lock_t locks_table[1] = { OPAL_ATOMIC_UNLOCKED };#endif /* OMPI_WANT_SMP_LOCKS */int32_topal_atomic_add_32(volatile int32_t *addr, int delta){    int32_t ret;    opal_atomic_lock(FIND_LOCK(addr));    ret = (*addr += delta);    opal_atomic_unlock(FIND_LOCK(addr));    return ret;}int32_topal_atomic_sub_32(volatile int32_t *addr, int delta){    int32_t ret;    opal_atomic_lock(FIND_LOCK(addr));    ret = (*addr -= delta);    opal_atomic_unlock(FIND_LOCK(addr));    return ret;}#endif /* OMPI_ASSEMBLY_ARCH == OMPI_SPARC32 */

⌨️ 快捷键说明

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