]> Zhao Yanbai Git Server - minix.git/commit
VFS: store process suspension state as union 45/3345/1
authorDavid van Moolenbroek <david@minix3.org>
Mon, 4 Jan 2016 18:42:13 +0000 (18:42 +0000)
committerDavid van Moolenbroek <david@minix3.org>
Fri, 5 Aug 2016 11:15:15 +0000 (11:15 +0000)
commit232819dd499bd777897c6a4ee3a77009ce269db9
treef985765a22f95894fb26fdf0b56b38c84920cfb2
parent0eb6caa076338b568e6cdf671b5c1605c4f9075e
VFS: store process suspension state as union

Previously, VFS would use various subsets of a number of fproc
structure fields to store state when the process is blocked
(suspended) for various reasons.  As a result, there was a fair
amount of abuse of fields, hidden state, and confusion as to
which fields were used with which suspension states.

Instead, the suspension state is now split into per-state
structures, which are then stored in a union.  Each of the union's
structures should be accessed only right before, during, and right
after the fp_blocked_on field is set to the corresponding blocking
type.  As a result, it is now very clear which fields are in use
at which times, and we even save a bit of memory as a side effect.

Change-Id: I5c24e353b6cb0c32eb41c70f89c5cfb23f6c93df
19 files changed:
minix/include/minix/ipc.h
minix/lib/libc/sys/getdents.c
minix/lib/libc/sys/read.c
minix/lib/libc/sys/write.c
minix/servers/is/dmp_fs.c
minix/servers/mib/proc.c
minix/servers/vfs/const.h
minix/servers/vfs/coredump.c
minix/servers/vfs/device.c
minix/servers/vfs/fproc.h
minix/servers/vfs/link.c
minix/servers/vfs/lock.c
minix/servers/vfs/main.c
minix/servers/vfs/misc.c
minix/servers/vfs/open.c
minix/servers/vfs/pipe.c
minix/servers/vfs/proto.h
minix/servers/vfs/read.c
minix/servers/vfs/write.c