summaryrefslogtreecommitdiffstats
path: root/sys/kern/vfs_syscalls.c
diff options
context:
space:
mode:
authorrodrigc <rodrigc@FreeBSD.org>2008-11-05 19:40:36 +0000
committerrodrigc <rodrigc@FreeBSD.org>2008-11-05 19:40:36 +0000
commitca625c199ffa84013f96c96d6133c2c313bf6c3e (patch)
tree28fc9ff6f44c6da849fa460b61a76ea3ffa88205 /sys/kern/vfs_syscalls.c
parenta3c4aa0bb3b662730a4a433d587559c544fc1ba3 (diff)
downloadFreeBSD-src-ca625c199ffa84013f96c96d6133c2c313bf6c3e.zip
FreeBSD-src-ca625c199ffa84013f96c96d6133c2c313bf6c3e.tar.gz
Merge latest DTrace changes from Perforce.
Approved by: jb
Diffstat (limited to 'sys/kern/vfs_syscalls.c')
-rw-r--r--sys/kern/vfs_syscalls.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/sys/kern/vfs_syscalls.c b/sys/kern/vfs_syscalls.c
index d30a94f..ad71a89 100644
--- a/sys/kern/vfs_syscalls.c
+++ b/sys/kern/vfs_syscalls.c
@@ -38,6 +38,7 @@
__FBSDID("$FreeBSD$");
#include "opt_compat.h"
+#include "opt_kdtrace.h"
#include "opt_ktrace.h"
#include "opt_mac.h"
@@ -58,6 +59,7 @@ __FBSDID("$FreeBSD$");
#include <sys/filio.h>
#include <sys/limits.h>
#include <sys/linker.h>
+#include <sys/sdt.h>
#include <sys/stat.h>
#include <sys/sx.h>
#include <sys/unistd.h>
@@ -82,6 +84,14 @@ __FBSDID("$FreeBSD$");
#include <vm/vm_page.h>
#include <vm/uma.h>
+SDT_PROVIDER_DEFINE(vfs);
+SDT_PROBE_DEFINE(vfs, , stat, mode);
+SDT_PROBE_ARGTYPE(vfs, , stat, mode, 0, "char *");
+SDT_PROBE_ARGTYPE(vfs, , stat, mode, 1, "int");
+SDT_PROBE_DEFINE(vfs, , stat, reg);
+SDT_PROBE_ARGTYPE(vfs, , stat, reg, 0, "char *");
+SDT_PROBE_ARGTYPE(vfs, , stat, reg, 1, "int");
+
static int chroot_refuse_vdir_fds(struct filedesc *fdp);
static int getutimes(const struct timeval *, enum uio_seg, struct timespec *);
static int setfown(struct thread *td, struct vnode *, uid_t, gid_t);
@@ -2334,6 +2344,11 @@ kern_statat(struct thread *td, int flag, int fd, char *path,
return (error);
vfslocked = NDHASGIANT(&nd);
error = vn_stat(nd.ni_vp, &sb, td->td_ucred, NOCRED, td);
+ if (!error) {
+ SDT_PROBE(vfs, , stat, mode, path, sb.st_mode, 0, 0, 0);
+ if (S_ISREG(sb.st_mode))
+ SDT_PROBE(vfs, , stat, reg, path, pathseg, 0, 0, 0);
+ }
NDFREE(&nd, NDF_ONLY_PNBUF);
vput(nd.ni_vp);
VFS_UNLOCK_GIANT(vfslocked);
OpenPOWER on IntegriCloud