Give do_swap_read_write() routine more context so it can later do clipping etc
authorNick Downing <nick@ndcode.org>
Mon, 3 Jun 2019 11:10:41 +0000 (21:10 +1000)
committerNick Downing <nick@ndcode.org>
Mon, 3 Jun 2019 11:33:04 +0000 (21:33 +1000)
process.c

index 04d4811..02acc2c 100644 (file)
--- a/process.c
+++ b/process.c
@@ -45,17 +45,24 @@ void process_init(int n, int spare) {
 }
 
 static void do_swap_read_write(
-  int core_base,
-  int swap_base,
+  struct process *process,
+  int block,
   int blocks,
   bool dir
 ) {
 #ifndef INDIRECT_CORE
 #ifndef INDIRECT_SWAP
-  swap_read_write(core_base, swap_base, blocks, dir);
+  swap_read_write(
+    process->core_item.base + block,
+    process->swap_item.base + block,
+    blocks,
+    dir
+  );
 #else /* INDIRECT_SWAP */
-  int i;
+  int core_base, swap_base, i;
 
+  core_base = process->core_item.base + block,
+  swap_base = process->swap_item.base + block,
  printf("blocks");
   for (i = 0; i < blocks; ++i)
  {
@@ -70,8 +77,10 @@ static void do_swap_read_write(
  printf("\n");
 #endif /* INDIRECT_SWAP */
 #else /* INDIRECT_CORE */
-  int i;
+  int core_base, swap_base, i;
 
+  core_base = process->core_item.base + block,
+  swap_base = process->swap_item.base + block,
  printf("blocks");
   for (i = 0; i < blocks; ++i)
  {
@@ -142,12 +151,7 @@ static bool do_swap_out(int swap_out) {
     );
 #endif /* INDIRECT_SWAP */
  printf("write core [%d,%d) to swap [%d,%d)\n", process->core_item.base + block, process->core_item.base + block + blocks, process->swap_item.base + block, process->swap_item.base + block + blocks);
-    do_swap_read_write(
-      process->core_item.base + block,
-      process->swap_item.base + block,
-      blocks,
-      true
-    );
+    do_swap_read_write(process, block, blocks, true);
 #ifdef INDIRECT_CORE
     block_pool_free(
       &core_block_pool,
@@ -457,12 +461,7 @@ void process_run(struct process *process) {
     );
 #endif /* INDIRECT_CORE */
  printf("read swap [%d,%d) to core [%d,%d)\n", process->swap_item.base + block, process->swap_item.base + block + blocks, process->core_item.base + block, process->core_item.base + block + blocks);
-    do_swap_read_write(
-      process->core_item.base + block,
-      process->swap_item.base + block,
-      blocks,
-      false
-    );
+    do_swap_read_write(process, block, blocks, false);
 #ifdef INDIRECT_SWAP
     block_pool_free(
       &swap_block_pool,