Commit graph

65 commits

Author SHA1 Message Date
Sean Cross
3ae9d8abf0 apps/services: remove xous::xous_main macro usage
This macro will be removed, since it is no longer necessary. Remove this
macro across the project and replace it with a standard `main()`
function.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-05-31 13:33:30 +08:00
Sean Cross
f0f1b72e0c log-server: refactor to use stack-allocated buffers
Instead of having a single, shared buffer, simply stack-allocate the log
buffers.

This paves the way in the future to allow for buffers that are
larger-sized and span multiple pages. But most importantly it alleviates
inter-thread locking and contention when passing messages.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-04-23 12:46:20 +08:00
Sean Cross
234c169809 log-server: allow maximum-length buffers to be printed
Previously, we would reject buffers that were the maximum allowed size.
This is reported in #141.

Allow these maximally-sized buffers to be printed, since they don't end
up causing a problem.

Signed-off-by: Sean Cross <sean@xobs.io>
2022-04-23 12:45:27 +08:00
bunnie
faa51908d7 maybe, just maybe...we finally have version info baked into the kernel correctly. 2022-01-31 23:02:32 +08:00
bunnie
ea31f54a79 console escape codes working better
just couldn't let it go. figured out the issue is a race condition
in how the Litex UARTs are constructed...I don't know how Litex
normally handles this kind of situation but they have this funky
construction where reading the fifo doesn't advance it, you have
to...clear the pending bit. I think it was meant to be a "clever"
thing that saves an instruction or something like that since you
always have to clear the pending bit.

Anyways, the previous incarnation of this loop checked to see
if the pending bit was set again and if it was it'd run back
and fetch another character. This turns out to be a bad idea
because the pending bit goes through a multireg and other stuff
before it's readable which means it has a lot of delay on it.
This leads to a race condition.

This version actually checks if the fifo is empty and if it isn't,
it reads the character *and* pumps the pending bit (because
the FIFO doesn't auto-advance when you read it, you have to clear
the pending bit).

This works a lot better, but it's not at all well documented how
this works and it's very hard to tell from reading the source code
because it's written using really fancy migen abstractions that
are also poorly documented and have a lot of cursed constructions.

Anyways. At least the console doesn't die now when you type
a control character, *but* you do have the problem that the
escape codes get mis-interpreted sometimes. If it really really
becomes important later on to fix that it would involve tracing
out the sequence of keys that arrive at InjectKey and figuring
out if things are coming out of order or what is triggering the
bad escape codes.
2022-01-28 04:21:40 +08:00
bunnie
9cfffb18e9 some minor fixes to the console debug system to make it more consistent
there is still some mysterious problem involving a race condition
of the raw hardware console UART Rx path deciding it doesn't want
to report new characters anymore to the interrupt handler that
is triggered when multi-byte sequences are shoved down the
pipe. So long as you're typing simple commands it's fine, but
escape sequences tend to lock things up. I don't think there's
enough ROI to continue investigating this facility.
2022-01-28 03:36:14 +08:00
bunnie
e55154be69 add version info for ~~xous~~ to the shellchat command
this took...way too long to figure out. Latest versions
of `vergen` for whatever reason seem totally broken for
my build hosts.
2022-01-25 16:37:50 +08:00
bunnie
e06d946bcd simplify error handling code
confirmed that ignoring the error on a write is probably what we want --
it will truncate the string
2021-10-10 20:55:54 +08:00
bunnie
5fa8f2a6a3 discard errors on log write
this at least removes a panic that crashes processes. it does
mean that some log messages can get silently lost, but this is
better than crashing if the arguments to the logger can't be
parsed for some reason?
2021-10-10 18:32:00 +08:00
Sean Cross
e38366c99a log-server: refactor to remove rkyv and custom Strings
This removes all custom string formatting from the `log-server`.

This should improve performance, because we're not roundtripping between
various archive formats. We instead do a single copy and operate
directly on that buffer. We also now write bytes directly, as opposed to
creating intermediate strings.

This fixes a memory issue that was introduced recently.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-11 10:59:31 +08:00
Sean Cross
b86e0a65cd services: recognize xous as a hardware OS
Support `xous` as a valid OS. This allows us to build the entire kernel
under this target.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-08-02 18:11:48 +08:00
Sean Cross
a99839ecd6 xous: mark MemoryRange fields as private
Mark the private fields in a `MemoryRange` struct as being private. This
allows us to perform operations on the memory range armed with the
knowledge that the entire range is valid and unaliased.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-06-24 17:41:16 +08:00
Sean Cross
eb7895d601 xous: add a return code to TerminateProcess
As part of this refactor, make `terminate_process()` a divergent call.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-05-20 11:01:00 +08:00
Sean Cross
ca1b9aa35c log-server: fix implementation of stdout/stderr
The buffer was incorrectly sized.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-05-19 20:56:32 +08:00
Sean Cross
b13b458b11 log-server: validate operation with libstd
This makes minor changes to the panic behavior when operating with a
libstd client.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-05-19 14:12:01 +08:00
Sean Cross
a8e9492560 log-server: implement opcodes and stdout
This allows the log server to support various opcodes, and gives us
stdout as a suitable command.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-05-12 21:22:15 +08:00
bunnie
05df98d1c1 disable suspend/resume support in hosted mode
hosted mode doesn't have suspend/resume support, and it's
not worth debugging subtle issues on that side of the fence
that seem to be OS-dependent.
2021-05-02 16:10:51 +08:00
bunnie
b17753ce8b retrofit the rest of the servers for suspend/resume
we can now do suspend/resume in the xous chat!
2021-05-02 01:38:44 +08:00
bunnie
ac40075140 add keyboard input via UART 2021-04-16 04:11:25 +08:00
Sean Cross
ac9570a767 log-server: remove UB in log server init
Previously, the log server would call `setup` on an uninitialized
struct. This is very undefined behavior, and risked running into
optimization errors.

