diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-08-17 17:38:46 +0000 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2022-08-17 17:38:46 +0000 |
commit | 91f79ce9fab7c9920b6f331ca074d58c17755fc9 (patch) | |
tree | 66d35f064131f18746042a05773ca1ab61e29fa9 /sys/src/9/port/devproc.c | |
parent | c8e25d2a18c0395431abc5818a1d2f0561b0181f (diff) |
kernel: allocate notes in heap
de-bloat the proc structure by allocating notes
with on the heap instead of embedding them in
the proc structure.
This saves around 640 bytes per process.
Diffstat (limited to 'sys/src/9/port/devproc.c')
-rw-r--r-- | sys/src/9/port/devproc.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/sys/src/9/port/devproc.c b/sys/src/9/port/devproc.c index 503b00922..0d4ae5193 100644 --- a/sys/src/9/port/devproc.c +++ b/sys/src/9/port/devproc.c @@ -1138,14 +1138,18 @@ procread(Chan *c, void *va, long n, vlong off) if(p->nnote == 0) n = 0; else { - i = strlen(p->note[0].msg) + 1; + assert(p->note[0] != nil); + i = strlen(p->note[0]->msg) + 1; if(i < n) n = i; - memmove(va, p->note[0].msg, n-1); + memmove(va, p->note[0]->msg, n-1); ((char*)va)[n-1] = '\0'; + free(p->note[0]); if(--p->nnote == 0) p->notepending = 0; - memmove(p->note, p->note+1, p->nnote*sizeof(Note)); + else + memmove(&p->note[0], &p->note[1], p->nnote*sizeof(Note*)); + p->note[p->nnote] = nil; } break; |