* if the caller doesn't do receive().
*/
if (! (priv(caller_ptr)->s_trap_mask & (1 << function)) ||
- (iskerneln(src_dst) && function != SENDREC)) {
- kprintf("sys_call: trap not allowed, function %d, caller %d\n",
- function, proc_nr(caller_ptr));
+ (iskerneln(src_dst) && function != SENDREC && function != RECEIVE)) {
+ kprintf("sys_call: trap not allowed, function %d, caller %d, mask %x, src_dst %d\n",
+ function, proc_nr(caller_ptr),
+ priv(caller_ptr)->s_trap_mask, src_dst);
return(ECALLDENIED); /* call denied by trap mask */
}
#define FS_C (c(SYS_KILL) | c(SYS_VIRCOPY) | c(SYS_VIRVCOPY) | c(SYS_UMAP) \
| c(SYS_GETINFO) | c(SYS_EXIT) | c(SYS_TIMES) | c(SYS_SETALARM))
#define DRV_C (FS_C | c(SYS_SEGCTL) | c(SYS_IRQCTL) | c(SYS_INT86) \
- | c(SYS_DEVIO) | c(SYS_VDEVIO) | c(SYS_SDEVIO))
+ | c(SYS_DEVIO) | c(SYS_VDEVIO) | c(SYS_SDEVIO) | c(SYS_PHYSCOPY) | c(SYS_PHYSVCOPY))
/* The system image table lists all programs that are part of the boot image.
* The order of the entries here MUST agree with the order of the programs