diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-15 16:05:00 +0200 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2015-06-15 16:05:00 +0200 |
commit | 8a3b388ffee44db7d878296cb83660139e749962 (patch) | |
tree | 05c6549e5160cea77fee279e678f9a7dd1b3cac6 /sys/src/9/port/portdat.h | |
parent | 9ab48ee37050e2676ae0ddbf253bb3ae5567eb45 (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.h | 10 |
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 */ }; |