This reworks the log server such that the singleton is protected by a
`None` value that gets initialized.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-04-12 17:47:26 +08:00
bunnie
8c12dbe2af found a bug. 2021-04-06 01:52:26 +08:00
bunnie
9ba2fb134c refactor most major modules, but Xous now crashes 2021-04-05 23:50:00 +08:00
bunnie
7210f100f4 upgrade log server to pass rich message types 2021-04-02 01:54:17 +08:00
bunnie
85fdb7453d remove unused code 2021-04-01 17:24:13 +08:00
Sean Cross
fdce58d06e ipc: convert project to use xous-ipc
This rewrites the entire project so that most runnable projects now use
`xous-ipc` instead of `xous::String` where possible.

This also removes `rkyv` from the list of dependencies in `xous-rs`.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-03-26 20:22:33 +08:00
Sean Cross
4cbfe5f90f services: log-server: use create_thread_1()
This moves away from the deprecated `create_thread_simple()` call.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-03-25 10:54:22 +08:00
bunnie
835bee2c75 lay in foundations to support the sleep function 2021-03-11 01:45:54 +08:00
bunnie
9a2bce24cb clean up timing and cosmetic issues on status updates 2021-03-02 21:47:23 +08:00
bunnie
4b0f50293f another intermediate commit 2021-03-02 21:15:40 +08:00
bunnie
4640dc404f make panic messages a bit more helpful 2021-03-01 13:45:36 +08:00
bunnie
463e2ad77d fixup GAM APIs to latest rkyv standard, fix drawable computation 2021-02-26 03:37:48 +08:00
bunnie
5b80b3fb42 get fcc-agent working again 2021-02-23 04:01:01 +08:00
bunnie
0af72ffb6d clean up Sendable references and warnings 2021-02-17 23:29:20 +08:00
Sean Cross
14f661f565 xous: remove id field from lend()
This argument is no longer used.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-02-17 20:54:08 +08:00
bunnie
b803d7d4e9 commit that captures the multiple lend bug 2021-02-16 12:42:11 +08:00
bunnie
2b003f8a7d intermediate checkin 2021-02-16 00:28:44 +08:00
bunnie
07b3dd9afa add PID printout to every service as it starts 2021-02-15 19:16:21 +08:00
bunnie
af012c48dc getting a little further with the port, but still crashing on a borrow message 2021-02-15 04:42:30 +08:00
bunnie
fc8290cdb4 futzing around and something is kind of working on xous-string port to rkyv 2021-02-15 00:05:42 +08:00
bunnie
22ed00f0d8 refactor log-server to remove usize from sendable object 2021-01-22 01:34:36 +08:00
bunnie
cc66c3911a starting to lay out initial framework for the graphical abstraction manager (GAM) 2021-01-17 04:02:08 +08:00
bunnie
c848d374c6 roll back the build time notice
Turns out the build time only seems to capture the last time
you managed to force a full rebuild (???). Even though cargo
indicates that a rebuild had happened of the main.rs, the environment
variable containing the time is not being updated, because the
build.rs file isn't being run. But! if you force a trigger of
that file, then cargo decides to rebuild *everything* which greatly
increases the build time, which is a drag for development.

So, just remove the build time notice. If it's not going to be
correct, better to not emit it than to be outright misleading...
2021-01-13 00:24:12 +08:00
bunnie
0a3c50f820 add build timestamping/versioning to the Xous log output 2021-01-12 23:30:52 +08:00
bunnie
2beddd745e missed one merge conflict fix 2021-01-04 03:24:27 +08:00
bunnie
b7263f7ef0 Merge remote-tracking branch 'origin/master' into hardware 2021-01-04 03:19:23 +08:00
Sean Cross
7b50d00eb8 repo: run cargo fmt
This reformats line endings to be consistent, and reinforces the
contents of `.gitattributes`.

Signed-off-by: Sean Cross <sean@xobs.io>
2021-01-03 18:31:51 +08:00
bunnie
b9a31f7d99 try to layer in the fcc agent 2020-12-31 19:31:12 +08:00
Sean Cross
25e4d16de3 xous-os: rename CreateServer to CreateServerWithAddress
Servers will, by default, get randomly-assigned SIDs. Certain servers
will want to have well-known SIDs, such as the log server or the
nameserver. These will use a separate call in order to perform this
priveledged operation.

A subsequent patch will add `CreateServer`.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-12-04 20:33:33 +08:00
Sean Cross
fcb64a85d4 log-server: remove spurious print message
Signed-off-by: Sean Cross <sean@xobs.io>
2020-11-27 13:59:33 +08:00
Sean Cross
ff8cb19999 log-server: implement panic logging
This is now able to understand the panic log messages that are sent by
services that are in the procses of panicking.

Signed-off-by: Sean Cross <sean@xobs.io>
2020-11-27 13:58:03 +08:00