diff options
author | kib <kib@FreeBSD.org> | 2012-07-19 19:09:12 +0000 |
---|---|---|
committer | kib <kib@FreeBSD.org> | 2012-07-19 19:09:12 +0000 |
commit | ebf0cf4fd1e5909a88ee09a6231268d30c9f14d7 (patch) | |
tree | be675caf28ff4a939913574d8fc2b7e490e94fd0 /lib/libedit | |
parent | 223e24232e0e22efa530b704fdcd40845e18cce8 (diff) | |
download | FreeBSD-src-ebf0cf4fd1e5909a88ee09a6231268d30c9f14d7.zip FreeBSD-src-ebf0cf4fd1e5909a88ee09a6231268d30c9f14d7.tar.gz |
Introduce curpcb magic variable, similar to curthread, which is MD
amd64. It is implemented as __pure2 inline with non-volatile asm read
from pcpu, which allows a compiler to cache its results.
Convert most PCPU_GET(pcb) and curthread->td_pcb accesses into curpcb.
Note that __curthread() uses magic value 0 as an offsetof(struct pcpu,
pc_curthread). It seems to be done this way due to machine/pcpu.h
needs to be processed before sys/pcpu.h, because machine/pcpu.h
contributes machine-depended fields to the struct pcpu definition. As
result, machine/pcpu.h cannot use struct pcpu yet.
The __curpcb() also uses a magic constant instead of offsetof(struct
pcpu, pc_curpcb) for the same reason. The constants are now defined as
symbols and CTASSERTs are added to ensure that future KBI changes do
not break the code.
Requested and reviewed by: bde
MFC after: 3 weeks
Diffstat (limited to 'lib/libedit')
0 files changed, 0 insertions, 0 deletions