Home | History | Annotate | Download | only in include
History log of /src/sys/arch/x86/include/lock.h
RevisionDateAuthorComments
 1.29  12-Feb-2022  riastradh __cpu_simple_lock(9): Omit needless barriers in init.

It is, and always has been, the caller's responsibility to ensure the
lock is initialized before it can be used -- otherwise the memory
could hold garbage; it is nonsensical to even attempt locking
operations on it before initialization.

So there's no need to issue explicit barriers here. The barrier
seems to have been introduced in sys/arch/alpha/alpha/lock_machdep.c
rev. 1.1 (since moved to inline asm in alpha/include/lock.h) and then
copied & pasted into several other architectures.
 1.28  16-Sep-2017  christos more const
 1.27  22-Jan-2013  christos Allow for non inlined definitions for RUMP
 1.26  11-Oct-2012  apb Change "=r" to "=qQ" in a register constraint in an asm statement
for a register that is used with the "xchgb" instruction in the
definition of __cpu_simple_lock_try(). This fixes PR 45673, or at
least works around the gcc bug that might be behind PR 45673.

The output from "objdump -d" before and after this change is
identical, for the amd64 GENERIC kernel, the i386 GENERIC kernel,
and the i386 MONOLITHIC kernel.
 1.25  15-Jan-2009  pooka branches: 1.25.14; 1.25.20; 1.25.24; 1.25.26;
The last _KERNEL -> _HARDKERNEL in locking operations.
 1.24  28-Apr-2008  martin branches: 1.24.8;
Remove clause 3 and 4 from TNF licenses
 1.23  09-Jan-2008  yamt branches: 1.23.6; 1.23.8; 1.23.10;
fix SPINLOCK_BACKOFF_HOOK.
 1.22  04-Jan-2008  ad Start detangling lock.h from intr.h. This is likely to cause short term
breakage, but the mess of dependencies has been regularly breaking the
build recently anyhow.
 1.21  25-Dec-2007  perry Convert many of the uses of __attribute__ to equivalent
__packed, __unused and __dead macros from cdefs.h
 1.20  20-Dec-2007  ad - Make __cpu_simple_lock and similar real functions and patch at runtime.
- Remove old x86 atomic ops.
- Drop text alignment back to 16 on i386 (really, this time).
- Minor cleanup.
 1.19  07-Nov-2007  ad branches: 1.19.2; 1.19.6;
__cpu_simple_locks really should be simple, otherwise they can cause
problems for e.g. profiling.
 1.18  17-Oct-2007  garbled branches: 1.18.2;
Merge the ppcoea-renovation branch to HEAD.

This branch was a major cleanup and rototill of many of the various OEA
cpu based PPC ports that focused on sharing as much code as possible
between the various ports to eliminate near-identical copies of files in
every tree. Additionally there is a new PIC system that unifies the
interface to interrupt code for all different OEA ppc arches. The work
for this branch was done by a variety of people, too long to list here.

TODO:
bebox still needs work to complete the transition to -renovation.
ofppc still needs a bunch of work, which I will be looking at.
ev64260 still needs to be renovated
amigappc was not attempted.

NOTES:
pmppc was removed as an arch, and moved to a evbppc target.
 1.17  26-Sep-2007  ad branches: 1.17.2;
Make it build in userspace again.
 1.16  11-Sep-2007  skrll branches: 1.16.2;
Always provide __cpu_simple_lock_{set,clear}.

Fixes LOCKDEBUG kernel builds.
 1.15  10-Sep-2007  skrll Merge nick-csl-alignment.
 1.14  10-Feb-2007  ad branches: 1.14.6; 1.14.12; 1.14.14; 1.14.18; 1.14.22; 1.14.24;
NSPR builds seem to choke on 'inline'. Replace it with __inline.
 1.13  09-Feb-2007  ad Merge newlock2 to head.
 1.12  18-Dec-2006  ad __cpu_simple_unlock(): add a note about memory ordering and why this is
correct, contrary to Intel's documentation.
 1.11  28-Dec-2005  perry branches: 1.11.20; 1.11.22;
inline -> __inline
 1.10  24-Dec-2005  perry Remove leading __ from __(const|inline|signed|volatile) -- it is obsolete.
 1.9  16-Apr-2005  yamt branches: 1.9.2;
make multi inclusion protection macros consistent.
 1.8  25-Nov-2004  yamt branches: 1.8.4; 1.8.10;
remove __lockbarrier, which i forgot to remove in the previous.
 1.7  31-Oct-2004  yamt use __insn_barrier rather than homegrown equivalents.
 1.6  23-Oct-2004  yamt __cpu_simple_lock: loop without locking cache or asserting LOCK#.
 1.5  27-Oct-2003  junyoung Nuke __P().
 1.4  26-Oct-2003  yamt define SPINLOCK_SPIN_HOOK to let LK_SPIN lockmgr locks call x86_pause.
 1.3  26-Sep-2003  nathanw Move __cpu_simple_lock_t and __SIMPLELOCK_{UN,}LOCKED to machine/types.h
so that they can be used in a namespace-friendly way.
 1.2  08-May-2003  fvdl branches: 1.2.2;
Add x86_pause() inline function, containing the "pause" instruction
for i386, and nothing for amd64. Sprinkle it in various spinloops,
as recommended by Intel.
 1.1  27-Feb-2003  fvdl Move a few more files to x86/include. Trim the list of files to install
