The Italian keyboard layout is ISO, and unlike the ANSI layout,
it has an extra key between Shift and Z, and the key above Enter,
which becomes vertical, is moved to the bottom left of it.
- the key between Shift and Z is mapped to `<`, and shift+`<` is mapped to `>`
- the old `>` (at the bottom left of Enter) is mapped to `ù`
- shift+`ù` is mapped to `§`
- the old shift+`"` is mapped to `°`
- altgr+`'` is mapped to backtick
- altgr+`ì` is mapped to `~`
- altgr+`e` is mapped to `€`
- shiftaltgr+`[` is mapped to `{`
- shiftaltgr+`]` is mapped to `}`
This is a kernel for the NXP LX2160A, specifically the SolidRun
Honeycomb board which is available for sale on the SolidRun
website.
It currently boots on U-Boot. UEFI support is planned. Build or
download the U-Boot firmware from the SolidRun site and then write
it to the on-board SD card. Then, plug in a USB with the honeycomb
image and proceed to install as normal. Only NVMe or USB storage
is supported (SATA is planned).
This kernel supports PCIe and USB. On-board ethernet and SFP are
not supported (yet). It uses 2GB of memory by default, but that
can be increased using *maxmem depending on how much RAM you have
in the system. As well, SMP is currently disabled until an
uncommon deadlock issue is fixed (could be a hardware issue, unknown
at this point).
The default behaviour of the key labelled as Caps Lock is
to be a Ctrl key, but in some cases in can be desirable
to have it like an actual Caps Lock. A new kbmap file is
added and the keyboard documentation is updated.
git/commit /sys/lib/kbmap/caps /sys/man/6/keybo
There is a pathological case with qio that triggers
a dead-lock for single threaded servers and
multiple requesters that can be reproduced like this:
int pfd[2];
void
main(int argc, char *argv[])
{
char buf[0x10000];
int i, n;
ARGBEGIN {
} ARGEND;
if(pipe(pfd) < 0)
sysfatal("pipe: %r");
if(fork() == 0){
while((n = read(pfd[0], buf, sizeof(buf))) > 0){
sleep(10);
write(pfd[0], buf, n);
}
exits(nil);
}
for(i = 0; i < PROCS; i++){
if(fork() == 0){
buf[0] = i;
for(;;){
write(pfd[1], buf, sizeof(buf));
if(read(pfd[1], buf, sizeof(buf)) <= 0)
break;
print("%d %d\n", i, buf[0]);
}
exits(nil);
}
}
waitpid();
}
The problem is how the reader decides to wake up the writer,
which was based only on the global queue length, but it should
really depend on the local queuing position of the writers
and their distance to the reader position.
Otherwise, a writer can be blocked even tho its message
has already been consumed by the reader.
When the reader tries to reply, it can get blocked himself
on writing the reply.
The new qio code basically makes sure that writers get
unblocked in order avoiding the issue.
The qio block statistics and qwindow() are gone now as
they where mostly unused.
This kernel is designed for running on the QEMU "virt"
machine. It implements the QEMU ECAM-based PCIe and
utilizes VirtIO drivers for networking and storage.
USB, screen and so on are umimplemented, because this
kernel is meant to be installed via UART, and then
administered as a CPU server via rcpu. It is booted
using U-Boot, so the QEMU "virt" machine "firmware"
is required, otherwise installation is straightforward.
This is the QEMU command used to run this kernel on
an M1 Mac under Hypervisor.framework:
qemu-system-aarch64 -M virt-2.12,accel=hvf,gic-version=3 \
-cpu host -m 4G -smp 4 \
-bios u-boot.bin \
-drive file=9front.arm64.qcow2,if=none,id=disk \
-device virtio-blk-pci-non-transitional,drive=disk \
-serial stdio
This code is based off of the i.MX 8 kernel.
* Added pinyin alternative Chinese input dictionary
* Remove Cyrilic and Greek input, use kbmap instead
* Ensure ktrans dictionaries are copied to iso
* Cleanup ktrans(1)
* Document dictionary format in ktrans(6)
* Fix ktrans example in riow(1)
9front has several tests scattered throughout the source,
as well as more tests in an external 'regress' repository.
Many of these tests are broken, because there is no easy
way to build and track all of them.
This pulls in several tests from different sources, deletes
the broken tests, tests with missing data, and adds a single
command that can be run from the root of the src directory
to test our system.
The hope is that as we develop new code, we add more tests,
and eventually start running the tests on every commit.
Please enter the commit message for your changes. Lines starting
The kernel used to always set console=0, which as
usefull during bring-up, but makes it impossible
to use the uart for other purposes.
We now have the ability to pass plan9.ini using
the u-boot script, so add the console=0 line there.
To make debugging easy, we still apply
console=0 if no plan9.ini has been passed.
Historically, ktrans used ^t for completion as denoted in the older
README's and thus likely was using ^e for (e)nglish mode at some point.
While the ktrans we imported had this changed around already, our older
Jp kbmap was still emitting ^e for Zenkaku. This has been updated
to give ^t, the current control sequence for english mode.
Git has the ability to track the person who
creates a commit separately from the person
who wrote the commit. For git9, we ignored
this feature.
However, as we start using git/import more,
it will be useful to figure out who imported
a commit, as well as who wrote it.
This change adds support for seeing this
information in git, as well as setting the
author and committer separately in git/import.
Git currently gets a bit confused if you try to
manipulate files by absolute path. There were also a
number of places where user-controlled file paths ended
up getting passed to regex interpretation, which could
confuse things.
This change mainly does 2 things:
- Adds a 'drop' function which drops
a non-regex prefix from a string, and uses
that to manipulate paths, simplifies 'subst',
and removes 'subst -g', which was only used
with fixed regexes; sed does this job fine.
- When getting a path from a user, we
make it absolute and then strip out the head
Along the way it cleans up a couple of stupids:
- 'for(f in $list) if(! ~ $#f 0) use $f:
$f can't be a nil list because of
list flattening.
- removes a useless substitution here:
all=`$nl{{git/query -c $1 $2; git/query -c $2 $3} | sed 's/^..//' | \
gsubst '^('$ourbr'|'$basebr'|'$theirbr')/*' | sort | uniq}
where git/query -c doesn't produce
paths prefixed with the query.
All of these files appear to have been imported from sources in a
case-insensitive manner and consequently lost their original content.
- Hx, Hb, and Hi fonts should be narrow versions of Helvetica
- c[1-3] fonts should be condensed versions of Century Old Style
- the lH character should be a filled left hand symbol
- the rh character should be a stroked right hand symbol
- the rc character should be the right ceiling symbol
I've verified that these are the only files that collide with others
when ignoring case (aside from rc/bin/[Kk]ill but those are correct).