summaryrefslogtreecommitdiffstats
path: root/sys/kern
diff options
context:
space:
mode:
authorrpaulo <rpaulo@FreeBSD.org>2014-08-08 22:08:51 +0000
committerrpaulo <rpaulo@FreeBSD.org>2014-08-08 22:08:51 +0000
commit7c72adbd8fabd08add7b179e20d327a02617c3e2 (patch)
tree3c84d8c29394082226d516758b03990e648d2bb9 /sys/kern
parent380f15bde7517b2fda94d745393b53f13e9dfef9 (diff)
downloadFreeBSD-src-7c72adbd8fabd08add7b179e20d327a02617c3e2.zip
FreeBSD-src-7c72adbd8fabd08add7b179e20d327a02617c3e2.tar.gz
MFC r269408, r269409:
shm_open()/shm_unlink() ktrace support.
Diffstat (limited to 'sys/kern')
-rw-r--r--sys/kern/uipc_shm.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/sys/kern/uipc_shm.c b/sys/kern/uipc_shm.c
index 024640b..16434b7 100644
--- a/sys/kern/uipc_shm.c
+++ b/sys/kern/uipc_shm.c
@@ -45,6 +45,7 @@
__FBSDID("$FreeBSD$");
#include "opt_capsicum.h"
+#include "opt_ktrace.h"
#include <sys/param.h>
#include <sys/capability.h>
@@ -53,6 +54,9 @@ __FBSDID("$FreeBSD$");
#include <sys/filedesc.h>
#include <sys/fnv_hash.h>
#include <sys/kernel.h>
+#include <sys/uio.h>
+#include <sys/signal.h>
+#include <sys/ktrace.h>
#include <sys/lock.h>
#include <sys/malloc.h>
#include <sys/mman.h>
@@ -727,7 +731,10 @@ sys_shm_open(struct thread *td, struct shm_open_args *uap)
} else {
path = malloc(MAXPATHLEN, M_SHMFD, M_WAITOK);
error = copyinstr(uap->path, path, MAXPATHLEN, NULL);
-
+#ifdef KTRACE
+ if (error == 0 && KTRPOINT(curthread, KTR_NAMEI))
+ ktrnamei(path);
+#endif
/* Require paths to start with a '/' character. */
if (error == 0 && path[0] != '/')
error = EINVAL;
@@ -825,7 +832,10 @@ sys_shm_unlink(struct thread *td, struct shm_unlink_args *uap)
free(path, M_TEMP);
return (error);
}
-
+#ifdef KTRACE
+ if (KTRPOINT(curthread, KTR_NAMEI))
+ ktrnamei(path);
+#endif
fnv = fnv_32_str(path, FNV1_32_INIT);
sx_xlock(&shm_dict_lock);
error = shm_remove(path, fnv, td->td_ucred);
OpenPOWER on IntegriCloud