Re: fanotify as syscalls
flat view
From: Linus Torvalds <torvalds@linux-foundation.org>
Date: 2009-09-17 16:40:16
Also in:
linux-fsdevel, lkml
On Wed, 16 Sep 2009, Jamie Lokier wrote:
I'd forgotten about Linus' strace argument. That's a good one. Of course everything should be a syscall by that argument :-)
Oh yes, everything _should_ be a syscall. The problem is that many things are too "amorphous" to be system calls, and don't have any sane generic semantics (ie they only act on a specific device node). So we have ioctl's etc for those things. And then we have page faults. I've long wished that from a system call tracing standpoint we could show page faults as pseudo-system-calls (at least as long as they happen from user space - trying to handle nesting is not worth it). It would make it _so_ much more obvious what the performance patterns are if you could just do strace -ttT firefox for the cold-cache case and you'd see where the time is really spent. (yeah, yeah, you can get that kind of information other ways, but it's a hell of a lot less convenient than just getting a nice trace with timestamps).
And strace can trace some ioctls and setsockopts. (But it's never pretty to see isatty() showing in strace as SNDCTL_TMR_TIMEBASE :-)
Yes, strace can fix things up, and show "send a packet" as "fanotify". But it's nasty and hard. Quite frankly, I have _never_ever_ seen a good reason for talking to the kernel with some idiotic packet interface. It's just a fancy way to do ioctl's, and everybody knows that ioctl's are bad and evil. Why are fancy packet interfaces suddenly much better? Linus