Skip to content

Commit

Permalink
simulation: two more syscall logs
Browse files Browse the repository at this point in the history
  • Loading branch information
jellevandenhooff committed Dec 5, 2024
1 parent 055234c commit e6598aa
Showing 1 changed file with 25 additions and 4 deletions.
29 changes: 25 additions & 4 deletions internal/simulation/os_linux.go
Original file line number Diff line number Diff line change
Expand Up @@ -898,6 +898,15 @@ func (l *LinuxOS) SysNewfstatat(dirfd int, path string, statBuf syscallabi.Value
return l.SysFstatat(dirfd, path, statBuf, flags, invocation)
}

var unlinkatFlags = &gosimlog.BitflagFormatter{
Flags: []gosimlog.BitflagValue{
{
Value: _AT_REMOVEDIR,
Name: "AT_REMOVEDIR",
},
},
}

func (l *LinuxOS) SysUnlinkat(dirfd int, path string, flags int, invocation *syscallabi.Syscall) error {
l.mu.Lock()
defer l.mu.Unlock()
Expand All @@ -910,8 +919,6 @@ func (l *LinuxOS) SysUnlinkat(dirfd int, path string, flags int, invocation *sys
return err
}

l.logfFor(invocation, "unlinkat %d %s %d", dirfd, path, flags)

switch flags {
case 0:
if err := l.machine.filesystem.Remove(dirInode, path, false); err != nil {
Expand All @@ -928,6 +935,14 @@ func (l *LinuxOS) SysUnlinkat(dirfd int, path string, flags int, invocation *sys
}
}

func (customSyscallLogger) LogEntrySysUnlinkat(dirfd int, path string, flags int, syscall *syscallabi.Syscall) {
logSyscallEntry("SysUnlinkat", syscall, fdAttr("dirfd", dirfd), "path", path, "flags", unlinkatFlags.Format(flags))
}

func (customSyscallLogger) LogExitSysUnlinkat(dirfd int, path string, flags int, syscall *syscallabi.Syscall, err error) {
logSyscallExit("SysUnlinkat", syscall, "err", err)
}

func (l *LinuxOS) SysFtruncate(fd int, n int64, invocation *syscallabi.Syscall) error {
l.mu.Lock()
defer l.mu.Unlock()
Expand All @@ -951,11 +966,17 @@ func (l *LinuxOS) SysFtruncate(fd int, n int64, invocation *syscallabi.Syscall)

l.machine.filesystem.Truncate(f.inode, int(n))

l.logfFor(invocation, "truncate %d %d", fd, n)

return nil
}

func (customSyscallLogger) LogEntrySysFtruncate(fd int, length int64, syscall *syscallabi.Syscall) {
logSyscallEntry("SysFtruncate", syscall, "fd", fd, "length", length)
}

func (customSyscallLogger) LogExitSysFtruncate(fd int, length int64, syscall *syscallabi.Syscall, err error) {
logSyscallExit("SysFtruncate", syscall, "err", err)
}

func (l *LinuxOS) SysClose(fd int, invocation *syscallabi.Syscall) error {
l.mu.Lock()
defer l.mu.Unlock()
Expand Down

0 comments on commit e6598aa

Please sign in to comment.