Name the process behind 'permission denied'; record what is unfinished
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01EVRhxi9zpdW2uDUN4FVcao
This commit is contained in:
parent
d650ff433b
commit
2e3deb5390
2 changed files with 36 additions and 2 deletions
|
|
@ -164,3 +164,32 @@ Not phases, and each one improves everything above it:
|
|||
|
||||
- TrueType hinting.
|
||||
- DRM/KMS as a *kernel* subsystem; the GPU plan serves `/dev/dri` from a process.
|
||||
|
||||
## Unfinished, as of 2026-10-26
|
||||
|
||||
Left where it stood; none of it is hidden by the code.
|
||||
|
||||
- **`startx` as root fails.** The image now has only root, and in QEMU `startx`
|
||||
ends with `xinit: unable to connect to X server: Bad file descriptor` and
|
||||
writes `/var/log/Xorg.0.log` (not `~/.local/share/xorg/`). It worked as the
|
||||
old `schos` user. The cause has not been looked at; start with that log.
|
||||
- **Window Maker on the laptop hung** (no cursor movement, no exit, no VT
|
||||
switch) while Xorg was using `xf86-input-libinput`. That package is out of the
|
||||
image again; whether Xorg's own evdev driver is enough on that machine is not
|
||||
confirmed. If it still hangs, the `Xorg.0.log` from the machine is what is
|
||||
needed.
|
||||
- **ldlsd's crash on real hardware** was a misaligned `movaps` in a variadic
|
||||
function; LDLS guest code is now built with `-mstackrealign`. Not run on the
|
||||
laptop since. Two `SchOS: permission denied (write)` lines appear just before
|
||||
it; the message now names the process and inode so the next log says who.
|
||||
- **Boot manager pointer**: the cursor is drawn whenever a pointer device
|
||||
exists, but no click or movement has been seen from a real device (QEMU's USB
|
||||
mouse never reached the loader). A laptop touchpad is usually not exposed to
|
||||
UEFI at all.
|
||||
- **Kernel-side splash**: the loader's splash is in the new style; what vgpud
|
||||
draws once the kernel is up is still the old mark.
|
||||
- **USB**: no `/dev/bus/usb` (usbfs), so libusb tools such as plain `lsusb` do
|
||||
not work (`lsusb -t` does); `uname -r` says `0.1.0`, which libusb refuses; hub
|
||||
port counts and string descriptors are missing.
|
||||
- **Terminals**: all twelve ask for a login. There is no longer a login-free
|
||||
root shell to fall back on if `login` itself breaks.
|
||||
|
|
|
|||
|
|
@ -2,6 +2,7 @@
|
|||
#include "core/defs.h"
|
||||
#include "uapi/stat.h"
|
||||
#include "core/param.h"
|
||||
#include "core/proc.h"
|
||||
#include "fs/fs.h"
|
||||
#include "core/spinlock.h"
|
||||
#include "core/sleeplock.h"
|
||||
|
|
@ -278,7 +279,9 @@ fileread(struct file *f, char *addr, int n)
|
|||
}
|
||||
|
||||
if((f->ip->rwmode & 2) == 0){
|
||||
cprintf("SchOS: permission denied (read)\n");
|
||||
cprintf("SchOS: %s (pid %d): permission denied (read) on inode %d:%ld, rwmode %d\n",
|
||||
myproc()->name, myproc()->pid, (int)f->ip->dev, (long)f->ip->inum,
|
||||
(int)f->ip->rwmode);
|
||||
iunlock(f->ip);
|
||||
return -1;
|
||||
}
|
||||
|
|
@ -344,7 +347,9 @@ filewrite(struct file *f, char *addr, int n)
|
|||
}
|
||||
|
||||
if((f->ip->rwmode & 1) == 0){
|
||||
cprintf("SchOS: permission denied (write)\n");
|
||||
cprintf("SchOS: %s (pid %d): permission denied (write) on inode %d:%ld, rwmode %d\n",
|
||||
myproc()->name, myproc()->pid, (int)f->ip->dev, (long)f->ip->inum,
|
||||
(int)f->ip->rwmode);
|
||||
iunlock(f->ip);
|
||||
return -1;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue