The memory-mapped files implementation (mmap() etc.) is implemented with
the help of the filesystems using the in-VM FS cache. Filesystems tell it
about all cached blocks and their metadata. Metadata is: device offset and,
if any (and known), inode number and in-inode offset. VM can then map in
requested memory-mapped file blocks, and request them if necessary.
A limitation of this system is that filesystem block sizes that are not
a multiple of the VM system (and VM hardware) page size are not possible;
we can't map blocks in partially. (We can copy, but then the benefits of
mapping and sharing the physical pages is gone.) So until before this
commit various pieces of caching code assumed page size multiple
blocksizes. This isn't strictly necessary as long as mmap() needn't be
supported on that FS.
This change allows the in-FS cache code (libminixfs) to allocate any-sized
blocks, and will not interact with the VM cache for non-pagesize-multiple
blocks. In that case it will also signal requestors, by failing 'peek'
requests, that mmap() should not be supported on this FS. VM and VFS
will then gracefully fail all file-mapping mmap() calls, and exec() will
fall back to copying executable blocks instead of mmap()ping executables.
As a result, 3 diagnostics that signal file-mapped mmap()s failing
(hitherto an unusual occurence) are disabled, as ld.so does file-mapped
mmap()s to map in objects it needs. On FSes not supporting it this situation
is legitimate and shouldn't cause so much noise. ld.so will revert to its own
minix-specific allocate+copy style of starting executables if mmap()s fail.
Change-Id: Iecb1c8090f5e0be28da8f5181bb35084eb18f67b
. mkfs.mfs: -T option to set timestamp of files on FS
. mkproto: normalize (sort) order of directory entries
. mkproto bugfix: always print mode in 3 digits (%03o)
Change-Id: Ice06d5f05500cd2ac9b063156c340b8f78fe6441
Jenkins was failing on usr.bin/calendar/calendar.c:386:6: with
"error: 'fd' may be used uninitialized in this function"
when the level of error checking was turned up.
The error was recently fixed upstream. This commit updates
calendar.c to upstream rev 1.50, updates calendar files too.
Change-Id: Ibe0695bf5d0315972f2a4fb1175219dd12cbfa5a
eepromread could only read EEPROMs through the /dev/i2c interface.
Once the cat24c256 driver is started and claims/reserves the
device, it can no longer be read through the /dev/i2c interface.
This patch adds support for reading from EEPROMs through the
/dev/eeprom interface. For example, to read the on-board eeprom
on the BBB, one would do `eepromread -f /dev/eepromb1s50 -i`.
Change-Id: If08ce37231e593982eeb109bdd6d5458ad271108
. build writeisofs as a native tool too for it
. also mkfs.mfs: make missing file in proto nonlethal
. make setup script a little more self-sufficient
. hdboot: use INSTALL_FILE instead of INSTALL so that the
results get added to the METALOG
Change-Id: Id233e4c861f81046bf6c4be0510b8a3bf39ff9be
Minix-specific changes were needed in msg_sys.def:
* use minix_mmap()/minix_munmap() since mmap()/munmap() aren't
defined on Minix.
* use MAP_PRIVATE flag since MAP_SHARED isn't defined on Minix.
Tested with usr.bin/menuc/testm.
Change-Id: I1c463e7b0623036050adb6a9079c6747e1c1e084
Defined register offsets and device configurations in structs to
allow more flexibility. This change will allow to support multiple
instances of a driver using a different bus. This is needed for the
BeagleBone Black.
Change-Id: I24e16faeea338c9a847941a846e6d4e49432525e
Replaces commands/hexdump as well as commands/od.
No Minix-specific changes were needed.
test/testsh2.sh was modified to match the spacing
used in the output of the NetBSD od command.
Change-Id: I65ee1d30e8cdd546097462df7c38c2d38f3e891d