summaryrefslogtreecommitdiff
path: root/sys/src/9/port/devproc.c
diff options
context:
space:
mode:
authorcinap_lenrek <cinap_lenrek@felloff.net>2022-08-17 17:38:46 +0000
committercinap_lenrek <cinap_lenrek@felloff.net>2022-08-17 17:38:46 +0000
commit91f79ce9fab7c9920b6f331ca074d58c17755fc9 (patch)
tree66d35f064131f18746042a05773ca1ab61e29fa9 /sys/src/9/port/devproc.c
parentc8e25d2a18c0395431abc5818a1d2f0561b0181f (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.c10
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;