In process related stuff, change size to blocks and SIZE to BLOCKS
authorNick Downing <nick@ndcode.org>
Thu, 4 Apr 2019 07:46:28 +0000 (18:46 +1100)
committerNick Downing <nick@ndcode.org>
Thu, 4 Apr 2019 07:46:28 +0000 (18:46 +1100)
process.c
process.h
process_test_run.c

index caf2b23..7a19a6d 100644 (file)
--- a/process.c
+++ b/process.c
@@ -17,12 +17,12 @@ struct lru_item lru_head;
 
 struct process *victim;
 #ifdef PREALLOCATE_CORE
-int victim_core_size;
+int victim_core_blocks;
 #else
 struct pool_item victim_core_item;
 #endif
 #ifdef PREALLOCATE_SWAP
-int victim_swap_size;
+int victim_swap_blocks;
 #else
 struct pool_item victim_swap_item;
 #endif
@@ -54,18 +54,18 @@ static void check_invariants() {
 #endif
   if (victim == NULL) {
 #ifdef PREALLOCATE_CORE
-    assert(victim_core_size == 0);
+    assert(victim_core_blocks == 0);
 #else
     assert(victim_core_item.prev == NULL && victim_core_item.next == NULL);
 #endif
 #ifdef PREALLOCATE_SWAP
-    assert(victim_swap_size == 0);
+    assert(victim_swap_blocks == 0);
 #else 
     assert(victim_swap_item.prev == NULL && victim_swap_item.prev == NULL);
 #endif
   }
   for (int i = 0; i < n_processes; ++i)
-    if (processes[i].size == -1) {
+    if (processes[i].blocks == -1) {
 #ifdef PREALLOCATE_CORE
       assert(
         processes[i].core_item.prev == NULL &&
@@ -100,7 +100,7 @@ static void check_invariants() {
 #else
         assert(processes[i].pool_item.prev && processes[i].pool_item.next);
         assert(
-          processes[i].size ==
+          processes[i].blocks ==
             processes[i].pool_item.limit -
             processes[i].pool_item.base
         );
@@ -115,15 +115,15 @@ static void check_invariants() {
 #endif
 #ifndef PREALLOCATE_CORE
         assert(victim_core_item.prev && victim_core_item.next);
-        int victim_core_size = victim_core_item.limit - victim_core_item.base;
+        int victim_core_blocks = victim_core_item.limit - victim_core_item.base;
 #endif
-        assert(victim_core_size);
+        assert(victim_core_blocks);
 #ifndef PREALLOCATE_SWAP
         assert(victim_swap_item.prev && victim_swap_item.next);
-        int victim_swap_size = victim_swap_item.limit - victim_swap_item.base;
+        int victim_swap_blocks = victim_swap_item.limit - victim_swap_item.base;
 #endif
-        assert(victim_swap_size);
-        assert(processes[i].size == victim_core_size + victim_swap_size);
+        assert(victim_swap_blocks);
+        assert(processes[i].blocks == victim_core_blocks + victim_swap_blocks);
       }
       else {
 #ifdef PREALLOCATE_SWAP
@@ -136,13 +136,13 @@ static void check_invariants() {
 #else
         assert(processes[i].pool_item.prev && processes[i].pool_item.next);
         assert(
-          processes[i].size ==
+          processes[i].blocks ==
             processes[i].pool_item.limit -
             processes[i].pool_item.base
         );
 #endif
       }
-      avail -= processes[i].size;
+      avail -= processes[i].blocks;
     }
   assert(avail == process_avail);
 }
@@ -154,7 +154,7 @@ void process_init(int n, int spare) {
   n_processes = n;
 #ifndef NDEBUG
   for (int i = 0; i < n_processes; ++i)
-    processes[i].size = -1;
+    processes[i].blocks = -1;
 #endif
 
   process_avail = core_avail() + swap_avail() - spare;
@@ -174,12 +174,12 @@ void process_init(int n, int spare) {
   victim = NULL;
 #ifndef NDEBUG
 #ifdef PREALLOCATE_CORE
-  victim_core_size = 0;
+  victim_core_blocks = 0;
 #else
   memset(&victim_core_item, 0, sizeof(victim_core_item));
 #endif
 #ifdef PREALLOCATE_SWAP
-  victim_swap_size = 0;
+  victim_swap_blocks = 0;
 #else
   memset(&victim_swap_item, 0, sizeof(victim_swap_item));
 #endif
@@ -189,30 +189,30 @@ void process_init(int n, int spare) {
 
 static void do_swap_out(int swap_out) {
 #ifndef PREALLOCATE_CORE
-  int victim_core_size;
+  int victim_core_blocks;
 #endif
 #ifndef PREALLOCATE_SWAP
-  int victim_swap_size;
+  int victim_swap_blocks;
 #endif
-  int size, swap_base, core_base;
+  int blocks, swap_base, core_base;
 
   // loop entry code for the case of an existing victim
   if (swap_out > 0) {
     if (victim) {
       // calculate amount to swap out
 #ifndef PREALLOCATE_CORE
-      victim_core_size = victim_core_item.limit - victim_core_item.base;
+      victim_core_blocks = victim_core_item.limit - victim_core_item.base;
 #endif
 #ifndef PREALLOCATE_SWAP
-      victim_swap_size = victim_swap_item.limit - victim_swap_item.base;
+      victim_swap_blocks = victim_swap_item.limit - victim_swap_item.base;
 #endif
-      size = swap_out < victim_core_size ? swap_out : victim_core_size;
- printf("existing victim %d, swap out %d of %d\n", (int)(victim - processes), size, victim_core_size);
+      blocks = swap_out < victim_core_blocks ? swap_out : victim_core_blocks;
+ printf("existing victim %d, swap out %d of %d\n", (int)(victim - processes), blocks, victim_core_blocks);
 
       // increase swap allocation
-      victim_swap_size += size;
+      victim_swap_blocks += blocks;
 #ifndef PREALLOCATE_SWAP
-      rassert(swap_table_realloc(&victim_swap_item, victim_swap_size));
+      rassert(swap_table_realloc(&victim_swap_item, victim_swap_blocks));
 #endif
       goto loop_entry;
     }
@@ -230,44 +230,44 @@ static void do_swap_out(int swap_out) {
 
       // fully in core, take over only the per-process core item
 #ifdef PREALLOCATE_CORE
-      victim_core_size = victim->size;
+      victim_core_blocks = victim->blocks;
 #else
       pool_move_item(&victim->pool_item, &victim_core_item);
-      victim_core_size = victim_core_item.limit - victim_core_item.base;
- assert(victim_core_size == victim->size);
+      victim_core_blocks = victim_core_item.limit - victim_core_item.base;
+ assert(victim_core_blocks == victim->blocks);
 #endif
 
       // calculate amount to swap out
-      size = swap_out < victim_core_size ? swap_out : victim_core_size;
- printf("new victim %d, swap out %d of %d\n", (int)(victim - processes), size, victim_core_size);
+      blocks = swap_out < victim_core_blocks ? swap_out : victim_core_blocks;
+ printf("new victim %d, swap out %d of %d\n", (int)(victim - processes), blocks, victim_core_blocks);
 
       // add to swap pool, using dedicated swap item
-      victim_swap_size = size;
+      victim_swap_blocks = blocks;
 #ifndef PREALLOCATE_SWAP
-      rassert(swap_table_alloc(&victim_swap_item, victim_swap_size));
+      rassert(swap_table_alloc(&victim_swap_item, victim_swap_blocks));
 #endif
 
     loop_entry:
       // transfer data to swap
-      swap_base = DEDICATED_SWAP_LIMIT(victim, victim_swap_size) - size;
-      core_base = DEDICATED_CORE_BASE(victim, victim_swap_size - size);
+      swap_base = DEDICATED_SWAP_LIMIT(victim, victim_swap_blocks) - blocks;
+      core_base = DEDICATED_CORE_BASE(victim, victim_swap_blocks - blocks);
 #ifdef INDIRECT_SWAP
-      rassert(swap_block_alloc(swap_table_mem + swap_base, size));
+      rassert(swap_block_alloc(swap_table_mem + swap_base, blocks));
 #endif
-      swap_write(swap_base, core_base, size);
+      swap_write(swap_base, core_base, blocks);
 #ifdef INDIRECT_CORE
-      core_block_free(core_table_mem + core_base, size);
+      core_block_free(core_table_mem + core_base, blocks);
 #endif
 
       // see if victim fully swapped out
-      victim_core_size -= size;
-      if (victim_core_size) {
+      victim_core_blocks -= blocks;
+      if (victim_core_blocks) {
 #ifndef PREALLOCATE_CORE
         // no, reduce core allocation, using dedicated core item
-        rassert(core_table_realloc_base(&victim_core_item, victim_core_size));
+        rassert(core_table_realloc_base(&victim_core_item, victim_core_blocks));
 #endif
 
-        // as an optimization, skip the calculation of swap_out -= size
+        // as an optimization, skip the calculation of swap_out -= blocks
         return;
       }
 
@@ -282,42 +282,42 @@ static void do_swap_out(int swap_out) {
       pool_move_item(&victim_swap_item, &victim->pool_item);
 #endif
 
-      swap_out -= size;
+      swap_out -= blocks;
     } while (swap_out);
     victim = NULL;
 #ifdef PREALLOCATE_CORE
-    assert(victim_core_size == 0);
+    assert(victim_core_blocks == 0);
 #endif
 #ifdef PREALLOCATE_SWAP
-    victim_swap_size = 0;
+    victim_swap_blocks = 0;
 #endif
   }
 }
 
-bool process_alloc(struct process *process, int size) {
+bool process_alloc(struct process *process, int blocks) {
   int swap_out;
 
   // must not be already allocated
-  assert(process->size == -1);
+  assert(process->blocks == -1);
 
-  // check size
+  // check blocks
   if (
-    process_avail < size
+    process_avail < blocks
 #if defined(PREALLOCATE_SWAP) && !defined(MOVEABLE_SWAP)
-    || !swap_table_alloc(&process->swap_item, size)
+    || !swap_table_alloc(&process->swap_item, blocks)
 #endif
   )
     return false;
 
   // free up as much core as we need to
-  swap_out = size - core_avail();
+  swap_out = blocks - core_avail();
   do_swap_out(swap_out);
 
   // allocate core and possible swap
 #ifdef MOVEABLE_CORE
-  rassert(core_table_alloc(&PER_PROCESS_CORE_ITEM(process), size));
+  rassert(core_table_alloc(&PER_PROCESS_CORE_ITEM(process), blocks));
 #else
-  if (!core_table_alloc(&PER_PROCESS_CORE_ITEM(process), size)) {
+  if (!core_table_alloc(&PER_PROCESS_CORE_ITEM(process), blocks)) {
 #if defined(PREALLOCATE_SWAP) && !defined(MOVEABLE_SWAP)
     swap_table_free(&process->swap_item);
 #endif
@@ -325,7 +325,7 @@ bool process_alloc(struct process *process, int size) {
   }
 #endif
 #if defined(PREALLOCATE_SWAP) && defined(MOVEABLE_SWAP)
-  rassert(swap_table_alloc(&process->swap_item, size));
+  rassert(swap_table_alloc(&process->swap_item, blocks));
 #endif
 
 #ifdef INDIRECT_CORE
@@ -333,7 +333,7 @@ bool process_alloc(struct process *process, int size) {
   rassert(
     core_block_alloc(
       core_table_mem + PER_PROCESS_CORE_ITEM(process).base,
-      size
+      blocks
     )
   );
 #endif
@@ -345,91 +345,91 @@ bool process_alloc(struct process *process, int size) {
   process->lru_item.next->prev = &process->lru_item;
 
   // track total allocation
-  process->size = size;
-  process_avail -= size;
+  process->blocks = blocks;
+  process_avail -= blocks;
  check_invariants();
   return true;
 }
 
-bool process_realloc(struct process *process, int size) {
+bool process_realloc(struct process *process, int blocks) {
   int swap_out;
 
   // must be already allocated
-  assert(process->size != -1);
+  assert(process->blocks != -1);
 
   // must be fully in core
   assert(process->lru_item.prev != NULL);
 
-  // check size
-  int size_change = size - process->size;
-  if (process_avail < size_change)
+  // check blocks
+  int blocks_change = blocks - process->blocks;
+  if (process_avail < blocks_change)
     return false;
 #if defined(PREALLOCATE_SWAP) && !defined(MOVEABLE_SWAP)
   swap_table_free(&process->swap_item);
-  if (!swap_table_alloc(&process->swap_item, size)) {
-    rassert(swap_table_alloc(&process->swap_item, process->size));
+  if (!swap_table_alloc(&process->swap_item, blocks)) {
+    rassert(swap_table_alloc(&process->swap_item, process->blocks));
     return false;
   }
 #endif
 
   // free up as much core as we need to
-  swap_out = size_change - core_avail();
+  swap_out = blocks_change - core_avail();
   do_swap_out(swap_out);
 
   // reallocate core and possible swap
 #ifdef MOVEABLE_CORE
-  rassert(core_table_realloc(&PER_PROCESS_CORE_ITEM(process), size));
+  rassert(core_table_realloc(&PER_PROCESS_CORE_ITEM(process), blocks));
 #else
-  if (!core_table_realloc(&PER_PROCESS_CORE_ITEM(process), size)) {
+  if (!core_table_realloc(&PER_PROCESS_CORE_ITEM(process), blocks)) {
 #if defined(PREALLOCATE_SWAP) && !defined(MOVEABLE_SWAP)
     swap_table_free(&process->swap_item);
-    rassert(swap_table_alloc(&process->swap_item, process->size));
+    rassert(swap_table_alloc(&process->swap_item, process->blocks));
 #endif
     return false;
   }
 #endif
 #if defined(PREALLOCATE_SWAP) && defined(MOVEABLE_SWAP)
   swap_table_free(&process->swap_item);
-  rassert(swap_table_alloc(&process->swap_item, size));
+  rassert(swap_table_alloc(&process->swap_item, blocks));
 #endif
 
 #ifdef INDIRECT_CORE
   // populate new table with physical blocks or discard them
-  if (size_change >= 0)
+  if (blocks_change >= 0)
     rassert(
       core_block_alloc(
-        core_table_mem + PER_PROCESS_CORE_ITEM(process).limit - size_change,
-        size_change
+        core_table_mem + PER_PROCESS_CORE_ITEM(process).limit - blocks_change,
+        blocks_change
       )
     );
   else
     core_block_free(
       core_table_mem + PER_PROCESS_CORE_ITEM(process).limit,
-      -size_change
+      -blocks_change
     );
 #endif
  
   // track total allocation
-  process->size = size;
-  process_avail -= size_change;
+  process->blocks = blocks;
+  process_avail -= blocks_change;
  check_invariants();
   return true;
 }
 
 void process_run(struct process *process) {
-  int size, swap_out;
-  int process_core_size;
+  int blocks, swap_out;
+  int process_core_blocks;
 #ifndef PREALLOCATE_CORE
   struct pool_item process_core_item;
 #endif
-  int process_swap_size;
+  int process_swap_blocks;
 #ifndef PREALLOCATE_SWAP
   struct pool_item process_swap_item;
 #endif
   int swap_base, core_base;
 
   // must be already allocated
-  assert(process->size != -1);
+  assert(process->blocks != -1);
 
   // see whether fully in core
   if (process->lru_item.prev != NULL) {
@@ -453,19 +453,19 @@ void process_run(struct process *process) {
     if (process != victim) {
       // fully in swap, take over only the per-process swap item
 #ifdef PREALLOCATE_SWAP
-      process_swap_size = process->size;
+      process_swap_blocks = process->blocks;
 #else
       pool_move_item(&process->pool_item, &process_swap_item);
-      process_swap_size = process_swap_item.limit - process_swap_item.base;
- assert(process_swap_size == process->size);
+      process_swap_blocks = process_swap_item.limit - process_swap_item.base;
+ assert(process_swap_blocks == process->blocks);
 #endif
 
       // calculate amounts to swap out then in
-      size = process_swap_size;
-      swap_out = size - core_avail();
+      blocks = process_swap_blocks;
+      swap_out = blocks - core_avail();
 #if !defined(PREALLOCATE_SWAP) || defined(INDIRECT_SWAP)
       if (swap_out > swap_avail()) {
-        size += swap_avail() - swap_out;
+        blocks += swap_avail() - swap_out;
         swap_out = swap_avail();
       }
 #endif
@@ -474,9 +474,9 @@ void process_run(struct process *process) {
       do_swap_out(swap_out);
 
       // add to core pool, using dedicated core item
-      process_core_size = size;
+      process_core_blocks = blocks;
 #ifndef PREALLOCATE_CORE
-      rassert(core_table_alloc(&process_core_item, process_core_size));
+      rassert(core_table_alloc(&process_core_item, process_core_blocks));
 #endif
       goto loop_entry_full;
     }
@@ -484,22 +484,22 @@ void process_run(struct process *process) {
     // victim, take over the dedicated pool items
     victim = NULL;
 #ifdef PREALLOCATE_CORE
-    process_core_size = victim_core_size;
+    process_core_blocks = victim_core_blocks;
 #ifndef NDEBUG
-    victim_core_size = 0;
+    victim_core_blocks = 0;
 #endif
 #else
     pool_move_item(&victim_core_item, &process_core_item);
-    process_core_size = process_core_item.limit - process_core_item.base;
+    process_core_blocks = process_core_item.limit - process_core_item.base;
 #endif
 #ifdef PREALLOCATE_SWAP
-    process_swap_size = victim_swap_size;
+    process_swap_blocks = victim_swap_blocks;
 #ifndef NDEBUG
-    victim_swap_size = 0;
+    victim_swap_blocks = 0;
 #endif
 #else
     pool_move_item(&victim_swap_item, &process_swap_item);
-    process_swap_size = process_swap_item.limit - process_swap_item.base;
+    process_swap_blocks = process_swap_item.limit - process_swap_item.base;
     goto loop_entry_partial;
 #endif
 
@@ -507,16 +507,16 @@ void process_run(struct process *process) {
     do {
 #ifndef PREALLOCATE_SWAP
       // reduce swap allocation
-      rassert(swap_table_realloc(&process_swap_item, process_swap_size));
+      rassert(swap_table_realloc(&process_swap_item, process_swap_blocks));
 
     loop_entry_partial:
 #endif
       // calculate amounts to swap out then in
-      size = process_swap_size;
-      swap_out = size - core_avail();
+      blocks = process_swap_blocks;
+      swap_out = blocks - core_avail();
 #if !defined(PREALLOCATE_SWAP) || defined(INDIRECT_SWAP)
       if (swap_out > swap_avail()) {
-        size += swap_avail() - swap_out;
+        blocks += swap_avail() - swap_out;
         swap_out = swap_avail();
       }
 #endif
@@ -525,25 +525,25 @@ void process_run(struct process *process) {
       do_swap_out(swap_out);
 
       // increase core allocation
-      process_core_size += size;
+      process_core_blocks += blocks;
 #ifndef PREALLOCATE_CORE
-      rassert(core_table_realloc_base(&process_core_item, process_core_size));
+      rassert(core_table_realloc_base(&process_core_item, process_core_blocks));
 #endif
 
     loop_entry_full:
       // transfer data to core
-      swap_base = DEDICATED_SWAP_LIMIT(process, process_swap_size) - size;
-      core_base = DEDICATED_CORE_BASE(process, process_swap_size - size);
+      swap_base = DEDICATED_SWAP_LIMIT(process, process_swap_blocks) - blocks;
+      core_base = DEDICATED_CORE_BASE(process, process_swap_blocks - blocks);
 #ifdef INDIRECT_CORE
-      core_block_alloc(core_table_mem + core_base, size);
+      core_block_alloc(core_table_mem + core_base, blocks);
 #endif
-      swap_read(swap_base, core_base, size);
+      swap_read(swap_base, core_base, blocks);
 #ifdef INDIRECT_SWAP
-      swap_block_free(swap_table_mem + swap_base, size);
+      swap_block_free(swap_table_mem + swap_base, blocks);
 #endif
 
-      process_swap_size -= size;
-    } while (process_swap_size);
+      process_swap_blocks -= blocks;
+    } while (process_swap_blocks);
 
 #ifndef PREALLOCATE_CORE
     // move dedicated to per-process core item
@@ -566,7 +566,7 @@ void process_run(struct process *process) {
 
 void process_free(struct process *process) {
   // must be already allocated
-  assert(process->size != -1);
+  assert(process->blocks != -1);
 
   // see whether fully in core, victim, or fully in swap
   if (process->lru_item.prev != NULL) {
@@ -592,23 +592,23 @@ void process_free(struct process *process) {
 #ifdef INDIRECT_CORE
     core_block_free(
       core_table_mem +
-        DEDICATED_CORE_BASE(victim, DEDICATED_SWAP_SIZE(victim)),
-      DEDICATED_CORE_SIZE(victim)
+        DEDICATED_CORE_BASE(victim, DEDICATED_SWAP_BLOCKS(victim)),
+      DEDICATED_CORE_BLOCKS(victim)
     );
 #endif
 #ifdef PREALLOCATE_CORE
-    victim_core_size = 0;
+    victim_core_blocks = 0;
 #else
     core_table_free(&victim_core_item);
 #endif
 #ifdef INDIRECT_SWAP
     swap_block_free(
       swap_table_mem + DEDICATED_SWAP_ITEM(victim).base,
-      DEDICATED_SWAP_SIZE(victim)
+      DEDICATED_SWAP_BLOCKS(victim)
     );
 #endif
 #ifdef PREALLOCATE_SWAP
-    victim_swap_size = 0;
+    victim_swap_blocks = 0;
 #else
     swap_table_free(&victim_swap_item);
 #endif
@@ -637,9 +637,9 @@ void process_free(struct process *process) {
 #endif
  
   // track total allocation
-  process_avail += process->size;
+  process_avail += process->blocks;
 #ifndef NDEBUG
-  process->size = -1;
+  process->blocks = -1;
 #endif
  check_invariants();
 }
index 562efe4..2d26900 100644 (file)
--- a/process.h
+++ b/process.h
@@ -7,20 +7,20 @@
 #define PREALLOCATE_SWAP 1
 
 #ifdef PREALLOCATE_CORE
-#define DEDICATED_CORE_BASE(process, swap_size) \
-  (process->core_item.base + (swap_size))
+#define DEDICATED_CORE_BASE(process, swap_blocks) \
+  (process->core_item.base + (swap_blocks))
 #define DEDICATED_CORE_ITEM(process) \
   process->core_item
-#define DEDICATED_CORE_SIZE(process) \
-  process##_core_size
+#define DEDICATED_CORE_BLOCKS(process) \
+  process##_core_blocks
 #define PER_PROCESS_CORE_ITEM(process) \
   (process)->core_item
 #else
-#define DEDICATED_CORE_BASE(process, swap_size) \
+#define DEDICATED_CORE_BASE(process, swap_blocks) \
   process##_core_item.base
 #define DEDICATED_CORE_ITEM(process) \
   process##_core_item
-#define DEDICATED_CORE_SIZE(process) \
+#define DEDICATED_CORE_BLOCKS(process) \
   (process##_core_item.limit - process##_core_item.base)
 #define PER_PROCESS_CORE_ITEM(process) \
   (process)->pool_item
 #ifdef PREALLOCATE_SWAP
 #define DEDICATED_SWAP_ITEM(process) \
   process->swap_item
-#define DEDICATED_SWAP_LIMIT(process, swap_size) \
-  (process->swap_item.base + (swap_size))
-#define DEDICATED_SWAP_SIZE(process) \
-  process##_swap_size
+#define DEDICATED_SWAP_LIMIT(process, swap_blocks) \
+  (process->swap_item.base + (swap_blocks))
+#define DEDICATED_SWAP_BLOCKS(process) \
+  process##_swap_blocks
 #define PER_PROCESS_SWAP_ITEM(process) \
   (process)->swap_item
 #else
 #define DEDICATED_SWAP_ITEM(process) \
   process##_swap_item
-#define DEDICATED_SWAP_LIMIT(process, swap_size) \
+#define DEDICATED_SWAP_LIMIT(process, swap_blocks) \
   process##_swap_item.limit
-#define DEDICATED_SWAP_SIZE(process) \
+#define DEDICATED_SWAP_BLOCKS(process) \
   (process##_swap_item.limit - process##_swap_item.base)
 #define PER_PROCESS_SWAP_ITEM(process) \
   (process)->pool_item
@@ -62,7 +62,7 @@ extern struct process {
 #if !defined(PREALLOCATE_SWAP) || !defined(PREALLOCATE_CORE)
   struct pool_item pool_item;
 #endif
-  int size; // brk level
+  int blocks; // brk level
 } *processes;
 int n_processes;
 
@@ -72,19 +72,19 @@ extern struct lru_item lru_head;
 
 extern struct process *victim;
 #ifdef PREALLOCATE_CORE
-extern int victim_core_size;
+extern int victim_core_blocks;
 #else
 extern struct pool_item victim_core_item;
 #endif
 #ifdef PREALLOCATE_SWAP
-extern int victim_swap_size;
+extern int victim_swap_blocks;
 #else
 extern struct pool_item victim_swap_item;
 #endif
 
 void process_init(int n, int spare);
-bool process_alloc(struct process *process, int size);
-bool process_realloc(struct process *process, int size);
+bool process_alloc(struct process *process, int blocks);
+bool process_realloc(struct process *process, int blocks);
 void process_run(struct process *process);
 void process_free(struct process *process);
  
index 3a0d37a..990df48 100644 (file)
 int main(int argc, char **argv) {
   if (argc < 5) {
 #if defined(INDIRECT_CORE) && defined(INDIRECT_SWAP)
-    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [core_table_size [swap_table_size]]\n", argv[0]);
+    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [core_table_blocks [swap_table_blocks]]\n", argv[0]);
 #elif defined(INDIRECT_CORE)
-    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [core_table_size]\n", argv[0]);
+    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [core_table_blocks]\n", argv[0]);
 #elif defined(INDIRECT_SWAP)
-    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [swap_table_size]\n", argv[0]);
+    printf("usage: %s n_processes n_core_blocks n_swap_blocks spare [swap_table_blocks]\n", argv[0]);
 #else
     printf("usage: %s n_processes n_core_blocks n_swap_blocks spare\n", argv[0]);
 #endif
@@ -25,27 +25,27 @@ int main(int argc, char **argv) {
   int n_swap_blocks = atoi(argv[3]);
   int spare = atoi(argv[4]);
 #if defined(INDIRECT_CORE) && defined(INDIRECT_SWAP)
-  int core_table_size = argc >= 6 ? atoi(argv[5]) : n_core_blocks;
-  int swap_table_size = argc >= 7 ? atoi(argv[6]) : n_swap_blocks;
+  int core_table_blocks = argc >= 6 ? atoi(argv[5]) : n_core_blocks;
+  int swap_table_blocks = argc >= 7 ? atoi(argv[6]) : n_swap_blocks;
 #elif defined(INDIRECT_CORE)
-  int core_table_size = argc >= 6 ? atoi(argv[5]) : n_core_blocks;
+  int core_table_blocks = argc >= 6 ? atoi(argv[5]) : n_core_blocks;
 #elif defined(INDIRECT_SWAP)
-  int swap_table_size = argc >= 6 ? atoi(argv[5]) : n_swap_blocks;
+  int swap_table_blocks = argc >= 6 ? atoi(argv[5]) : n_swap_blocks;
 #endif
 
 #ifdef INDIRECT_CORE
-  core_init(n_core_blocks, core_table_size);
+  core_init(n_core_blocks, core_table_blocks);
 #else
   core_init(n_core_blocks);
 #endif
 #ifdef INDIRECT_SWAP
-  swap_init(n_swap_blocks, swap_table_size);
+  swap_init(n_swap_blocks, swap_table_blocks);
 #else
   swap_init(n_swap_blocks);
 #endif
   process_init(n_processes, spare);
   for (int i = 0; i < n_processes; ++i)
-    processes[i].size = -1;
+    processes[i].blocks = -1;
 
   while (true) {
  //printf("avail %d %d(%d) %d(%d)\n", process_avail, core_avail(), core_table.avail, swap_avail(), swap_table.avail);
@@ -59,10 +59,10 @@ int main(int argc, char **argv) {
       rassert(false);
     }
     if (strcmp(buf, "alloc") == 0) {
-      int process, size;
-      rassert(scanf("%d %d %s", &process, &size, buf) == 3);
+      int process, blocks;
+      rassert(scanf("%d %d %s", &process, &blocks, buf) == 3);
       rassert(process >= 0 && process < n_processes);
-      rassert(size >= 0);
+      rassert(blocks >= 0);
       bool success;
       if (strcmp(buf, "false") == 0)
         success = false;
@@ -73,11 +73,11 @@ int main(int argc, char **argv) {
       printf(
         "alloc %d %d %s\n",
         process,
-        size,
+        blocks,
         success ? "true" : "false"
       );
-      rassert(processes[process].size == -1);
-      bool result = process_alloc(processes + process, size);
+      rassert(processes[process].blocks == -1);
+      bool result = process_alloc(processes + process, blocks);
       printf(
         "... %s\n",
         result == success ?
@@ -88,16 +88,16 @@ int main(int argc, char **argv) {
         if (!success) {
           printf("... undo\n");
           process_free(processes + process);
-          processes[process].size = -1;
+          processes[process].blocks = -1;
         }
         else {
           int core_base = PER_PROCESS_CORE_ITEM(processes + process).base;
           assert(
             PER_PROCESS_CORE_ITEM(processes + process).limit ==
-              core_base + size
+              core_base + blocks
           );
- printf("new core [%d,%d)\n", core_base, core_base + size);
-          core_hash_init(process, core_base, 0, size);
+ printf("new core [%d,%d)\n", core_base, core_base + blocks);
+          core_hash_init(process, core_base, 0, blocks);
 #ifdef PREALLOCATE_SWAP
  printf("new swap [%d,%d)\n", PER_PROCESS_SWAP_ITEM(processes + process).base, PER_PROCESS_SWAP_ITEM(processes + process).limit);
 #endif
@@ -105,11 +105,11 @@ int main(int argc, char **argv) {
       }
     }
     else if (strcmp(buf, "realloc") == 0) {
-      int process, old_size, size;
-      rassert(scanf("%d %d %d %s", &process, &old_size, &size, buf) == 4);
+      int process, old_blocks, blocks;
+      rassert(scanf("%d %d %d %s", &process, &old_blocks, &blocks, buf) == 4);
       rassert(process >= 0 && process < n_processes);
-      rassert(old_size >= 0);
-      rassert(size >= 0);
+      rassert(old_blocks >= 0);
+      rassert(blocks >= 0);
       bool success;
       if (strcmp(buf, "false") == 0)
         success = false;
@@ -120,34 +120,34 @@ int main(int argc, char **argv) {
       printf(
         "realloc %d %d %d %s\n",
         process,
-        old_size,
-        size,
+        old_blocks,
+        blocks,
         success ? "true" : "false"
       );
-      if (processes[process].size == -1)
+      if (processes[process].blocks == -1)
         printf("... not allocated, ignore\n");
       else {
         int core_base = PER_PROCESS_CORE_ITEM(processes + process).base;
-        int actual_old_size = processes[process].size;
+        int actual_old_blocks = processes[process].blocks;
         rassert(
           PER_PROCESS_CORE_ITEM(processes + process).limit ==
-            core_base + actual_old_size
+            core_base + actual_old_blocks
         );
-        if (actual_old_size != old_size) {
+        if (actual_old_blocks != old_blocks) {
           printf(
-            "... old size %d, should be %d\n",
-            actual_old_size,
-            old_size
+            "... old blocks %d, should be %d\n",
+            actual_old_blocks,
+            old_blocks
           );
-          rassert(actual_old_size <= old_size);
+          rassert(actual_old_blocks <= old_blocks);
         }
 #ifdef PREALLOCATE_SWAP
- printf("old core [%d,%d) swap [%d,%d)\n", core_base, core_base + actual_old_size, PER_PROCESS_SWAP_ITEM(processes + process).base, PER_PROCESS_SWAP_ITEM(processes + process).limit);
+ printf("old core [%d,%d) swap [%d,%d)\n", core_base, core_base + actual_old_blocks, PER_PROCESS_SWAP_ITEM(processes + process).base, PER_PROCESS_SWAP_ITEM(processes + process).limit);
 #else
- printf("old core [%d,%d)\n", core_base, core_base + actual_old_size);
+ printf("old core [%d,%d)\n", core_base, core_base + actual_old_blocks);
 #endif
-        core_hash_verify(process, core_base, size, actual_old_size);
-        bool result = process_realloc(processes + process, size);
+        core_hash_verify(process, core_base, blocks, actual_old_blocks);
+        bool result = process_realloc(processes + process, blocks);
         printf(
           "... %s\n",
           result == success ?
@@ -157,20 +157,20 @@ int main(int argc, char **argv) {
         if (result) {
           if (!success) {
             printf("... undo\n");
-            rassert(process_realloc(processes + process, actual_old_size));
+            rassert(process_realloc(processes + process, actual_old_blocks));
           }
           else {
             core_base = PER_PROCESS_CORE_ITEM(processes + process).base;
             rassert(
               PER_PROCESS_CORE_ITEM(processes + process).limit ==
-                core_base + size
+                core_base + blocks
             );
 #ifdef PREALLOCATE_SWAP
- printf("new core [%d,%d) swap [%d,%d)\n", core_base, core_base + size, PER_PROCESS_SWAP_ITEM(processes + process).base, PER_PROCESS_SWAP_ITEM(processes + process).limit);
+ printf("new core [%d,%d) swap [%d,%d)\n", core_base, core_base + blocks, PER_PROCESS_SWAP_ITEM(processes + process).base, PER_PROCESS_SWAP_ITEM(processes + process).limit);
 #else
- printf("new core [%d,%d)\n", core_base, core_base + size);
+ printf("new core [%d,%d)\n", core_base, core_base + blocks);
 #endif
-            core_hash_init(process, core_base, actual_old_size, size);
+            core_hash_init(process, core_base, actual_old_blocks, blocks);
           }
         }
       }
@@ -180,7 +180,7 @@ int main(int argc, char **argv) {
       rassert(scanf("%d", &process) == 1);
       rassert(process >= 0 && process < n_processes);
       printf("run %d\n", process);
-      if (processes[process].size == -1)
+      if (processes[process].blocks == -1)
         printf("... not allocated, ignore\n");
       else {
         process_run(processes + process);
@@ -188,59 +188,59 @@ int main(int argc, char **argv) {
       }
     } 
     else if (strcmp(buf, "free") == 0) {
-      int process, old_size;
-      rassert(scanf("%d %d", &process, &old_size) == 2);
+      int process, old_blocks;
+      rassert(scanf("%d %d", &process, &old_blocks) == 2);
       rassert(process >= 0 && process < n_processes);
-      rassert(old_size >= 0);
-      printf("free %d %d\n", process, old_size);
-      if (processes[process].size == -1)
+      rassert(old_blocks >= 0);
+      printf("free %d %d\n", process, old_blocks);
+      if (processes[process].blocks == -1)
         printf("... not allocated, ignore\n");
       else {
-        int actual_old_size = processes[process].size;
-        if (actual_old_size != old_size) {
+        int actual_old_blocks = processes[process].blocks;
+        if (actual_old_blocks != old_blocks) {
           printf(
-            "... old size %d, should be %d\n",
-            actual_old_size,
-            old_size
+            "... old blocks %d, should be %d\n",
+            actual_old_blocks,
+            old_blocks
           );
-          rassert(actual_old_size <= old_size);
+          rassert(actual_old_blocks <= old_blocks);
         }
-        int swap_base, swap_size, core_base, core_size;
+        int swap_base, swap_blocks, core_base, core_blocks;
         if (processes[process].lru_item.prev != NULL) { // fully in core
           assert(processes + process != victim);
           swap_base = -1;
-          swap_size = 0;
+          swap_blocks = 0;
           core_base =
             PER_PROCESS_CORE_ITEM(processes + process).base;
-          core_size =
+          core_blocks =
             PER_PROCESS_CORE_ITEM(processes + process).limit - core_base;
         }
         else if (processes + process == victim) { // victim
           swap_base = DEDICATED_SWAP_ITEM(victim).base;
-          swap_size = DEDICATED_SWAP_SIZE(victim);
-          core_base = DEDICATED_CORE_BASE(victim, swap_size);
-          core_size = DEDICATED_CORE_SIZE(victim);
+          swap_blocks = DEDICATED_SWAP_BLOCKS(victim);
+          core_base = DEDICATED_CORE_BASE(victim, swap_blocks);
+          core_blocks = DEDICATED_CORE_BLOCKS(victim);
         }
         else { // fully in swap
           swap_base =
             PER_PROCESS_SWAP_ITEM(processes + process).base;
-          swap_size =
+          swap_blocks =
             PER_PROCESS_SWAP_ITEM(processes + process).limit - swap_base;
           core_base = -1;
-          core_size = 0;
+          core_blocks = 0;
         }
-        rassert(core_size + swap_size == actual_old_size);
- printf("old core [%d,%d) swap [%d,%d)\n", core_base, core_base + core_size, swap_base, swap_base + swap_size);
+        rassert(core_blocks + swap_blocks == actual_old_blocks);
+ printf("old core [%d,%d) swap [%d,%d)\n", core_base, core_base + core_blocks, swap_base, swap_base + swap_blocks);
  fflush(stdout);
         core_hash_verify(
           process,
-          core_base - swap_size,
-          swap_size,
-          swap_size + core_size
+          core_base - swap_blocks,
+          swap_blocks,
+          swap_blocks + core_blocks
         );
-        swap_hash_verify(process, swap_base, 0, swap_size);
+        swap_hash_verify(process, swap_base, 0, swap_blocks);
         process_free(processes + process);
-        processes[process].size = -1;
+        processes[process].blocks = -1;
         printf("... ok\n");
       }
     }
@@ -251,56 +251,56 @@ int main(int argc, char **argv) {
 done:
   printf("final state:\n");
   for (int i = 0; i < n_processes; ++i) {
-    if (processes[i].size == -1)
+    if (processes[i].blocks == -1)
       printf("process %d: not allocated\n", i);
     else {
-      int swap_base, swap_size, core_base, core_size;
+      int swap_base, swap_blocks, core_base, core_blocks;
       if (processes[i].lru_item.prev != NULL) { // fully in core
         assert(processes + i != victim);
         swap_base = -1;
-        swap_size = 0;
+        swap_blocks = 0;
         core_base = PER_PROCESS_CORE_ITEM(processes + i).base;
-        core_size = PER_PROCESS_CORE_ITEM(processes + i).limit - core_base;
+        core_blocks = PER_PROCESS_CORE_ITEM(processes + i).limit - core_base;
       }
       else if (processes + i == victim) { // victim
         swap_base = DEDICATED_SWAP_ITEM(victim).base;
-        swap_size = DEDICATED_SWAP_SIZE(victim);
-        core_base = DEDICATED_CORE_BASE(victim, swap_size);
-        core_size = DEDICATED_CORE_SIZE(victim);
+        swap_blocks = DEDICATED_SWAP_BLOCKS(victim);
+        core_base = DEDICATED_CORE_BASE(victim, swap_blocks);
+        core_blocks = DEDICATED_CORE_BLOCKS(victim);
       }
       else { // fully in swap
         swap_base = PER_PROCESS_SWAP_ITEM(processes + i).base;
-        swap_size = PER_PROCESS_SWAP_ITEM(processes + i).limit - swap_base;
+        swap_blocks = PER_PROCESS_SWAP_ITEM(processes + i).limit - swap_base;
         core_base = -1;
-        core_size = 0;
+        core_blocks = 0;
       }
-      rassert(core_size + swap_size == processes[i].size);
+      rassert(core_blocks + swap_blocks == processes[i].blocks);
       printf(
         "process %d: core [%d,%d) swap [%d,%d)\n",
         i,
         core_base,
-        core_base + core_size,
+        core_base + core_blocks,
         swap_base,
-        swap_base + swap_size
+        swap_base + swap_blocks
       );
       core_hash_verify(
         i,
-        core_base - swap_size,
-        swap_size,
-        swap_size + core_size
+        core_base - swap_blocks,
+        swap_blocks,
+        swap_blocks + core_blocks
       );
 #ifdef INDIRECT_CORE
-      core_block_free(core_table_mem + core_base, core_size);
+      core_block_free(core_table_mem + core_base, core_blocks);
 #endif
-      swap_hash_verify(i, swap_base, 0, swap_size);
+      swap_hash_verify(i, swap_base, 0, swap_blocks);
 #ifdef INDIRECT_SWAP
-      swap_block_free(swap_table_mem + swap_base, swap_size);
+      swap_block_free(swap_table_mem + swap_base, swap_blocks);
 #endif
     }
   }
 
 #ifdef INDIRECT_CORE
-  for (int i = 0; i < core_table_size; ++i)
+  for (int i = 0; i < core_table_blocks; ++i)
     rassert(core_table_mem[i] == 0x55555555);
   {
     int j = n_core_blocks >> 3;
@@ -315,7 +315,7 @@ done:
     for (int j = 0; j < BLOCK_SIZE; ++j)
       rassert(core_block_mem[i * BLOCK_SIZE + j] == 0xaa);
 #ifdef INDIRECT_SWAP
-  for (int i = 0; i < swap_table_size; ++i)
+  for (int i = 0; i < swap_table_blocks; ++i)
     rassert(swap_table_mem[i] == 0x55555555);
   {
     int j = n_swap_blocks >> 3;