summaryrefslogtreecommitdiff
path: root/sys/src/9/port/portdat.h
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2015-06-15 16:05:00 +0200
committercinap_lenrek <cinap_lenrek@felloff.net>2015-06-15 16:05:00 +0200
commit8a3b388ffee44db7d878296cb83660139e749962 (patch)
tree05c6549e5160cea77fee279e678f9a7dd1b3cac6 /sys/src/9/port/portdat.h
parent9ab48ee37050e2676ae0ddbf253bb3ae5567eb45 (diff)
kernel: implement separate wait queues for page allocation
give kernel processes and local disk file servers (procs having noswap flag set) a clear advantage for page allocation under starved condition by giving them ther own wait queue so they get readied as soon as pages become available.
Diffstat (limited to 'sys/src/9/port/portdat.h')
-rw-r--r--sys/src/9/port/portdat.h10
1 files changed, 8 insertions, 2 deletions
diff --git a/sys/src/9/port/portdat.h b/sys/src/9/port/portdat.h
index 81bafa4f8..f7501fedc 100644
--- a/sys/src/9/port/portdat.h
+++ b/sys/src/9/port/portdat.h
@@ -34,6 +34,7 @@ typedef struct QLock QLock;
typedef struct Queue Queue;
typedef struct Ref Ref;
typedef struct Rendez Rendez;
+typedef struct Rendezq Rendezq;
typedef struct Rgrp Rgrp;
typedef struct RWlock RWlock;
typedef struct Sargs Sargs;
@@ -77,6 +78,12 @@ struct QLock
int locked; /* flag */
};
+struct Rendezq
+{
+ QLock;
+ Rendez;
+};
+
struct RWlock
{
Lock use;
@@ -506,8 +513,7 @@ struct Palloc
ulong freecount; /* how many pages on free list now */
Page *pages; /* array of all pages */
ulong user; /* how many user pages */
- Rendez r; /* Sleep for free mem */
- QLock pwait; /* Queue of procs waiting for memory */
+ Rendezq pwait[2]; /* Queues of procs waiting for memory */
Pallocmem mem[16]; /* physical user page banks */
};