- Message type for PM_CLOCK_SETTIME, PM_CLOCK_GETTIME,
PM_CLOCK_GETRES, PM_GETTIMEOFDAY, PM_SETTIME.
- Small adaptation, message only transfert sub-second time in
nanoseconds, instead of both nano- and micro-seconds. Conversion
is done in userland, as required.
Change-Id: Ie4a6e0c457cc12626e85d2102c086a95311cf3e7
- Intorduce and use a message type for VFS_GETDENTS, VFS_READ,
VFS_WRITE.
- Some cleanup to related functions where vir_bytes are replaced (and
casted to/from, in parameter definition and local variables as well.
This allow to see more clearly which function receives unsafe
(pointer) values, or at least values which are not supposed to be
valid in the address space of VFS. The current patch does so only
for the minimal amount of functions which are concerned with the
introduction of the new message type.
Change-Id: I0cdca97409c4016d02fae067b48bf55d37572c5c
- Updated system calls VFS_ACCESS, VFS_CHDIR, VFS_CHMOD, VFS_CHROOT,
VFS_MKDIR, VFS_OPEN, VFS_RMDIR, VSF_UNLINK
- Removed M3_STRING and M3_LONG_STRING, which are tied to a specific
"generic" message, and replaced where needed with M_PATH_STRING_MAX,
which is tied to the mess_lc_vfs_path message.
Change-Id: If287c74f5ece937b9431e5d95b5b58a3c83ebff1
- Cleanup of unused macros for VFS - FS protocols
- Update servers/vfs/README to reflect the new requests names.
- Alphabetically re-order the message union, as well as minor
formatting, for readability.
Change-Id: Ief7c38489e93bcf5f795dccbf3a8e10b44b95af4
All of these requests share the same message type as at least one server
manages those requests in the same handler, just by checking the actual
type of the request, and then acting upon it.
Change-Id: I17337b4c67ae209523574c22ccc108cf5f1e65e9
These two request are handled by the same function in some FSes, which
prevents us from using two different kinds of messages.
Change-Id: Ib2fc80bdd56ef67db6b4c51cf8963353a761aab1
These two request are handled by the same function in some FSes, which
prevents us from using two different kinds of messages.
Change-Id: Iede3a0251d8d84ca7f121c56f30f42b045b0c737
Those messages offer a simple array of the given type. This should allow
for fast and simple prototyping.
When a protocol is fixed, then proper message types should be defined.
Change-Id: I4e98eeb0493924f3015862a51d14d894315e2bc2
This implements a near noop setpgid, unless the use is one equivalent
to setsid, in which case it will behave as such.
Also activates setpgrp, which is implemented in terms of setpgid.
Change-Id: I84411cb1957351aa1d3985623cd9e69bdf6f8d4c
. define _MINIX_SYSTEM for all system code from minix.service.mk
. hide some system-level declarations and definitions
behind _MINIX_SYSTEM to cleanly fix host tool build problems on
Minix (such as: NONE being defined and paddr_t being used but not
declared)
. the similar definition _SYSTEM is unsuitable as it changes the
values of errno definitions
Change-Id: I407de79e2575115243a074b16e79546a279cfa3e
Change the kernel to add features to vircopy and safecopies so that
transparent copy fixing won't happen to avoid deadlocks, and such copies
fail with EFAULT.
Transparently making copying work from filesystems (as normally done by
the kernel & VM when copying fails because of missing/readonly memory)
is problematic as it can happen that, for file-mapped ranges, that that
same filesystem that is blocked on the copy request is needed to satisfy
the memory range, leading to deadlock. Dito for VFS itself, if done with
a blocking call.
This change makes the copying done from a filesystem fail in such cases
with EFAULT by VFS adding the CPF_TRY flag to the grants. If a FS call
fails with EFAULT, VFS will then request the range to be made available
to VM after the FS is unblocked, allowing it to be used to satisfy the
range if need be in another VFS thread.
Similarly, for datacopies that VFS itself does, it uses the failable
vircopy variant and callers use a wrapper that talk to VM if necessary
to get the copy to work.
. kernel: add CPF_TRY flag to safecopies
. kernel: only request writable ranges to VM for the
target buffer when copying fails
. do copying in VFS TRY-first
. some fixes in VM to build SANITYCHECK mode
. add regression test for the cases where
- a FS system call needs memory mapped in a process that the
FS itself must map.
- such a range covers more than one file-mapped region.
. add 'try' mode to vircopy, physcopy
. add flags field to copy kernel call messages
. if CP_FLAG_TRY is set, do not transparently try
to fix memory ranges
. for use by VFS when accessing user buffers to avoid
deadlock
. remove some obsolete backwards compatability assignments
. VFS: let thread scheduling work for VM requests too
Allows VFS to make calls to VM while suspending and resuming
the currently running thread. Does currently not work for the
main thread.
. VM: add fix memory range call for use by VFS
Change-Id: I295794269cea51a3163519a9cfe5901301d90b32
The constants ANY, NONE, and SELF are now a function of the way the
endpoint number is split between a generation number and a process
slot number, rather than the other way around. This allows for the
use of bit masking and shifting instead of the previous (and more
expensive) multiplication and division.
Change-Id: Id890eea74435444128c75eb0c89816b948f43c0b
This patch adds pthread compatibility by using libmthread.
To use this with a program using pthreads, you have to replace
#include <pthread>
with
#define _MTHREADIFY_PTHREADS
#include <minix/mthreads>
This also changes the initialization function to be a constructor, which
is implicitly called before the call to main. This allows for
conformance with pthreads, while not paying a high price by checking on
each mthread_* call whether the library has been initialized or not.
As mthread_init is now a constructor, it also has been set as static, and
relevent calls removed from programs using it.
Change-Id: I2aa375db557958d2bee9a70d285aabb990c88f00