summaryrefslogtreecommitdiff
path: root/rts/Task.c
diff options
context:
space:
mode:
authorSimon Marlow <marlowsd@gmail.com>2008-10-23 08:07:49 +0000
committerSimon Marlow <marlowsd@gmail.com>2008-10-23 08:07:49 +0000
commit4af25e1a72f2d0f1f523fe5b13c71f1b3dc7a5a5 (patch)
tree4572a4687c5a6b2d02195870eabef32383a2cdbc /rts/Task.c
parent05dce654a3c65e1c7a68ca55f990eed8bd3ec700 (diff)
downloadhaskell-4af25e1a72f2d0f1f523fe5b13c71f1b3dc7a5a5.tar.gz
Pad Capabilities and Tasks to 64 bytes
This is just good practice to avoid placing two structures heavily accessed by different CPUs on the same cache line
Diffstat (limited to 'rts/Task.c')
-rw-r--r--rts/Task.c3
1 files changed, 2 insertions, 1 deletions
diff --git a/rts/Task.c b/rts/Task.c
index 0ec60f7508..7120436bb4 100644
--- a/rts/Task.c
+++ b/rts/Task.c
@@ -114,7 +114,8 @@ newTask (void)
#endif
Task *task;
- task = stgMallocBytes(sizeof(Task), "newTask");
+#define ROUND_TO_CACHE_LINE(x) ((((x)+63) / 64) * 64)
+ task = stgMallocBytes(ROUND_TO_CACHE_LINE(sizeof(Task)), "newTask");
task->cap = NULL;
task->stopped = rtsFalse;