Sean Cross
2244a78f16
kernel: allow syscall processing when printing is disabled
...
Due to a missing comment, syscalls wouldn't work at all when printing
was disabled. Fix this.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 20:43:22 +08:00
Sean Cross
6e312ffc8a
kernel: process: only print process inits when printing is enabled
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 20:42:57 +08:00
Sean Cross
e5003eee6d
kernel: only print RISC-V exceptions when printing is enabled
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 20:42:25 +08:00
Sean Cross
49d3ce8a6f
kernel: syscall: unify print!() messages
...
Use `print!()` instead of `println!()` in order to make error messages
easier to read in the debug console.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:19:28 +08:00
Sean Cross
b3d918358e
kernel: syscall: don't error on unaligned memory when Hosted
...
When running in a Hosted environment, unaligned memory is not an error,
so don't return `BadAlignment`.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:18:50 +08:00
Sean Cross
95ab9d3c02
kernel: server: unify print messages
...
Don't use `println!()`, and instead prefer to use `print!()` when in the
kernel.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:17:27 +08:00
Sean Cross
20a65b88f2
kernel: server: don't Forget Borrow and MutableBorrow messages
...
These should be returned to the client process after the message is
done, not forgotten straightaway.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:16:52 +08:00
Sean Cross
cb2d810b38
kernel: irq: prefix pagefault message with KERNEL(pid)
...
This unifies this message with other kernel messages.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:16:14 +08:00
Sean Cross
04a3493550
kernel: hosted: print status adding memory to return val
...
When returning memory to a thread, attach memory if present.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:15:32 +08:00
Sean Cross
74b3fde198
kernel: add memory from Results to network packets
...
If a Result contains attached memory, add that memory on to the network
packet that gets sent by the kernel.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:14:43 +08:00
Sean Cross
702676031e
kernel: hosted: run rustfmt
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:14:33 +08:00
Sean Cross
5f6b42d534
kernel: hosted: print pid of a process that exited
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-30 10:14:02 +08:00
Sean Cross
fa9a3e0954
kernel: rework hosted network protocol
...
This fixes issues regarding passing memory between processes.
We now properly catch `ReturnMemory` and give the memory back.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-29 19:46:17 +08:00
bunnie
9a8c402cc2
add hosted mode bits back in
2020-10-14 23:04:54 +08:00
bunnie
6ff8c8518c
Merge branch 'master' of github.com:betrusted-io/xous-core
2020-10-14 23:02:14 +08:00
bunnie
ac4d79ea68
logging server bringup
2020-10-14 23:01:57 +08:00
Sean Cross
797d622cc7
kernel: use connect() for some kernel tests
...
Now that `connect()` works, use that for some tests rather than
exclusively using `try_connect()`.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 19:19:01 +08:00
Sean Cross
80a003c839
kernel: syscall: implement connect()
...
This implements the `connect()` syscall as a blocking version of
`try_connect()`.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 19:18:16 +08:00
bunnie
5cf8e9e3bc
Merge remote-tracking branch 'origin/master' into ticktimer
2020-10-14 15:30:47 +08:00
Sean Cross
54a8de2776
kernel: fix return_scalar and return_scalar2
...
These didn't correctly set the thread status in the server when
returning a value. Instead of marking a server as runnable, it remained
in an idle state.
This correctly sets the thread status in the server, and resumes the
client.
This has been tested in Renode as well as using `cargo test`.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 11:16:21 +08:00
Sean Cross
ecd2d00f47
kernel: fix return_scalar2
...
This call did not work, because it wasn't properly returning control to
the parent process.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 10:54:23 +08:00
Sean Cross
61fdd5be15
kernel: hosted: add current_tid() to Process
...
This allows us to mock the current TID for debugging purposes on hosted
environments.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 10:54:19 +08:00
Sean Cross
e5100bcb33
kernel: syscall: implement SendMessage
...
SendMessage is a blocking version of TrySendMessage, except this call
will block if the server queue is full.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 10:14:43 +08:00
Sean Cross
0c344efb60
kernel: syscall: move do_yield() to its own function
...
This will allow us to call `Yield` for other operations that need to be
blocking.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 10:14:43 +08:00
Sean Cross
585e55e8b7
kernel: implement retry_instruction()
...
This function is used to decrement the program counter to re-run a given
instruction. This can be used as a cheap way to implement blocking
calls.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-14 10:04:36 +08:00
bunnie
62b625ec60
convert kernel debug to utra
2020-10-14 03:04:33 +08:00
bunnie
67c49ddbce
clean up a warning
2020-10-14 03:04:25 +08:00
bunnie
4d21f2d868
intermediate progress on debugging return messages
2020-10-14 01:28:10 +08:00
Sean Cross
84b39c931a
kernel: services: switch address space prior to passing messages
...
Switch address spaces to pass messages to the new process, and switch
backafterwards.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-13 22:56:04 +08:00
Sean Cross
39c7dced01
kernel: services: switch address space prior to passing messages
...
Switch address spaces to pass messages to the new process, and switch
backafterwards.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-13 22:54:43 +08:00
Sean Cross
53f1b3c416
kernel: main: make utralib incusion conditional
...
Only include utralib when running on baremetal.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-13 22:54:12 +08:00
bunnie
154384e3bb
output hex for kernel debug
...
makes it much easier to read memory allocation requests
2020-10-13 16:15:15 +08:00
bunnie
cab4c7d4a9
fix more UTRA issues; migrate to dual-UART for kernel/console messages
2020-10-13 05:22:19 +08:00
bunnie
9a50de8b4e
refactor: utra -> utralib naming
...
this cleans up some namespace issues when including
the utra crate which also refers to utra::generated::utra,
and there are CONST at the crate-level, and also functions
at the module-level which need disambiguation. By naming
the crate utra-lib this saves a bit of syntatic wrangling
at the top of every file.
2020-10-12 03:56:10 +08:00
Sean Cross
28f5f79b7d
kernel: re-enable fat lto
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-11 09:15:49 +08:00
Sean Cross
fb027c569b
kernel: lock: add new dependencies for utra
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-11 09:15:45 +08:00
Sean Cross
9140482a6b
lock: add missing lockfiles
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-05 10:52:26 +08:00
Sean Cross
d0d687a239
utra: fix build on non-hardware release
...
This adds svd2utra, which enables building for non-embedded harware.
It also fixes some build issues, and paves the way for generating UTRA
at compile-time.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-05 10:13:51 +08:00
Sean Cross
d4f0496371
kernel: remove unused debug data
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-04 19:08:29 +08:00
Sean Cross
8759f552f7
kernel: syscall: allow returning to the kernel
...
If nothing is running, don't crash when the timer hits.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-04 18:28:58 +08:00
Sean Cross
fa23cfa88b
kernel: services: update some debug comments
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-04 18:28:29 +08:00
Sean Cross
7843189c45
kernel: remove printing of "hello, world!"
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-04 18:28:02 +08:00
Sean Cross
a00151b4de
kernel: use IRQ 0 for UART
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-10-04 18:27:49 +08:00
Sean Cross
5f4ee01a0d
kernel: use fixed address for debug port
...
Don't use the hardware address, since it is not likely to be in
the universal address space.
Signed-off-by: Sean <xobs@ci.betrusted.io>
2020-10-04 18:13:58 +08:00
Sean
bbab52be7f
kernel: flush MMU when we rotate the SATP value
...
Signed-off-by: Sean <xobs@ci.betrusted.io>
2020-10-04 18:12:27 +08:00
bunnie
711e5ea910
slot in utra references
2020-10-02 04:52:03 +08:00
bunnie
4cded404e3
fix offset of UART
2020-09-26 01:36:45 +08:00
bunnie
5deeebae3b
the loader seems to be working now.
2020-09-26 00:03:46 +08:00
bunnie
44f1a6b307
Merge branch 'master' of https://github.com/betrusted-io/xous-core into dvt-hardware
2020-09-25 17:50:24 +08:00
bunnie
8cc85f4e11
mods for running on DVT hardware
2020-09-25 17:50:02 +08:00
Sean Cross
2575d13acd
cargo: update lock file
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-23 10:59:38 +08:00
Sean Cross
e5583a7646
kernel: fix message sender parameter
...
The `sender` was, previously, somewhat mislabeled. It was a combination
of PID and TID, except when it wasn't.
Instead, make this value a combination of ConnectionID and queue index.
This makes it easier to reason about which connection we're responding
to.
Additionally, don't expose teh global Server Index Table to userspace
programs.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-23 10:52:22 +08:00
Sean Cross
435612a370
kernel: syscall: use new is_blocking() call
...
This removes the need to manually specify whether a call is blocking.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-22 22:14:03 +08:00
Sean Cross
43002b8627
kernel: add blocking scalars
...
Add a new type: BlockingScalar, that can be used to do blocking scalar
calls such as sleep().
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-22 22:05:18 +08:00
Sean Cross
6d931ccc33
kernel: irq: disable irqs during handler
...
This fixes issue #1 , which correctly noted the comment was correct but
the code implementation was not correct.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-22 21:13:56 +08:00
Sean
1b59719a74
kernel: hosted: support per-thread memory messages
...
Previously, each process could return one chunk of memory. With this
change, processes can now return one chunk of memory per thread. This
enables multiple threads to lend memory to a server.
Signed-off-by: Sean <xobs@ci.betrusted.io>
2020-09-03 13:20:16 +08:00
Sean
3e6d3904fb
kernel: hosted: handle TrySendMessage the same as SendMessage
...
With the introduction of TrySendMessage, the kernel needs to know that
this data structure should be transmitted over the wire in the same
manner as SendMessage. Previously it was not special-casing this, which
resulted in memory errors.
Signed-off-by: Sean <xobs@ci.betrusted.io>
2020-09-03 13:17:01 +08:00
Sean
2dc0545eaa
kernel: test: print informative error when kernel data changes
...
When the message coming in from the client to a server changes, print
an informative message rather than just "left != right".
Signed-off-by: Sean <xobs@ci.betrusted.io>
2020-09-03 13:13:44 +08:00
Sean Cross
77426aaf56
kernel: hosted: ignore errors from shutting down network socket
...
When running on Linux, attempting to shut down a network socket that
has already been closed results in an error. That is, if the client
disconnects, then the server will throw an error when it also attempts
to disconnect.
Ignore errors to `.shutdown()` to fix `cargo test` on Linux.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-09-03 10:19:05 +08:00
Sean Cross
cd7f8f67fc
kernel: rename Connect/SendMessage to TryConnect/TrySendMessage
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 17:39:29 +08:00
Sean Cross
ae6dda0ad3
kernel: fix tests after message body rename
...
The test suite hadn't been updated to work with the new naming
convention.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 10:47:10 +08:00
Sean Cross
fbda077aff
kernel: remove excess println() statements
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 10:46:48 +08:00
Sean Cross
96c5739cdd
kernel: fix remaining warnings
...
This fixes all remaining warnings in the kernel. For now.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 01:17:35 +08:00
Sean Cross
bc92f4b042
kernel: services: fix build on riscv
...
Somehow the build broke. Oops.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:36:39 +08:00
Sean Cross
25824df335
kernel: services: print fewer diagnostic messages
...
These were printed a lot, which is not a thing we want right now.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:36:11 +08:00
Sean Cross
d87b59d47c
kernel: riscv: print fewer debug messages
...
The IRQ handler was very noisy, which generated a lot of spew.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:35:28 +08:00
Sean Cross
9af28d0a90
kernel: irq: fix build
...
We were missing some packages when building on riscv.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:34:49 +08:00
Sean Cross
b78a71c495
kernel: print-panics: implement this feature in debug.rs
...
With this feature enabled, claim the kernel UART for panic printing.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:34:41 +08:00
Sean Cross
750f05c322
kernel: cargo: add print-panics feature
...
With this feature enabled, the kernel will claim a UART and print panics
when they occur.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-30 00:33:30 +08:00
Sean Cross
8f70c0640c
kernel: fix server indexing
...
Server IDs were being improperly indexed, resulting in a
probably-invalid server index being returned.
Adjust these so that correct server indices are returned.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-29 22:10:24 +08:00
Sean Cross
dfd11f846d
hosted: fix hosted builds
...
We can now run `cargo xtask run` and it will do the right thing.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-18 13:52:43 +08:00
Sean Cross
0ca7fe6f12
kernel/loader: fix build arguments
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-18 12:10:46 +08:00
Sean Cross
8920ab57cf
xtask: remove loader, kernel from workspace to fix rebuilds
...
These packages modify RUSTFLAGS, which causes some packages to be
rebuilt every time. Move them out of the workspace so as to ensure they
don't use the same `target` directory.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-18 10:51:29 +08:00
Sean Cross
bb17038bfe
kernel: rename "xous" to "xous-kernel" in import
...
Cargo appears to cache packages in the workspace when multiple packages
use the same crate. Unfortunately, Xous uses different features
depending on whether it's running in the kernel or in userspace.
Pull the kernel version of "xous" in under a different namespace in
order to force it to use a different build.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-17 18:37:40 +08:00
Sean Cross
cb959eb1cf
kernel: fix interrupts
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-10 22:43:38 +08:00
Sean Cross
31f63c3f5f
kernel: threads work now
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-10 22:05:06 +08:00
Sean Cross
1d23bc5aae
kernel: first multiple threads working
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-10 21:17:48 +08:00
Sean Cross
a467d6fcc7
kernel: baremetal: 2nd process starts to run and crashes
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-10 16:06:38 +08:00
Sean Cross
75449f1deb
kernel: get PID1 running, now working on PID2
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-10 00:35:37 +08:00
Sean Cross
10ecacd136
kernel: native: create process for initial processes
...
These all need to bootstrap themselves.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 23:08:54 +08:00
Sean Cross
bef0168c20
kernel: more warning fixes
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 22:14:14 +08:00
Sean Cross
ba30b4919d
kernel: remove more warnings
...
Still haven't run it on real hardware, but this removes more warnings
from the system.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 21:52:28 +08:00
Sean Cross
0006d4d99c
kernel: get building
...
This is where the story really starts...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 21:33:21 +08:00
Sean Cross
8ccecb6d99
kernel: down to 12 errors again
...
Slowly chipping away at it.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 20:59:31 +08:00
Sean Cross
299b9fc298
kernel: start working on lifetime errors
...
Only about 24 errors, so it's better than it could have been.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 19:45:02 +08:00
Sean Cross
8925964754
kernel: on to lifetime issues now!
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 19:38:15 +08:00
Sean Cross
30fef020f2
baremetal: just one more build error for this phase
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 19:27:43 +08:00
Sean Cross
e7a4927943
kernel: down to 7 compile errors
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 19:21:54 +08:00
Sean Cross
9bba5cbe4d
server: pass memory buffer to server init
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 19:02:05 +08:00
Sean Cross
e48e1820f6
kernel: down to 12 errors
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 18:27:18 +08:00
Sean Cross
814be7cd84
kernel: down to 29 errors on bare metal
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 16:48:58 +08:00
Sean Cross
ebf568dadd
baremetal: slowly whittling down the number of errors
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-09 16:14:34 +08:00
Sean Cross
fb6d42be55
kernel: begin re-porting xous to baremetal
...
Only 68 errors to fix!
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-07 18:57:55 +08:00
Sean Cross
49083081c3
xous: replace processes-as-threads with baremetal check
...
This gets it working on baremetal, and keeps processes-as-threads
available for running in hosted mode.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-06 23:25:28 +08:00
Sean Cross
bd99f33761
kernel: move debug-here to windows,unix
...
This uses lazy_static, which only works on libstd.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-06 23:08:03 +08:00
Sean Cross
285b92401e
mem: get tests working again on hosted
...
This fixes all tests so they now work (and pass!) when running in a
hosted environment.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-03 18:15:56 +08:00
Sean Cross
ea3a473c9f
reworking memory allocation
...
The kernel should run in a `no_std` environment, which means it must
currently run without `alloc`. We have our own allocation methods when
running on baremetal hardware.
Begin the work to break out the allocation method so that it will work
on both desktop and baremetal environments.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-03 17:40:57 +08:00
Sean Cross
21aa67b748
workspace: remove workspace
...
The kernel and userspace both need to use `xous`, but have different
requirements. If we use a workspace, then all instances of `xous-rs`
must have the same feature set.
This breaks them apart so the kernel can have one set of features and
programs can have another set.
As part of this change, tests are now integrated into the kernel, and a
new `create_process_as_thread()` and `wait_process_as_thread()` function
pair have been added.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-08-02 16:11:12 +08:00
Sean Cross
ef0ef924c8
fix more clippy warnings
...
Signed-off-by: Sean Cross <sean@xobs.io>
2020-07-29 22:48:48 +08:00
Sean Cross
869ebcff8b
kernel: get tests and running working
...
This fixes process creation so that it works for both tests and running
it as a program.
Signed-off-by: Sean Cross <sean@xobs.io>
2020-07-29 22:37:03 +08:00