tas.c.template
来自「关系型数据库 Postgresql 6.5.2」· TEMPLATE 代码 · 共 37 行
TEMPLATE
37 行
/* * To generate tas.s using this template: * 1. cc +O2 -S -c tas.c * 2. edit tas.s: * - replace the LDW with LDCWX * For details about the LDCWX instruction, see the "Precision * Architecture and Instruction Reference Manual" (09740-90014 of June * 1987), p. 5-38. */inttas(lock) int *lock; /* LDCWX is a word instruction */{ /* * LDCWX requires that we align the "semaphore" to a 16-byte * boundary. The actual datum is a single word (4 bytes). */ lock = ((long) lock + 15) & ~15; /* * The LDCWX instruction atomically clears the target word and * returns the previous value. Hence, if the instruction returns * 0, someone else has already acquired the lock before we tested * it (i.e., we have failed). * * Notice that this means that we actually clear the word to set * the lock and set the word to clear the lock. This is the * opposite behavior from the SPARC LDSTUB instruction. For some * reason everything that H-P does is rather baroque... */ if (*lock) { /* this generates the LDW */ return(0); /* success */ } return(1); /* failure */}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?