summaryrefslogtreecommitdiffstats
path: root/drivers
diff options
context:
space:
mode:
authorDavidlohr Bueso <dave@stgolabs.net>2019-05-14 15:46:26 -0700
committerLinus Torvalds <torvalds@linux-foundation.org>2019-05-14 19:52:52 -0700
commita5091fda4e3c202aeb1728a86d0fcd20fd0f4f5e (patch)
treece1b9afe61db8786cae4a5576e599d0f6d46d8e0 /drivers
parent0ecb58210bd9de14df62a614be07428ef10f9469 (diff)
downloadlinux-a5091fda4e3c202aeb1728a86d0fcd20fd0f4f5e.tar.gz
linux-a5091fda4e3c202aeb1728a86d0fcd20fd0f4f5e.tar.bz2
linux-a5091fda4e3c202aeb1728a86d0fcd20fd0f4f5e.zip
ipc/mqueue: optimize msg_get()
Our msg priorities became an rbtree as of d6629859b36d ("ipc/mqueue: improve performance of send/recv"). However, consuming a msg in msg_get() remains logarithmic (still being better than the case before of course). By applying well known techniques to cache pointers we can have the node with the highest priority in O(1), which is specially nice for the rt cases. Furthermore, some callers can call msg_get() in a loop. A new msg_tree_erase() helper is also added to encapsulate the tree removal and node_cache game. Passes ltp mq testcases. Link: http://lkml.kernel.org/r/20190321190216.1719-2-dave@stgolabs.net Signed-off-by: Davidlohr Bueso <dbueso@suse.de> Cc: Manfred Spraul <manfred@colorfullife.com> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions