diff options
author | attilio <attilio@FreeBSD.org> | 2012-12-28 17:41:36 +0000 |
---|---|---|
committer | attilio <attilio@FreeBSD.org> | 2012-12-28 17:41:36 +0000 |
commit | 5da31a993660c9f95f598228167307ae36fc3177 (patch) | |
tree | 1d166478174f2b155e17ede7894444b8a895a7d6 /contrib/gcc | |
parent | 1bd72ff3fbdfa47a3afaec309975829ddf71fc25 (diff) | |
download | FreeBSD-src-5da31a993660c9f95f598228167307ae36fc3177.zip FreeBSD-src-5da31a993660c9f95f598228167307ae36fc3177.tar.gz |
Improve bufring impl:
- Remove unused br_prod_bufs member
- Fixup r241037: buf_ring pads br_prod_* and br_cons_* members at 128
bytes, assuming a fixed cache line size for all the architectures.
However, the above mentioned revision broke the padding.
Use explicit padding to the CACHE_LINE_SIZE on the members that
mark the initial new padded sections. Of course, the padding is not
important for performance reasons in the DEBUG_BUFRING case, leaving
br_cons members to share the cache line with br_lock.
- Fixup r244732: by removing incorrectly added membar in
buf_ring_dequeue_sc() where surrounding locking shoud be enough.
- Drastically reduce the number of membar used (pratically reverting
r244732) by switching rmb() in buf_ring_dequeue_mc() and wmb() in
buf_ring_enqueue() to be complete barriers. This, along with
br_prod_bufs departure, should fix ordering issues as explained in
the provided comments.
This patch is not targeted for MFC.
Sponsored by: EMC / Isilon storage division
Reviewed by: glebius
Diffstat (limited to 'contrib/gcc')
0 files changed, 0 insertions, 0 deletions