in /usr/include a bit.
 1.2.2.6  10-Nov-2005  skrll Sync with HEAD. Here we go again...
 1.2.2.5  29-Nov-2004  skrll Sync with HEAD.
 1.2.2.4  02-Nov-2004  skrll Sync with HEAD.
 1.2.2.3  21-Sep-2004  skrll Fix the sync with head I botched.
 1.2.2.2  18-Sep-2004  skrll Sync with HEAD.
 1.2.2.1  03-Aug-2004  skrll Sync with HEAD
 1.8.10.1  21-Apr-2005  tron Pull up revision 1.9 (requested by yamt in ticket #174):
make multi inclusion protection macros consistent.
 1.8.4.1  29-Apr-2005  kent sync with -current
 1.9.2.5  21-Jan-2008  yamt sync with head
 1.9.2.4  15-Nov-2007  yamt sync with head.
 1.9.2.3  27-Oct-2007  yamt sync with head.
 1.9.2.2  26-Feb-2007  yamt sync with head.
 1.9.2.1  30-Dec-2006  yamt sync with head.
 1.11.22.1  18-Dec-2006  yamt sync with head.
 1.11.20.4  02-Feb-2007  ad - Define memory barrier ops in lock_stubs.S.
- If lfence/mfence are available, patch them in at boot.
- Patch to a no-op if !MULTIPROCESSOR. XXX Should be determined at runtime.
 1.11.20.3  12-Jan-2007  ad Sync with head.
 1.11.20.2  29-Dec-2006  ad Checkpoint work in progress.
 1.11.20.1  20-Oct-2006  ad Define memory barriers: mb_read(), mb_write(), mb_memory()
 1.14.24.4  23-Mar-2008  matt sync with HEAD
 1.14.24.3  09-Jan-2008  matt sync with HEAD
 1.14.24.2  08-Nov-2007  matt sync with -HEAD
 1.14.24.1  06-Nov-2007  matt sync with HEAD
 1.14.22.2  11-Nov-2007  joerg Sync with HEAD.
 1.14.22.1  02-Oct-2007  joerg Sync with HEAD.
 1.14.18.2  15-Aug-2007  skrll Provide __SIMPLELOCK_{UN,}LOCKED_P and __cpu_simple_lock_{set,clear}
for all architectures.
 1.14.18.1  18-Jul-2007  skrll Initial work on provided correctly aligned __cpu_simple_lock_t for hppa
and first attempt at adapting i386 to the changes.

More to come.
 1.14.14.1  03-Oct-2007  garbled Sync with HEAD
 1.14.12.1  18-Apr-2007  thorpej Convert i386 and amd64 to the new atomic ops API.
 1.14.6.2  03-Dec-2007  ad Sync with HEAD.
 1.14.6.1  09-Oct-2007  ad Sync with head.
 1.16.2.1  06-Oct-2007  yamt sync with head.
 1.17.2.1  13-Nov-2007  bouyer Sync with HEAD
 1.18.2.3  18-Feb-2008  mjf Sync with HEAD.
 1.18.2.2  27-Dec-2007  mjf Sync with HEAD.
 1.18.2.1  19-Nov-2007  mjf Sync with HEAD.
 1.19.6.3  10-Jan-2008  bouyer Sync with HEAD
 1.19.6.2  08-Jan-2008  bouyer Sync with HEAD
 1.19.6.1  02-Jan-2008  bouyer Sync with HEAD
 1.19.2.1  26-Dec-2007  ad Sync with head.
 1.23.10.2  04-May-2009  yamt sync with head.
 1.23.10.1  16-May-2008  yamt sync with head.
 1.23.8.1  18-May-2008  yamt sync with head.
 1.23.6.2  17-Jan-2009  mjf Sync with HEAD.
 1.23.6.1  02-Jun-2008  mjf Sync with HEAD.
 1.24.8.1  19-Jan-2009  skrll Sync with HEAD.
 1.25.26.1  19-Oct-2012  riz Pull up following revision(s) (requested by apb in ticket #606):
sys/arch/x86/include/lock.h: revision 1.26
Change "=r" to "=qQ" in a register constraint in an asm statement
for a register that is used with the "xchgb" instruction in the
definition of __cpu_simple_lock_try(). This fixes PR 45673, or at
least works around the gcc bug that might be behind PR 45673.
The output from "objdump -d" before and after this change is
identical, for the amd64 GENERIC kernel, the i386 GENERIC kernel,
and the i386 MONOLITHIC kernel.
 1.25.24.3  03-Dec-2017  jdolecek update from HEAD
 1.25.24.2  25-Feb-2013  tls resync with head
 1.25.24.1  20-Nov-2012  tls Resync to 2012-11-19 00:00:00 UTC
 1.25.20.1  17-Oct-2012  riz Pull up following revision(s) (requested by apb in ticket #606):
sys/arch/x86/include/lock.h: revision 1.26
Change "=r" to "=qQ" in a register constraint in an asm statement
for a register that is used with the "xchgb" instruction in the
definition of __cpu_simple_lock_try(). This fixes PR 45673, or at
least works around the gcc bug that might be behind PR 45673.
The output from "objdump -d" before and after this change is
identical, for the amd64 GENERIC kernel, the i386 GENERIC kernel,
and the i386 MONOLITHIC kernel.
 1.25.14.2  22-May-2014  yamt sync with head.

for a reference, the tree before this commit was tagged
as yamt-pagecache-tag8.

this commit was splitted into small chunks to avoid
a limitation of cvs. ("Protocol error: too many arguments")
 1.25.14.1  30-Oct-2012  yamt sync with head

RSS XML Feed