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:
Nexoniarz 2026-10-26 18:06:38 +01:00
commit 2e3deb5390
2 changed files with 36 additions and 2 deletions

View file

@ -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;
}