aboutsummaryrefslogtreecommitdiffstats
path: root/lib/devres.c
diff options
context:
space:
mode:
authorGlenn Elliott <gelliott@cs.unc.edu>2013-03-08 00:43:41 -0500
committerBjoern Brandenburg <bbb@mpi-sws.org>2013-08-07 03:47:07 -0400
commitbcaacec1ca714224807728a63eccb37e3d685cd6 (patch)
tree4c4fb3e05af0d9ad03428414cd8c2bb97105435a /lib/devres.c
parent3bd7e43d778163e9e1b696fdb5030b7717aba236 (diff)
uncachedev: mmap memory that is not cached by CPUs2013.1archived-2013.1
This patch creates a new character device, uncachedev. Pages of RAM allocated by this device are not cached by CPUs. Uses for such pages: 1) Determining *very* pessimistic emperical worst- case execution times. 2) Compare against performance with caches (quantify the avg. case benefit). 3) Deterministic memory accesses (access cannot cause a cache eviction.) 4) Theoretically, increased performance can be achieved by storing infrequently accessed data in uncache pages. uncachedev allocates pages with the pgprot_noncached() page attribute for user applications. Since pages allocated by uncachedev are not locked in memory by default, applications with any access level may mmap pages with uncachedev. Limitations: 1) Uncache pages must be MAP_PRIVATE. 2) Remapping not supported. Usage (user level): int size = NR_PAGES*PAGE_SIZE; int fd = open("/dev/litmus/uncache", O_RDWR); char *data = mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE, fd, 0); <...do stuff...> munmap(data, size);
Diffstat (limited to 'lib/devres.c')
0 files changed, 0 insertions, 0 deletions